2013-06-23 2 views

ответ

2

В журнале Introducing The Taskbar APIs в журнале MSDN описано, как использовать панели инструментов Thumbnail.

Управляемый эквивалент в настоящее время не отображается в пакете кода Windows API , но он планируется появиться в следующей версии. В то же время в вы можете использовать библиотеку Interop Sample Library на панели задач Windows 7. Он содержит класс ThumbButtonManager с соответствующими методами CreateThumbButton и AddThumbButtons для управления панелью миниатюр , а также класс ThumbButton для изменения состояния кнопки миниатюр во время выполнения. Чтобы получать уведомления, вы регистрируетесь на событие ThumbButton.Clicked и переопределяете свое окно процедуру отправки сообщений классу ThumbButtonManager, , который выполняет магию диспетчеризации для вас. (Более подробную информацию см статью в блоге Windows 7 Taskbar: Thumbnail Toolbars.)

ITaskbarList3* ptl;//Created earlier //In your window procedure: 
switch (msg) { 
    case g_wmTBC://TaskbarButtonCreated 
    THUMBBUTTON buttons[2]; buttons[0].dwMask = THB_ICON|THB_TOOLTIP|THB_FLAGS; buttons[0].iId = 0; 
    buttons[0].hIcon = GetIconForButton(0); wcscpy(buttons[0].szTip, L"Tooltip 1"); buttons[0].dwFlags = THBF_ENABLED; 
    buttons[1].dwMask = THB_ICON|THB_TOOLTIP|THB_FLAGS; 
    buttons[1].iId = 1; buttons[1].hIcon = GetIconForButton(1); 
    wcscpy(buttons[0].szTip, L"Tooltip 2"); buttons[1].dwFlags = THBF_ENABLED; VERIFY(ptl->ThumbBarAddButtons(hWnd, 2,buttons)); 
    break; 
    case WM_COMMAND: 
     if (HIWORD(wParam) == THBN_CLICKED) { 
      if (LOWORD(wParam) == 0) 
       MessageBox(L"Button 0 clicked", ...); 
       if (LOWORD(wParam) == 1) MessageBox(L"Button 1 clicked", ...); 
     } 
    break; 
    . 
    . 

И во второй ссылке он показывает C# образец, используя библиотеку оболочки:

Как всегда, управляемые оберток прийти к спасение. ThumbButtonManager класс (в проекте Windows7.DesktopIntegration)

_thumbButtonManager = this.CreateThumbButtonManager(); 
ThumbButton button2 = _thumbButtonManager.CreateThumbButton(102, SystemIcons.Exclamation, "Beware of me!"); 
button2.Clicked += delegate 
{ 
    statusLabel.Text = "Second button clicked"; 
    button2.Enabled = false; 
}; 
ThumbButton button = _thumbButtonManager.CreateThumbButton(101, SystemIcons.Information, "Click me"); 
button.Clicked += delegate 
{ 
    statusLabel.Text = "First button clicked"; 
    button2.Enabled = true; 
}; 
_thumbButtonManager.AddThumbButtons(button, button2); 
Note that you have tooltips and icons at your disposal to personalize the thumbnail toolbar to your application’s needs. All you need to do now is override your windows’ window procedure and call the DispatchMessage method of the ThumbButtonManager, so that it can correctly route the event to your registered event handlers (and of course, don’t forget to call the default window procedure when you’re done!): 

if (_thumbButtonManager != null) 
    _thumbButtonManager.DispatchMessage(ref m); 

base.WndProc(ref m);