2010-09-04 73 views
2

如何使用C#编写或绘制Windows 7预览区域的控件?有关我正在谈论的示例,请在Windows 7中打开Windows Media Player并播放歌曲。播放歌曲时,尽量减少Windows Media播放器,然后将鼠标悬停在Windows Media Player图标上,您会在实际的媒体播放器预览窗口下方看到一个暂停,后退和快进按钮。我如何在C#中复制这种行为?写入Windows 7“预览”窗口区域

回答

4

您正在寻找Windows 7 Thumbnail Toolbars

缩略图工具栏提供了一个迷你 “远程控制”从它的缩略图 机会窗口。例如,要切换到 的下一首歌曲,您不需要 使用笨拙的Media Player桌面乐队 或切换到媒体播放器 应用程序。相反,您可以直接使用 缩略图工具栏执行 此任务,而不必通过跳转到另一个 应用程序来中断您的工作流程 。

从MSDN文章无耻地复制:

//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; 
} 
1

因为这有C#的标签,我猜你会喜欢做这在托管代码。请看Windows API Code Pack,其中包括实时缩略图,缩略图按钮,剪辑缩略图,选项卡式缩略图等示例。它是您正在查找的缩略图按钮,两三行代码将负责处理它。

顺便说一下,预览区域是您在Windows资源管理器中获得的内容,当您选择说.txt文件并可以看到右侧的内容时。大多数办公文件都有预览器,你也可以自己写。