2

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

4

2 回答 2

4

您正在寻找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;
}
于 2010-09-04T02:06:48.737 回答
1

由于这有 C# 标记,我猜您想在托管代码中执行此操作。查看Windows API 代码包,其中包括实时缩略图、缩略图按钮、剪辑缩略图、选项卡式缩略图等示例。您正在寻找的是缩略图按钮,两三行代码将处理它。

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

于 2010-09-04T12:05:54.813 回答