写入Windows 7“预览”窗口区域
问题描述:
如何使用C#编写或绘制Windows 7预览区域的控件?有关我正在谈论的示例,请在Windows 7中打开Windows Media Player并播放歌曲。播放歌曲时,尽量减少Windows Media播放器,然后将鼠标悬停在Windows Media Player图标上,您会在实际的媒体播放器预览窗口下方看到一个暂停,后退和快进按钮。我如何在C#中复制这种行为?写入Windows 7“预览”窗口区域
答
您正在寻找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;
}
答
因为这有C#的标签,我猜你会喜欢做这在托管代码。请看Windows API Code Pack,其中包括实时缩略图,缩略图按钮,剪辑缩略图,选项卡式缩略图等示例。它是您正在查找的缩略图按钮,两三行代码将负责处理它。
顺便说一下,预览区域是您在Windows资源管理器中获得的内容,当您选择说.txt文件并可以看到右侧的内容时。大多数办公文件都有预览器,你也可以自己写。