网上下的代码, 真没看懂,无奈之举,发帖求问 LRESULT CMyDialogDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
if (message == WM_NCHITTEST) //这句华什么意思
{
LRESULT lRet = CDialog::WindowProc(message, wParam, lParam); //为什么调用winproc //这一句也是如此??
if(lRet==HTZOOM || lRet == HTMINBUTTON || lRet == HTCLOSE || lRet==HTSYSMENU)
return HTCAPTION;//视为标题栏动作。
else
return lRet;
}
if(message==0x00AE ||message==0x00AF)
{
// AfxMessageBox(_T("aaaa"));
return TRUE;
} return CDialog::WindowProc(message, wParam, lParam);
}//问什么要override这个函数
BOOL CMyDialogDlg::OnNcActivate(BOOL bActive)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
OnNcPaint();
return TRUE; //return CDialog::OnNcActivate(bActive);
}
//这个也是
BOOL CMyDialogDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
//什么意思????
if(wParam == SC_SIZE || wParam == SC_MOVE || wParam == SC_MINIMIZE || wParam == SC_MAXIMIZE || wParam == SC_CLOSE || wParam == SC_RESTORE)
SendMessage(WM_SYSCOMMAND,wParam,lParam); return CDialog::OnCommand(wParam, lParam);
}
{
// TODO: 在此添加专用代码和/或调用基类
if (message == WM_NCHITTEST) //这句华什么意思
{
LRESULT lRet = CDialog::WindowProc(message, wParam, lParam); //为什么调用winproc //这一句也是如此??
if(lRet==HTZOOM || lRet == HTMINBUTTON || lRet == HTCLOSE || lRet==HTSYSMENU)
return HTCAPTION;//视为标题栏动作。
else
return lRet;
}
if(message==0x00AE ||message==0x00AF)
{
// AfxMessageBox(_T("aaaa"));
return TRUE;
} return CDialog::WindowProc(message, wParam, lParam);
}//问什么要override这个函数
BOOL CMyDialogDlg::OnNcActivate(BOOL bActive)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
OnNcPaint();
return TRUE; //return CDialog::OnNcActivate(bActive);
}
//这个也是
BOOL CMyDialogDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
//什么意思????
if(wParam == SC_SIZE || wParam == SC_MOVE || wParam == SC_MINIMIZE || wParam == SC_MAXIMIZE || wParam == SC_CLOSE || wParam == SC_RESTORE)
SendMessage(WM_SYSCOMMAND,wParam,lParam); return CDialog::OnCommand(wParam, lParam);
}
解决方案 »
- 关于VC 应用MYSQL C API 的问题。
- 路过大虾,求助.帮我看看这个问题吧,让我很困惑,谢谢了!!
- 如何把text里输入的字符串(点的坐标值)转换为int型的数据?
- 通过代码控制CListCtrl选中某一项
- 为什么无法定义全局变量?
- 怎样通过编程在IE浏览器上添加代理服务器(以及一系列操作)?
- 一个关于VC的问题?根据回答质量给分。当晚结贴!!!
- 5555~~~5555~,我该怎么办呀???
- 如何通过子对话框的添加按钮向付对话框的listbox添加数据,请高手指教!!
- WIN32ASM中如何复制一个包含子目录及文件的目录??
- 这两种情况下建的Dll有什么不一样?
- vs2010创建win32dll工程
{
// TODO: 在此添加专用代码和/或调用基类
if (message == WM_NCHITTEST) //如果是鼠标点击非客户区消息
{
LRESULT lRet = CDialog::WindowProc(message, wParam, lParam); //为什么调用winproc
先使用默认处理,完成默认操作,如最大化之类.
if(lRet==HTZOOM || lRet == HTMINBUTTON || lRet == HTCLOSE || lRet==HTSYSMENU)
如果是点击最大化,最小化,关闭,系统菜单,将处理结果标记为占击标题栏空白处;否则返回默认操作的处理结果.---有可能有后继函数利用此返回值处理界面问题
return HTCAPTION;//视为标题栏动作。
else
return lRet;
}
if(message==0x00AE ||message==0x00AF)
{
// AfxMessageBox(_T("aaaa"));
return TRUE;
}return CDialog::WindowProc(message, wParam, lParam);
}//非客户区(标题栏,边框...)激活消息. 处理过程显示:激活时需要重绘非客户区界面--看起来这个是皮肤?
BOOL CMyDialogDlg::OnNcActivate(BOOL bActive)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
OnNcPaint();
return TRUE;//return CDialog::OnNcActivate(bActive);
}
//这个也是 系统命令处理 WM_COMMAND消息
BOOL CMyDialogDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
//什么意思????
如果指定的有关客户区变化的消息,那么,非客户区也需要更新.
if(wParam == SC_SIZE || wParam == SC_MOVE || wParam == SC_MINIMIZE || wParam == SC_MAXIMIZE || wParam == SC_CLOSE || wParam == SC_RESTORE)
SendMessage(WM_SYSCOMMAND,wParam,lParam);return CDialog::OnCommand(wParam, lParam);
}
指的是窗体非客户区(即边框)发生点击的时候发生的消息.
下面的几个函数override也使类似的原理,无外乎是作者想想实现自定义的功能。
重写 + 判断条件 + 自定义功能