解决方案 »

  1.   

    最简单的方式是使用webbrowser,然后加载适当的网页
      

  2.   

    这个界面用mfc做很难,得重写很多东西,楼主三思
      

  3.   

    我简单的想法是自定义一个Dialog类(命名CItemDlg),作为一个数据(就是一个22),然后把CItemDlg实例作为一个个Item插入到ListCtrl控件。这样可行吗?
      

  4.   

    自绘listctrl和button和tabctrl完全可以实现。
      

  5.   

    这个用 vc + xml实现不难
      

  6.   

    图片上的这个就是一个HTML页面吧
    一般用WebBrowser来加载一个做好的网页来做界面。
    直接用MFC自绘的话也可以,但比较麻烦,需要大量的代码,做出来效果还比较生硬
      

  7.   

    自绘ListCtrl,不过说实话,网页的实现容易多了。代码少写许多
      

  8.   

    今天研究了一下,VS2012里有个CDhtmlDialog,用起来方便、效果好。
    唯一问题是我们团队缺前端,但自己写html比MFC实现还是省力很多,后期修改也方便。教程里说,直接在HTML编辑器里拉个按钮,双击就能生成JS的on_click事件,进入编辑页面,可我鼠标点爆也没用。求解
      

  9.   

    方案一:嵌套浏览器加载页面
    该方案最省事,前提是要有服务端页面。
    使用MFC对话框,WebBrowser控件直接从网络加载,将页面加载到控件中,客户端仅负责加载页面,所有的操作响应均由页面完成。
    方案二:使用HTML布局界面
    该方案是常规方案,一般都是这样做的。
    需要前端UI团队完成HTML页面文件,以及JS控制脚本,CSS布局,然后由MFC的浏览器控件进行加载,再响应页面的调用接口,注意屏蔽鼠标右键,参照金山卫士源码,或者其他关于HTML界面布局的文章即可。方案三:重绘MFC控件(仅供调侃)
    该方案能够解释no zuo no dead,并且dead的很彻底。
    这是一个疯狂的方案,即使是你的老板容忍度极高,做出来以后你自己看着代码也会觉得被恶心到,而且部分功能根本无法实现,最后真的是做出一团翔无法扩展,到处是bug。
    首先,本着重绘一个死一个的心态来重绘控件。
    1.重绘左侧的TabCtrl。
    没错TabCtrl确实提供选项卡在上下左右的配置项,但是第一个选项卡会与界面边缘有一道缝隙,也就是说,如果TabCtrl与灰色Bar对齐的情况下,你的“外卖”选项卡和灰色Bar之间有一道肉眼绝对可见的缝隙,这个不是重绘能解决的,如果能忍那就算了,如果不能忍,那就需要绘一个补丁在上边,然后计算坐标控制每一个选项卡的真实区域,响应鼠标移入移出时的选项卡显示效果,这里还要处理鼠标移入响应,设置非激活状态下的行为。2.重绘ListCtrl
    我建议你先重绘ListCtrl,因为重绘之后你就会发现这个方案有多坑。
    确实ListCtrl能够重绘每一个Cell,22,21订单都可看做是单元格,但是MFC的ListCtrl天生要保证每一行单元格保持同样高度!内部实现方式决定,非重绘所能改变。很显然,每一个订单的长度都不一样。如果仅仅是表头的高度不一样那还好办,可以绘一个表头然后加一个无表头的ListCtrl。
    22号订单里面还包含两个ListCtrl,还有按钮响应,如果每一个订单在根据响应进行变形,那根本就做不出来。3.重绘CEdit
    灰色Bar上的CEdit,如果是做出图上的效果倒也可以,如果同意使用矩形的CEdit而不是非要圆角矩形的CEdit也是可以做出来的。要求再低点,字体大小和框的大小都是固定好的,那就更好了,因为CEdit无法设置字体垂直居中,如果能容忍也就算了,如果不能忍,你就要根据字体的高度调整CEdit的位置与大小。默认的提示内容是浅灰色的,你要控制响应,重绘。如果右边还有用来清除的X按钮,还有历史搜索的下拉列表 放弃吧 4.重绘CRadioButton
    单选按钮,字体同样不支持垂直居中。需要自己调整或者重绘。你提供的界面上的单选框是根据内容自适应大小和布局的,你还要计算因为加载了内容导致的控件大小变化然后移位。5.重绘CStatic
    不过不支持自适应这个倒算是最简单了,当然也别让测试人员发现DPI改变时界面变成翔了。那自己实现支持DPI改变的CStatic吧。6.重绘CButton
    默认的CBitmapButton不能加载PNG,不能拉伸,不能根据内容调整大小这又是一个坑7.自适应
    如果你的界面支持拉伸,那请把上述内容的工作量X2,因为你要计算各种字体,各种形态。8.滚动条
    滚动条我就不说了,我就不信上面那些问题出来了以后还有闲心重绘难度系数最高的滚动条控件。建议楼主先用重绘个ListCtrl试一试看看有多疼,然后考虑方案一,在考虑方案二。
      

  10.   


    完全不可以
    这是Android下的实现方式,将Activity(类似Dialog)插入ListView,每一个Activity使用自己的布局方式,自己有自己的消息响应通过Handle来处理。但是在VC的ListView里,每一个Item都是由一个结构体来表示的,可以独立绘制Item但是,Item没有独立消息循环。
    同时重绘的ListView需要保证每一个Item高度是一致的,你可以看GridCtrl等任何一个ListViewEx都不能自定义每一个Item的高度。ListView中的Item中确实能够实现消息响应,但这个消息响应是由ListView所在Dialog的消息泵中发出的,鼠标点击到ListView上时,自己判断点的是哪个Item(重载OnItemClieck),然后通过Rect来判断点中的是那个图形,然后再做响应。
      

  11.   

    13楼基本什么都说到了
    就差一种情况没有说到,那就是用自己的数据结构
    13楼所有的重绘都是在别人框架限制内的,
    唯一提了一个方案三比较靠谱,却用自己的失败标了个(仅供调侃)
    而且方案三提到的任何痛苦都是一个本质问题,就是没有自己的数据结构就说链表,每个结点都是动态增删的,没有这个数据结构支持,你能扩展就真的奇迹了再来说画,右边的条目大条目数量是变的,小条目就更复杂了
    那你想过没有,整个条目有多高,我就画多高
    所有条目我画内存DC上行不行?
    画完我根据滚动的位置把那部分BitBlt到窗口DC行不行?我在跟你说说按钮
    所有的按钮都是个普通文本行不行?
    一个链表把分散各处的CRect串起来行不行?
    鼠标响应就变更这个串的数据行不行?
    变更数据只是显示的时候看起来有动态效果
    我变更的同时发送消息行不行?我在跟你说说编辑框
    所有编辑框都是个普通文本行不行?
    一个链表把分散各处的CRect串起来行不行?
    鼠标响应就在对应的CRect位置显示一个编辑框行不行?最后的结果就是
    一个结构体形成的链表
    结构体包含矩形信息和文本信息,字体信息,背景和颜色信息就实现楼主要的效果
    要丰富多彩,加一个图片文件名称信息就完事
      

  12.   


    没一个靠谱的,唯一可行的是重绘STATIC+楼主说的子窗口嵌套
      

  13.   

    都是一群连MFC里最经典的视图都没用过的猪B们而已
      

  14.   

    用BCGCtrolBar 是一套非常好用的工具,在我的资源里可下载,不要分,是目前网上最新的版本V22.1,在vc6到VC2012下都可以使用,非常好用。下载地址:http://download.csdn.net/detail/wangxiangdong_sl/7239351
      

  15.   

    用html+js做到界面吧!
    另外!Qt应该也能实现,MFC很难!
      

  16.   


    看来是高手啊,你用最经典的视图试试,MFC不好做的!
      

  17.   


    看来是高手啊,你用最经典的视图试试,MFC不好做的!
    不会用视图,我肯定的说你操作CDC绘图的能力不是一般的差,就知道重绘哈控件,小打小闹,看到稍复杂的界面当然觉得难,
    难者不会,会者不难!
      

  18.   


    看来是高手啊,你用最经典的视图试试,MFC不好做的!
    不会用视图,我肯定的说你操作CDC绘图的能力不是一般的差,就知道重绘哈控件,小打小闹,看到稍复杂的界面当然觉得难,
    难者不会,会者不难!当你还在用视图来自绘的时候,你还差了一个档次
    所有的控件及视图都来自CWnd
    都自绘了,还要鸡巴视图
      

  19.   


    看来是高手啊,你用最经典的视图试试,MFC不好做的!
    不会用视图,我肯定的说你操作CDC绘图的能力不是一般的差,就知道重绘哈控件,小打小闹,看到稍复杂的界面当然觉得难,
    难者不会,会者不难!当你还在用视图来自绘的时候,你还差了一个档次
    所有的控件及视图都来自CWnd
    都自绘了,还要鸡巴视图
    你这就纯属于扯了,视类就给你一个CDC指针,想输出什么全靠自已来,了不起你借助一下滚动,其它跟你在CWnd下拿着指针搞完全一样,对于LISTCTRL,你要真愿意走重绘的路子,没人拦着你,但你在那扯什么JB链表啊,数据结构啊,我觉得你不光对绘图没自信,连熟练操作数据结构,帮你解决问题都没信心,,,你得吃药,还不能停,,
      

  20.   


    看来是高手啊,你用最经典的视图试试,MFC不好做的!
    不会用视图,我肯定的说你操作CDC绘图的能力不是一般的差,就知道重绘哈控件,小打小闹,看到稍复杂的界面当然觉得难,
    难者不会,会者不难!
    看来是高手啊,你用最经典的视图试试,MFC不好做的!
    不会用视图,我肯定的说你操作CDC绘图的能力不是一般的差,就知道重绘哈控件,小打小闹,看到稍复杂的界面当然觉得难,
    难者不会,会者不难!我确实不熟悉文档视图,几乎也不用,但这个如果在视图里画也不容易吧,难度和自绘差不多。用html实现要简单多了。
      

  21.   


    看来是高手啊,你用最经典的视图试试,MFC不好做的!
    不会用视图,我肯定的说你操作CDC绘图的能力不是一般的差,就知道重绘哈控件,小打小闹,看到稍复杂的界面当然觉得难,
    难者不会,会者不难!当你还在用视图来自绘的时候,你还差了一个档次
    所有的控件及视图都来自CWnd
    都自绘了,还要鸡巴视图
    顺便问一句,你看过MFC里的CARRAY的源代码没,自已有动手写过模板类没有,或者有发现CLIST模板有哪些缺点不,啊
      

  22.   


    看来是高手啊,你用最经典的视图试试,MFC不好做的!
    不会用视图,我肯定的说你操作CDC绘图的能力不是一般的差,就知道重绘哈控件,小打小闹,看到稍复杂的界面当然觉得难,
    难者不会,会者不难!
    看来是高手啊,你用最经典的视图试试,MFC不好做的!
    不会用视图,我肯定的说你操作CDC绘图的能力不是一般的差,就知道重绘哈控件,小打小闹,看到稍复杂的界面当然觉得难,
    难者不会,会者不难!我确实不熟悉文档视图,几乎也不用,但这个如果在视图里画也不容易吧,难度和自绘差不多。用html实现要简单多了。
    说了不难,你还在这喊难,,你问问你自已,你绘图的代码积累了多少,积累到了啥程度了
      

  23.   

    从来不用模板,从来不用CARRAY类,从来不用SQL
    哥用的CString类都是自己造的
    哥有一套完整的各种数据结构的库,自己完善了多年的代码
    还有针对各种数据结构的排序查找算法哥所有软件用到的数据库都是自己的格式
    加密和压缩都用自己一个字符一个字符输入代码封好的函数哥现在是没心思了,要不然连MFC都不想要
    当然,从CWnd开始,基本还算干净,垃圾不多
    从View开始,要与DOC挂钩,这就是个最恶心的垃圾
      

  24.   

    你说的这些我是有些感触的,原单位有一个大牛就是从来不用MFC除了消息和基本CWnd外的东西
    看过他写的代码,全是链表、指针操作和win api,做的界面一样受ZF部门喜欢
      

  25.   

    DOC和VIEW为什么不能分开?,,你自已看看你自已在这个贴子里的回答和这个贴子的问题,自已去理解!!!!猪
    http://bbs.csdn.net/topics/390765559
    MFC下你能写出DOC和VIEW分开的安全代码,换句话说你能在工作者线程中安全的直接操作UI,算你牛B!!!
      

  26.   

    你说的这些我是有些感触的,原单位有一个大牛就是从来不用MFC除了消息和基本CWnd外的东西
    看过他写的代码,全是链表、指针操作和win api,做的界面一样受ZF部门喜欢

    感触个屎,,此大牛可能非彼“大牛”,,,他曾妄言还要“自绘控件大放送呢”----不信你去看他的贴子,如今却在这叫难,,,相对那样的狂言,这个贴要求的界面算是简单的了,,,你也只是一边起哄的小喽喽而已,,,,
      

  27.   

    你说的这些我是有些感触的,原单位有一个大牛就是从来不用MFC除了消息和基本CWnd外的东西
    看过他写的代码,全是链表、指针操作和win api,做的界面一样受ZF部门喜欢

    感触个屎,,此大牛可能非彼“大牛”,,,他曾妄言还要“自绘控件大放送呢”----不信你去看他的贴子,如今却在这叫难,,,相对那样的狂言,这个贴要求的界面算是简单的了,,,你也只是一边起哄的小喽喽而已,,,,

    不管我是不是小喽喽,和你有什么关系?
      

  28.   

    你说的这些我是有些感触的,原单位有一个大牛就是从来不用MFC除了消息和基本CWnd外的东西
    看过他写的代码,全是链表、指针操作和win api,做的界面一样受ZF部门喜欢

    感触个屎,,此大牛可能非彼“大牛”,,,他曾妄言还要“自绘控件大放送呢”----不信你去看他的贴子,如今却在这叫难,,,相对那样的狂言,这个贴要求的界面算是简单的了,,,你也只是一边起哄的小喽喽而已,,,,

    不管我是不是小喽喽,和你有什么关系?兄弟,他说的是我不是你
      

  29.   

    这个界面 如果楼主有兴趣 可以看看乌克兰人写的一个html库 叫做sciter的东西 它是基于html5 和css3 还有TISCRIPT的一个东西 可以说是自己写的一个html显示引擎 专门为了做界面的应用 像jqueery能实现的 它都能实现 有过之而无不及 诺顿 avast 还有我们公司的UI都是用这个搞的 如果你们公司 对侵权等 不是很苛刻 可以直接拿来用 实现这样一个界面 还是很容易的 包括自绘起来比较难受的 resize scroll dpi适应 它都考虑的很好了 当然了 它自己的引擎 是不受ie影响的
      

  30.   

    应该可以做出来,一个tab控件,嵌入N个窗口