在VC的win32 Application 工程中,在改变对话框大小时,控件始终保持充满整个客户区的问题

 以前在做Mapx二次程序开发的时候,不知道怎么使控件在改变父对话框的情况总是保持充满客户区的状态,今天终于在win32 API中自己从底层给实现了,呵呵。

用户改变对话框大小时,都会激发WM_SIZE消息,操作系统将此消息传递给应用程序的消息循环,我们要做的就是定义WM_SIZE消息响应函数,在响应函数中将控件的大小设置成客户区大小就可以了。操作系统将当前改变后父对话框的客户区的长宽存储在WM_SIZE消息的参数中,我们可以在MSDN中查到获取这两个参数值的方法。实现代码如下:

  case WM_SIZE:
   {
    int nWidth=0;
    int nHeight=0;
    nWidth = LOWORD(lParam);
    nHeight =HIWORD(lParam);
    HWND hMsg = GetDlgItem(hWnd,IDC_EDIT_MSG);
    SetWindowPos(hMsg,HWND_TOP,0,0,nWidth,nHeight,SWP_NOACTIVATE); 
    break;
   }

不过,这之前,在编辑对话框属性时要将对话框的border属性编辑为Resizeing,还有设置WM_THICKFRAME属性。

阅读更多
个人分类: VC/MFC/C++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

在VC的win32 Application 工程中,在改变对话框大小时,控件始终保持充满整个客户区的问题

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭