本帖最后由 Alex_rcpilot 于 2011-08-05 01:02:41 编辑

解决方案 »

  1.   

    第一个应该是TreeCtrl,。
    第二个应该是ListCtrl,单击排列明显是ListCtrl的风格,在Report View下。
    如果主区域是图片的话,你可以直接用MFC应用程序向导的SDI/MDI程序里View的滚动条。把内容绘制到Document上,View来查看它。不过需要自己处理双缓冲的问题。
    如果想放其它空间,可以设置SDI/MDI的View是CFormView。
      

  2.   

    可以写这样的控件,但是很麻烦。可以用现成的界面库,比如BCG。它帮你实现了许多关于界面的编程。例如停靠风格的控件,等等。可以去网上搜搜看。
      

  3.   

    使用VS 2010吧,里面自带了BCG库,你的这些要求都很容易实现。
      

  4.   

    你看看这个
    http://www.codeproject.com/KB/dialog/slidabledialogbar.aspx
      

  5.   

    有没有你想要的界面,这些都是VS2008 SP1的自带示例
      

  6.   

    vs2010 创建一个默认的单文档,使用VS风格,基本就是你想要的
      

  7.   

    请问akof1314:
    自带例子到哪里可以看?我想看看还有什么新内容是我没注意过的回楼主:
    第一组问题:用vs 2008 SP1或vs 2010,有个类叫CDockablePane用来管理停靠窗口的,你所谓的可折叠面板叫grid控件,有个类叫CMFCPropertyGridCtrl,可以用来实现你所说的折叠、显示、输入数据、下来组合框,至于tick box复选框,我没用过,估计也是可以的。关于这两个类,可查csdn详细了解,如果想看示例,用vs 2008 SP1或vs 2010新建一个MFC Application工程,到新建工程向导的Advanced features那一页的时候,记住让Properties docking pane(属性停靠窗口)是打钩的,然后你就能看到你要的效果了。第二组问题,listCtrl列表控件。我只用过Report Style的。如果你是在对话框资源上放一个列表控件的话,可以在属性里更改style值,直接Create动态创建的话也可以指定风格。注意SetExtendedStyle这个函数可以把复选框弄到控件里,这个函数详查msdn。滚动条自己有的,不用操心。(对话框资源里的列表控件属性默认是有滚动条的)排序功能有BOOL CListCtrl::SortItems( PFNLVCOMPARE pfnCompare, DWORD dwData);这个函数,但是里面的参数用到回调函数,比较复杂,详细的实现可以百度一下。
      

  8.   

    多谢大家回复,我的开发环境就是VS2010 Ultimate x64。其实原来已经生成VS风格界面运行过,不过那时候太关注界面布局,没看细节。今天看到crybird提醒又回去看才发现属性那个面板里确实有调色板、单选框和下拉菜单之类的东西。我现在捋捋,画个图片,把要搞的东西做个直观的预览给大家看看。
      

  9.   

    OK,回来了。画了个大概。有两个面板,都不是文档界面。第一个面板是编辑区,第二个面板是工具箱。用户可以从工具箱拖拽对象到编辑区。第一个面板如下:
    可以看到表格有抬头的tag,但我不需要sorting。
    表格左侧的文字用static text即可。
    表格内部的行是不等高的。一个高行与一个矮行结为一组,如此重复向下延伸。
    表格的边框不止有一种线型,而是三种:实线/虚线/不画线
    表格底纹可以自由设置颜色。
    从行E,列04位置的单元格可以看到点击出现的下拉菜单。菜单里的内容是若干字符串,点选之后显示在单元格内的仅仅是首字母。至少我是希望做成这个效果,如果太麻烦我也可以把下拉菜单内做成单个字母,然后在鼠标悬浮的时候显示的浮动帮助里解释其含义。右侧的工具箱如下图:里面也用到了简单的表格,拖拽工具箱里的图标时,图标浮动并跟随鼠标的光标移动,我是希望给图标加上alpha通道,带些半透明的风格。不知道这个好不好做。
    所有需要显示图片的地方我目前只知道两种实现方法,一个是Picture Control控件,另一个是GDI+。我前不久刚做完一个用GDI+结合双缓冲绘制动态图像的软件。界面很复杂,刷新率16Hz。这个界面几乎是静态的,所以我感觉用GDI+应该无鸭梨。2楼推荐的BCG我正在找资料看。回帖的哥们儿都很热心,短短几楼知识量不小,我得消化好一阵子。
      

  10.   

    呃,11L是LZ我自己。现在是思维比较乱,知道的资源不少,不知道的也不少,闹不明白该肿么运用了。GDI我是不打算大量使用在GUI上的,效率很成问题。所以能用标准控件搭配解决的尽量用标准控件。
      

  11.   

    每个控件要分配一个DC
    非常之不和谐既然都是GDI
    何不集中到一个窗口GDI
    多好一个窗口的坐标计算比窗口传递快多了
      

  12.   


    那我孤陋寡人了,真是不知道哇。只不过那些滚动条、下拉菜单之类自己拿GDI+写起来确实比较累。我权衡了一下感觉还是现成的和DIY的混起来用要合适点。
      

  13.   

    4L的链接也挺有意思,套着用CDialog。这样可以把预先排列好的控件画在内层对话框上,然后把它嵌套在尺寸较小的外层对话框里面进行移动。也是个办法,我需要消化消化。
      

  14.   


    所有的截图可以在这里看到http://blog.csdn.net/akof1314/article/details/5615240
      

  15.   


    请问自绘的时候以下几样东西是否也一起办了?各种滚动条、各种按钮、在程序设置为不同主题时自绘部分的色调切换、鼠标光标在自绘区域中时出现的单/双击、滚轮输入事件。思路大致都能想出来,包括水平/垂直卷动的时候边缘裁切的问题也都能解决,只是总体架构的模块化结构还不是很清晰,是自己给封装成一堆独立的控件还是直接就在Dlg类里面写写画画?另外还有点搞不清楚的是dockable pane风格的界面上要用GDI+,是每个pane用一组DC还是整个程序用同一个DC,拿着VS生成的框架不知道在哪里插入我的GDI+代码?我感觉应该是整体用一个DC,同一套坐标,否则跨窗口拖拽图标的时候没法画了,而且边框本身也都是GDI画的。不清楚的是如何得到所绘制pane本身的rectangle。还有个问题是对于浮动起来的面板,如果把丫拖到主窗体以外的区域,在这个面板上绘制东西,X、Y坐标是不是在Client Rectangle之外了?这个不会造成一些预料不到的问题吧?这些问题如果LS有兴趣的话请点拨一下,我自己也会上Google逐个搜索解决。非常感谢您的回复。
      

  16.   

    你说对了
    自绘就是不仅仅包括好看
    还包括了,各种滚动,各种按钮等等一切其实你不自绘就是他绘,反正都要绘他绘,你只能看结果,只能动允许你动的部分.
    自绘,就是全裸给你看,细化那里都可以动动比方说滚动条:四个对象
    向前按钮,向后按钮,主体框,滑块
    每个对象无非就是是起点,长度,宽度,背景和编号剩下的就是鼠标消息时候取point.x和point.y做游戏
    绑一个窗口指针给他
    游戏结果是啥就发个啥消息给帮定的窗口指针
    下面就是我自己做的简略的CListCtrl,和CListTabhttp://hi.csdn.net/attachment/201108/2/3069272_13122520887aPr.jpg
      

  17.   

    至于浮动的窗口,其实是自绘框架
    停靠和浮动变换的时候从新计算一下位置就可以了
    有现成的虚函数RecalcLayout,重载处理就可以了
    红色说明部分就可以作为停靠
      

  18.   


    多谢帮忙。任何一门技术都是细水长流的活,我急也没用,一步一步作着看吧。亲眼看到美国一个做了十多年软件设计的哥们用C#写的软件从第1版到第8版的演化过程。从他每版的界面布局上可以看出他的设计构思变化过程。他这样经验丰富的人都用了半年时间去完善,我就更急不得了。我是把软件拆分成两部分:designing和coding。前一部分基本上包含版面规划、风格设计、功能安排、美工、用户体验设计、文档格式制订、通讯协议制订;后一部分就是代码的实现、运行测试、debug。Coding阶段可以自己先挑毛病,修正design阶段没设计好的细节,反复修改到自己满意后给用户体验,alpha,feedback,beta,feedback,release,patch……现在我的问题就是design阶段的任务已经具有一定规模了,思路还算清晰,界面布局、功能设置、通讯协议、可扩展的整体架构规划都有比较清晰的轮廓了。只是我一直算不上一个好的coder,尤其是VC++、C#之类高级语言平台上的coder。以前的代码基本都是C,平台都是芯片,规模不大,资源不多,最复杂的C应用充其量就是些函数指针。像C++里面指针、句柄满天飞的混乱场面接触不久,还有点晕。不过也在慢慢上手了。我那硬件是USB的。从芯片选型到PCB设计、焊接、固件设计、调试全是自己搞的。这方面经验已经有8年了。