CWnd类是有这个虚函数的,我孤陋寡闻,很少遇到过,看一个老外的分隔条类例子看到了以下是作者 的部分代码:
And here is the code for resizing controls on the dialog when the user moves the splitter control. Collapse | Copy Code
//// LRESULT CSPDemoDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) {
if (message == WM_NOTIFY)
{
if (wParam == IDC_SPLITTER1)
{
SPC_NMHDR* pHdr = (SPC_NMHDR*) lParam;
DoResize1(pHdr->delta);
}
}
return CDialog::DefWindowProc(message, wParam, lParam);
}
//
这个函数的作用,作者已经说了,当用户去移动分隔条的时候,就会对话框上的其他控件大小 尺寸发生变化,1:WM_NOTIFY 这个消息真奇怪, 移动分隔条 ,为什么会发出这个消息? 它是通知对话框的作用2. 如果不重写这个虚函数, 我需要在哪一个函数中 实现 这个功能:当用户去移动分隔条的时候,就会对话框上的其他控件大小 尺寸发生变化
3. 什么时候需要 我们去重写这个虚函数? 我很少遇到
And here is the code for resizing controls on the dialog when the user moves the splitter control. Collapse | Copy Code
//// LRESULT CSPDemoDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) {
if (message == WM_NOTIFY)
{
if (wParam == IDC_SPLITTER1)
{
SPC_NMHDR* pHdr = (SPC_NMHDR*) lParam;
DoResize1(pHdr->delta);
}
}
return CDialog::DefWindowProc(message, wParam, lParam);
}
//
这个函数的作用,作者已经说了,当用户去移动分隔条的时候,就会对话框上的其他控件大小 尺寸发生变化,1:WM_NOTIFY 这个消息真奇怪, 移动分隔条 ,为什么会发出这个消息? 它是通知对话框的作用2. 如果不重写这个虚函数, 我需要在哪一个函数中 实现 这个功能:当用户去移动分隔条的时候,就会对话框上的其他控件大小 尺寸发生变化
3. 什么时候需要 我们去重写这个虚函数? 我很少遇到
Calls the default window procedure, which provides default processing for any window message that an application does not process. This member function ensures that every message is processed. It should be called with the same parameters as those received by the window procedure.
LRESULT CCoolDialogDemoDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
//画非客户区// return CDialogEx::DefWindowProc(message, wParam, lParam);
LRESULT lrst=CDialogEx::DefWindowProc(message, wParam, lParam); if (::IsWindow(m_hWnd))
{
if (message==WM_MOVE||message==WM_PAINT||message==WM_NCPAINT||message==WM_NCACTIVATE ||message == WM_NOTIFY)
{
CDC* pWinDC = GetWindowDC();
if (pWinDC)
{
//绘制标题栏
DrawTitleBar(pWinDC);
}
ReleaseDC(pWinDC);
}
} return lrst;
}