我有一个程序,当用户单击任务栏图标中的菜单项时会创建DialogBox窗口,
case ID_OPTIONS:
DialogBox ( GetModuleHandle ( NULL ),
MAKEINTRESOURCE ( IDD_SETUP_DIALOG ),
hWnd,
reinterpret_cast<DLGPROC>(SetupDlgProc) );
return 0;
但是这里的问题是每次用户单击任务栏中的项目时,都会出现对话框的新实例。是否有防止这种多重实例的方法?
顺便说一句,我的SetupDlgProc看起来像这样,
BOOL CALLBACK SetupDlgProc ( HWND hwnd, UINT Message, WPARAM wParam,
LPARAM lParam )
{
switch ( Message )
{
case WM_INITDIALOG:
...
}
}
谢谢你的帮助。
最佳答案
常见问题。使用标志:
static bool bDialogShowing = false;
switch (Message)
{
case ID_OPTIONS:
if (bDialogShowing)
return true;
bDialogShowing = true;
DialogBox ( GetModuleHandle ( NULL ),
MAKEINTRESOURCE ( IDD_SETUP_DIALOG ),
hWnd,
reinterpret_cast<DLGPROC>(SetupDlgProc) );
bDialogShowing = false;
return 0;
/* ... */
}