解决方案 »
- CFlie打开文件的一点问题
- 为什么我把一个VC6的工程转换为VS2008的工程后,编译总是出现找不到而且不能升级vc90.pdb文件的问题。重新编译了也不行。
- 买QQ秀的下场
- 问一下怎么建立一个多人连接的服务器 主要就是怎么分线程
- 一段有3个错误的代码,帮忙找找,我真的找不出,郁闷,只能等了....
- 客户端同时连接上万个服务器
- 怎么做比例尺?测量显示出来的图像的大小。
- 急救,大家快过来
- 已得到一个IE进程,如何得到其各个tabwindowclass下浏览器关闭和开启的event?
- 请熟悉windows服务开发的进来,错误1053 服务无法及时响应,是什么原因?100分求助!
- 我现在双击对话框,原来是出现对话框编辑器,现在出现mfcclasswizard,怎么改回去?
- 【求助】关于2个串口读取的问题,谢谢大家
不过我实在是看着很迷糊,LZ再来补充些内容,做具体点描述,再配合点总结性的介绍?
另外关于语法细节,switch的case最大数字可能会影响所占用的内存(看具体的编译器优化),case的个数无所谓,不影响性能.
某个基类的虚函数表太大,对性能影响应该也可以接受,因为子类都是引用这个表,而不是复制这个表.除非你的子类对基类的虚函数表修改太多了.因为这方面知识毫无应用意义,我很容易因遗忘而胡扯,仅供参考. 你可以考虑MFC式的宏来替代 数量大的以及子类对其修改多的虚函数体系.总之:
1.若追求快速弄出个勉强的界面,(能有图片,能有基本的控件) ->HTML
2.若即绚丽又特别灵活
方案1: ---> MFC自绘, 或者皮肤库.
方案2: ---> Qt编程加载皮肤(其它的库 界面美化或加载皮肤 还不如MFC).
方案3: --->使用3D图形库完成(OPENGL,D3D),但3D图形库,缺乏成熟的控件库,可以考虑CEGUI(也不那么成熟).这种方式好处在于未来可以加入很多劲爆的效果(爆炸? 荧光?各种透明?毛蓉蓉效果?),另外因为没有窗口句柄,可以达到directUI那样的安全效果,防止别人屏蔽你广告,子类化你的窗口处理函数,替代你的程序逻辑(一堆可怕的事情).
使用3D图形库最好直接用引擎,节省开发时间. 如OGRE. 3.若绚丽但不那么灵活: 可以考虑下内嵌flash,silverlight, 但要花点时间学习.再总之:
反正很折腾,搞程序就一个悲剧, 折腾半死, 一分钱没有!!!!!
工作框架再稍作说明。
框架很简单:
1、先写一个基类,基类中写上所有与“子类的实现方法”同名的虚方法,只是这个虚方法可能有点多。2、APP有一个公共的IDispatch派生类,用来接收HTML的exernal。3、然后在每个子类中写需要实现的方法代码。4、每一个子类对对话框中都有一个Webbrowser,通过HTML发出external来调用子类对话框的方法来完成相应的任务。5、基类中还有一些公共的方法,子类中不需要重写,每一个子类都可以调用,也就没有用虚方法。这些方法会操作web页的内容,所以将Webbrowser对应的IDC存储在对话框成员里,调用Webbrowser就用GetDlgItem。6、自绘的模拟菜单也是采用类似的方法,只是不用通过IDispatch接口。每一个子类对话框都公共成员接收模拟菜单反馈的消息。比如,在子类中写一个方法ShutMenu。点击模拟菜单并没真正关闭,只是SW_HIDE,然后将菜单的点击位置传给子类对话框并调用子类的对话框ShutMenu方法,子类对话框的ShutMenu做两件事:A、真正关闭模拟菜单;B、根据反馈回来的消息执行任务。非常感谢moon解惑。
作品只要不太难看就行,VC++才自学8个月,弄不了那些太高深的东西。如果不用顾虑虚方法对程序性能的影响,那么我的这个框架应该没什么问题。至于HTML加密,只要加密到不是阿猫阿狗都能破的地步就可了,自信还能做到,况且就算解出来,关键的处理逻辑封在MFC里面呢,html页只负责external调用。就是将原来自已写的JS函数全部改装成MFC的。这个框架完善之后,只需要向基类中添加虚方法、子类中写实现方法、向IDIspatch的派生类的GetIDsOfNames和Invoke添加相应的分支就可以了。方法实现么,我就两件事,操作HTML,操作XML。图像全静态,也不关MFC太多事,贴贴就可以。就是还有两个问题不太明白:
1、GetIDsOfNames的参数cNames倒底是啥玩意儿的,
2、还有就是“如果点击模拟菜单后new了一个新的对话框,模拟菜单ShowWindow(SW_HIDE)后,会在webbrowser上留一点残影,然后才弹出新的对话框,实在不知WHY。我的菜单是这么 工作的:点击菜单(非模态对话框模拟的)->隐藏菜单->调用主对话框的方法->在主对话框的方法中关闭菜单->主对话框打开一个新模态对话框。实在不明白为什么会有残影,如果菜单关闭后不是执行打开新窗口这种操作,就不会有残影。”
这个框架很好用,UI和功能之间的接口只有exernal表,这样分隔开功能可以很方便用给另一种UI用。只是这儿有点奇怪:
被继承的对话框里不用有所有的虚函数,只是哪个下层对话框要用这个方法时,再在它里面单独声明出来不就好?
至于exernal里下层对话框特有的exeral类型,在被继承的对话框里直接有一个 default的exernal用来抛弃它们不就好了 /:^},不用被抛弃的exernal,再在下层对话框它自己virtual出来的特殊dispatch里做处理,这样下层对话框的就像MFC里的对话框例程一样,先自己处理需要管理的exernal,返回时候再调用继承过来的上层dispatch。我是小菜鸟,回帖主要是为了学习,说的有不妥当就权当见笑了
可视化模式:所见即所得,输入窗口直接以报表为模板,使业务能力比较低的人易于理解;
快速模式:因为报表的模式是固定的,但这种固定模式(报表模式不容更改),并没有适当的分类,不利于数据快速录入,所以将同一类型的数据放在一起,专门针对那业务相当精孰的客户;
分类模式:因为该报表中的信息可能由不同环节的来填充,希望能给他们一个密切合作的可能,每一个环节的流转,他们填入各自相关的内容之后,再流转到下一个环节;
学习模式:尽可能多的提示和帮助。
这个用html页比较舒服,用CSS调整控件的位置很好弄,麻烦点的就是如何维护tab顺序,不同的模式输入顺序相差太多。
其实这也是我想用用Webbrowser的主要原因。
不过用这种模式的成本确实很低。
1. 标题栏的重绘就很难实现了。
2. 有些控件无法用WebBrowser来实现。像聊天窗口等等。
3. 有时用HTML实现的效果,还是不如重绘效果好。效率也不如重绘。