如前所述,您指出的示例項目不使用MFC,而是WTL,它是ATL的擴展,目前沒有與Visual Studio一起提供。 因此,爲了讓他們編譯你必須download WTL,安裝並擺脫了一些棄用的東西。
但是,當然,接口也可以用在MFC應用程序中。 對於啓動,下面是一個簡單的例子:
class CMainDialog : public CDialog
{
// ...
CComPtr<ITaskbarList3> m_spTaskbarList;
};
BOOL CMainDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// ...
HRESULT hr = ::CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER,
__uuidof(ITaskbarList3), reinterpret_cast<void**>(&m_spTaskbarList));
if(SUCCEDDED(hr))
{
hr = m_spTaskbarList->HrInit();
}
// ...
return TRUE;
}
....當然,不要忘記調用AfxOleInit在應用程序的類InitInstance中方法。
[已更新]
對不起,我之前的例子是錯誤的!根據文檔,在調用任何ITaskbarList3方法之前,必須處理「TaskbarButtonCreated」註冊的消息,以確保任務欄按鈕已就位。
UINT WM_TASKBAR_BUTTON_CREATED = ::RegisterWindowMessage(_T("TaskbarButtonCreated"));
BEGIN_MESSAGE_MAP(CMainDialog, CDialogEx)
// ...
ON_REGISTERED_MESSAGE(WM_TASKBAR_BUTTON_CREATED, OnTaskbarButtonCreated)
END_MESSAGE_MAP()
LRESULT CMainDialog::OnTaskbarButtonCreated(WPARAM wParam, LPARAM lParam)
{
HRESULT hr = ::CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER,
IID_ITaskbarList3, reinterpret_cast<void**>(&m_spTaskbarList));
if (FAILED(hr))
{
// handle error
return 0;
}
hr = m_spTaskbarList->HrInit();
// ....
// ... other taskbar list stuff.
return 0;
}
參見本文:Windows 7: Adding toolbar buttons to taskbar button flyout。
看到這篇文章在MSDN上:https://msdn.microsoft.com/en-us/library/windows/desktop/dd378460(v=vs.85).aspx#progress –
什麼的C++版本和你是什麼用於GUI? –
可再發行組件包被稱爲'2015 Redistrbutable(x86)-14.0.24215' –