写入Windows 7“预览”窗口区域

如何使用C#将控件写入或绘制到Windows 7预览区域? 有关我所谈论的示例,请在Windows 7中打开Windows Media Player并播放歌曲。 播放歌曲时,最小化Windows Media Player,然后将鼠标hover在Windows Media Player图标上,您将在实际的Media Player预览窗口下方看到暂停,倒带和快进按钮。 如何在C#中复制这种行为?

您正在寻找Windows 7缩略图工具栏 :

缩略图工具栏通过缩略图为窗口提供迷你“远程控制”机会。 例如,要切换到Windows Media Player中的下一首歌曲,您不需要使用笨拙的Media Player桌面乐队或切换到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代码包 ,其中包括实时缩略图,缩略图按钮,剪裁缩略图,标签缩略图等样本。这是您正在寻找的缩略图按钮,两行或三行代码将处理它。

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