在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属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值