对话框的单独任务栏按钮
Separate taskbar button for dialog
我支持基于 WinAPI/ATL 的应用程序,其中包含许多根据用户操作创建的对话框 windows。大多数对话框都是无主的 windows。如果同时创建多个对话框,它们的任务栏按钮将在任务栏上组合在一起(默认行为)。
现在我的任务是为其中一个对话框创建一个单独的任务栏按钮 windows。我找不到有关如何执行此操作的任何相关信息。我什至尝试使用 ITaskbarList
COM 接口,但它的 AddTab()
方法像上面的默认模型一样工作。
是否可以为应用程序的一个实例在任务栏上放置多个按钮?如果是,请解释我如何实现它。
在 Windows 7 及更高版本中,您可以为对话框指定一个不同的 Application User Model ID,它不会与任务栏上的其他对话框分组。
参见 Raymond Chen 关于此主题的博客文章:
How do I customize how my application windows are grouped in the Taskbar?
另见:
Developing for the Windows 7 Taskbar — Application ID
例如:
int WINAPI wWinMain(HINSTANCE hinst, HINSTANCE hinstPrev,
LPWSTR lpCmdLine, int nShowCmd)
{
SetCurrentProcessExplicitAppUserModelID(L"MyCompany.MyApp.MainProcess");
...
HWND hDlg = ...
IPropertyStore *pps = NULL;
if (SUCCEEDED(SHGetPropertyStoreForWindow(hDlg, IID_PPV_ARGS(&pps))))
{
PROPVARIANT pv;
PropVariantInit(&pv);
InitPropVariantFromString(L"MyCompany.MyApp.LoneDialog", &pv);
pps->SetValue(PKEY_AppUserModel_ID, pv);
PropVariantClear(&pv);
pps->Release();
}
...
return 0;
}
我支持基于 WinAPI/ATL 的应用程序,其中包含许多根据用户操作创建的对话框 windows。大多数对话框都是无主的 windows。如果同时创建多个对话框,它们的任务栏按钮将在任务栏上组合在一起(默认行为)。
现在我的任务是为其中一个对话框创建一个单独的任务栏按钮 windows。我找不到有关如何执行此操作的任何相关信息。我什至尝试使用 ITaskbarList
COM 接口,但它的 AddTab()
方法像上面的默认模型一样工作。
是否可以为应用程序的一个实例在任务栏上放置多个按钮?如果是,请解释我如何实现它。
在 Windows 7 及更高版本中,您可以为对话框指定一个不同的 Application User Model ID,它不会与任务栏上的其他对话框分组。
参见 Raymond Chen 关于此主题的博客文章:
How do I customize how my application windows are grouped in the Taskbar?
另见:
Developing for the Windows 7 Taskbar — Application ID
例如:
int WINAPI wWinMain(HINSTANCE hinst, HINSTANCE hinstPrev,
LPWSTR lpCmdLine, int nShowCmd)
{
SetCurrentProcessExplicitAppUserModelID(L"MyCompany.MyApp.MainProcess");
...
HWND hDlg = ...
IPropertyStore *pps = NULL;
if (SUCCEEDED(SHGetPropertyStoreForWindow(hDlg, IID_PPV_ARGS(&pps))))
{
PROPVARIANT pv;
PropVariantInit(&pv);
InitPropVariantFromString(L"MyCompany.MyApp.LoneDialog", &pv);
pps->SetValue(PKEY_AppUserModel_ID, pv);
PropVariantClear(&pv);
pps->Release();
}
...
return 0;
}