1. 在任务栏隐藏对话框
2. 使对话框为顶层窗口
3. 在运行时添加最大化,最小化按钮
4. 使能对话框右上角关闭按钮
在OnInitDialog中
方法一:
CMenu* menu = GetSystemMenu(FALSE);
menu->ModifyMenu(SC_CLOSE, MF_BYCOMMAND | MF_GRAYED );
方法二:
CMenu* menu = GetSystemMenu(FALSE);
menu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);
5. 当对话框一部分在屏幕外时,显示全部对话框
6. 改变鼠标外形
添加 WM_SETCURSOR 消息映射函数
BOOL CTest6Dlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_HELP));
return 0;
}
7. 改变对话框背景色和文本颜色
在CTest6App的InitInstance中添加
SetDialogBkColor(RGB(255,0,0), RGB(0,255,0));
8. 改变对话框caption上的图标
导入自己的图标资源到工程中,把原来ID为 IDR_MAINFRAME 的资源删除,把新的图标的ID命名为IDR_MAINFRAME
9. 在主对话框显示前,显示一个login对话框
BOOL CTest6App::InitInstance()
{
//...
int nResponse;
CLoginDlg loginDlg;
nResponse = loginDlg.DoModal();
if (nResponse == IDOK)
{
}
if (nResponse == IDCANCEL)
{
return FALSE;
}
CTest6Dlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK )
{
}
else if (nResponse == IDCANCEL)
{
}
return FALSE;
}
然后重载CLoginDlg对话框的哦OnOK(),在其中判断条件
void CLoginDlg::OnOK()
{
if (条件满足)
CDialog::OnOK();
else
AfxMessageBox(_T("invalid password!"));
}
10. 在对话框中添加工具栏
11.响应对话框的最大化、最小化、关闭、恢复事件
12.代码实现窗口最小化,最大化,关闭
PostMessage(WM_SYSCOMMAND, SC_MINIMIZE);
PostMessage(WM_SYSCOMMAND, SC_MAXIMIZE);
PostMessage(WM_SYSCOMMAND, SC_CLOSE);
13.按下ESC和ENTER键时禁止关闭对话框
14.在对话框中处理键盘鼠标消息
处理PreTranslateMessage消息
以下代码示例只演示了键盘WM_KEYDOWN消息,你也可以处理鼠标消息,比如WM_LBUTTONDOWN,WM_LBUTTONUP,WM_RBUTTONDOWN等。
BOOL CTest6Dlg::PreTranslateMessage(MSG* pMsg)
{
}