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