一个基于对话框的应用程序,在对话框主窗口创建完成并最终显示在屏幕的中心后,希望紧接着进行某些用户自定义的操作----如获得对话框主窗口的坐标,那么应该重载哪个函数,在其中添加用户操作呢?
原先是重载对话框主窗口的OnInitDialog函数,但是发现此时获得的对话框的左上点坐标竟然是,而不是创建完成后显示在屏幕中央的位置,应用程序框架在调用完OnInitDialog后应该又将窗口移动到了屏幕中央,然后才显示出来,请问这部分操作在什么函数中实现的?
处理对话框的WM_MOVE消息,在其中可以取得左上角坐标
处理WM_SIZE消息,可以取得对话框的宽度和高度
BOOL CDlg2Dlg::OnInitDialog()
{
CWnd *pWnd = GetDesktopWindow();
CRect screenR;
pWnd->GetClientRect(&screenR);
CRect dlgR;
GetClientRect(&dlgR);
int nWidth = screenR.Width() - dlgR.Width();
int nHeight = screenR.Height() - dlgR.Height();
screenR.left += nWidth/2;
screenR.right -= nWidth/2;
screenR.top += nHeight/2;
screenR.bottom -= nHeight / 2;
MoveWindow(screenR);
...
}
无模式对话框,可以自己给对话框创建一个函数,在居中后调用,
你的自定义操作和窗口的屏幕位置有关系码?
你的操作应该是对客户区的操作吧?用GetClientRect()