上一个帖子:http://topic.csdn.net/u/20100119/15/56420a53-db63-4d22-ac49-b97bf4aecac5.html。
无边框拉伸问题已经解决,该程序的主窗口为一个dialog,风格是nonborder,默认是没有系统菜单的(systemmenu),加上ModifyStyle(0,WS_SYSMENU)即可添加系统菜单,可导致的结果是拉伸功能不可实现!!!如何让这两个功能同时并存?求教各位大侠,再放100分。

解决方案 »

  1.   

    你这样做就可以了:
    在Styles里面,Border仍然是Dialog Frame,Style:PopUp,去掉TitleBar这个选项就可以了!这样既可以修改按钮风格,也可以相应WM_NCHITTEST这个消息响应函数!经测试没问题!
      

  2.   

    回ls,我试了,可行,但还是会有边框出来,而我整个窗体是贴图的,周边有多余的边框很不美观,还有其他办法不呢 ?前提是:nonborder+system menu+可拉伸。
      

  3.   

    窗口使用resizing边框,响应WM_NCCALCSIZE消息,函数中执行GetWindowRect(&lpncsp->rgrc[0]),不要调用基类的响应函数,另外响应WM_NCHITTEST消息,判断边框范围返回相应的值。
      

  4.   

    用自己的菜单?如果自定义自己的menu的话,如何设计呢?我想在caption栏目中和任务栏中TrackPopupMenu 自己的菜单,
      

  5.   

    又被无视了,难道是我在论坛的等级或者回答的正确率太低,还是我提供的方案过于复杂?再重复一下我提的做法:
    1、对话框设置为有系统菜单、resizing边框;
    2、响应WM_NCCALCSIZE消息,函数中不调用基类的响应函数,只执行GetWindowRect(&lpncsp->rgrc[0])一行代码;
    3、响应WM_NCHITTEST消息,判断边框范围返回相应的值,实现可拖动改变大小。(这点LZ目前已经实现了)
    4、响应WM_NCACTIVATE消息,直接return FALSE。(前面忽略了边框的重绘,加上这点就没问题了)一共只需要自己写两行代码,不算复杂吧?
      

  6.   

    上面的办法已经试验了,但是 又出现了一些新的问题:
    1、出现了close 按钮。
    2、调出其他的dialog时,这些dialog上面的按钮点击不起作用。
    3、有时候拉伸不起作用。
      

  7.   


    1、对话框设置为有系统菜单、resizing边框 如果是这样的话,鼠标移动到边框是可以
    但是整个DIALOG会有边框出现