您的位置:首页 > 其它

VC中实现基于对话框的应用程序在启动时隐藏

2004-11-20 04:45 459 查看
首先要在App类中把对对话框的模式创建改为非模式创建。

具体方法如下:
CTestHideDialogDlg *dlg = new CTestHideDialogDlg();
m_pMainWnd = dlg;
if (dlg!=NULL) {
BOOL ret = dlg->Create(IDD_TESTHIDEDIALOG_DIALOG);
if(!ret){
AfxMessageBox("Error creating Dialog");
return FALSE;
}
dlg->ShowWindow(SW_HIDE);

}
else
AfxMessageBox("Error Creating Dialog Object");
此时已经创建好了一个非模式对话框,并且初始是隐藏的。
接下来要添加消息循环的处理代码,否则程序会自动退出。
BOOL bRet;
MSG msg;

while ( (bRet = GetMessage(&msg, NULL, 0, 0)) != 0 )
{
if (bRet == -1 )
{
}
else if (msg.message == WM_COMMAND && msg.wParam == IDOK) {
break;
}
else if (!IsWindow(m_pMainWnd->m_hWnd) || !IsDialogMessage(m_pMainWnd->m_hWnd, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}


此处设计为当用户按下对话框上的OK键时程序退出。
由于一开始程序主窗口是隐藏的,需要一个键盘的Hook,设计为当用户按下某个键或组合键时,程序主窗口显示出来。具体的细节不在此文中叙述,请查阅相关资料。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: