MFC对话框按钮,怎么弄成WINDOWS主题的样式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC对话框按钮,怎么弄成WINDOWS主题的样式?相关的知识,希望对你有一定的参考价值。

我编了一个MFC程序,程序里面对话框上的按钮都是像win98里那种的灰色的方块,很难看。怎么把它弄成winXP里的按钮样式?就像下面这个“我来回答”这种按钮样式。

参考技术A 在www.vckbase.com上有实现类XP按钮源码, 去找找吧

捕获托管在 mfc 对话框上的 windows 窗体事件(c#)

【中文标题】捕获托管在 mfc 对话框上的 windows 窗体事件(c#)【英文标题】:Capture windows forms events(c#) hosted on mfc dialog 【发布时间】:2013-11-14 09:26:55 【问题描述】:

如何获取托管在 MFC 对话框上的窗口窗体事件?

我有一个托管在 MFC 对话框上的用户控件。我在该用户控件中有一个按钮。我想在 mfc 对话框中处理该按钮的单击事件。

因此我尝试按照 MSDN 中的说明实现它。

How to: Sink Windows Forms Events from Native C++ Classes

在支持 CLR 的项目中严格遵循 MSDN 中描述的步骤。 它编译并运行良好。 但是托管了 c# 控件的 mfc 不会接收到事件。

我的问题是

    还有什么要检查的以获取事件接收器吗? 如果在托管端处理事件会发生什么情况,控件是否会返回到宿主应用程序?

【问题讨论】:

【参考方案1】:

我发现了问题,因此回答了我自己的问题。

    还有什么要检查的以获取事件接收器吗?

    按照 MSDN 进行是正确的。这里的问题是错误地附加了 Click 事件。

即) m_MyControl.GetControl()->button1->点击 += MAKE_DELEGATE( System::EventHandler, OnClick );

我的订阅是为了控制自己。

m_MyControl.GetControl()->点击 += MAKE_DELEGATE( System::EventHandler, OnClick );

    如果在托管端处理事件会发生什么情况,控件是否会返回到宿主应用程序?

即。如果在托管端和主机端都处理单击事件。

嗯,首先托管方接收事件,然后主机方接收它。

【讨论】:

以上是关于MFC对话框按钮,怎么弄成WINDOWS主题的样式?的主要内容,如果未能解决你的问题,请参考以下文章

将视觉样式应用于从 C# .net 程序调用的 MFC 对话框

MFC如何改变消息框的三个按钮的文本值

mfc中如何设置编辑框\按钮的外观

关闭c++MFC的主窗体,先弹出对话框询问“是不是要关闭”,点击确定取消按钮进行确认。

MFC自定义消息的方法?

eclipse主题 边框怎么弄成黑色