当用户点击托盘图标
中的菜单项时,我有一个创建DialogBox窗口的程序 case ID_OPTIONS:
DialogBox ( GetModuleHandle ( NULL ),
MAKEINTRESOURCE ( IDD_SETUP_DIALOG ),
hWnd,
reinterpret_cast<DLGPROC>(SetupDlgProc) );
return 0;
但问题是,每当用户从托盘点击项目时,就会出现一个新的对话框实例。反正有没有阻止这个多个实例?
BTW,我的SetupDlgProc看起来像这样,
BOOL CALLBACK SetupDlgProc ( HWND hwnd, UINT Message, WPARAM wParam,
LPARAM lParam )
{
switch ( Message )
{
case WM_INITDIALOG:
...
}
}
感谢您的帮助。
答案 0 :(得分:2)
一个常见问题。使用标志:
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;
/* ... */
}