是否可以使用 WINAPI 或 GDI+ 在 C++ 中创建 CommandLink 对话框?

Posted

技术标签:

【中文标题】是否可以使用 WINAPI 或 GDI+ 在 C++ 中创建 CommandLink 对话框?【英文标题】:Is it possible to create CommandLink dialog boxes in C++ with WINAPI or GDI+? 【发布时间】:2016-06-14 18:05:46 【问题描述】:

这就是我想要达到的结果。我知道它被称为“CommandLink”,我已经用谷歌搜索了一段时间,只找到 C# 的东西,没有纯 C++ 的东西。 我想知道是否有可能做这样的事情,如果可以,如何......

提前感谢您的任何帮助!

【问题讨论】:

是的,这是可能的,但您的要求太宽泛,不适合 Stack Overflow。 @CaptainObvlious:我意识到这实际上是一个不好的问题格式,但如果你能告诉我正确的选择,你会很高兴的。谢谢! ...如果您花一些时间来改进您的帖子,那么您会让每个人都开心。 @CaptainObvlious 我在google上没有找到任何代码,一些令人上瘾的几句话不会改变它,就像在汤里加水一样......毫无意义! 【参考方案1】:

您正在查看的对话框是在 Vista 中引入以取代 MessageBox() 的 Task Dialog(事实上,该图像中的文字说明了很多!)。

TaskDialog() 函数为您提供对话框的最基本功能,但不是您要求的功能。为此,您将需要TaskDialogIndirect()。此函数采用TASKDIALOGCONFIG structure。 dwFlags 成员的 TDF_USE_COMMAND_LINKS 标志可以满足您的需求。

您也可以单独拥有Command Link;它只是一个standard BUTTON control,并应用了BS_COMMANDLINK style。见How to Create a Command Link。

【讨论】:

我在链接 ComCtl32.lib 时遇到错误,它告诉我“序号 345 无法位于动态链接库 COMCTL32.dll 中” 我有一个从这里复制的清单文件:msdn.microsoft.com/en-us/library/bb756938.aspx @Bafforasta 请将脏话控制在最低限度。 @Kyll 抱歉,这让我很紧张,代码没有任何明显的原因无法正常工作...... 不要将 Common Controls 6 添加到清单文件,而是尝试将链接器编译指示添加到源代码 (.cpp) 文件。在这个页面找到它:msdn.microsoft.com/en-us/library/windows/desktop/… 它以#pragma comment(linker... 开头,但它太大了,无法添加到此评论中。另外,您没有使用 Windows XP,对吧?

以上是关于是否可以使用 WINAPI 或 GDI+ 在 C++ 中创建 CommandLink 对话框?的主要内容,如果未能解决你的问题,请参考以下文章

使用 gdi 在 winapi 窗口中的运行时更新颜色

WinAPI/GDI:如何使用 GetDIBits() 为位图合成颜色表?

对GDI的感觉感到困惑[关闭]

如何在 WINAPI GDI 中制作淡入淡出效果?

C#、C++、WinAPI - 从另一个进程获取窗口数

GDI+ Graphics::DrawImage 不显示