0

我继承了一个项目(最初是为 Win95 编写的!),它有许多按钮附加到从 CWnd 派生的父窗口。按钮本身位于从 CWnd 派生的用户定义类中,因此它们不是“真正的”按钮,而是由数以百万计的代码行定义的小窗口,并且有大量的显示问题,我一直在努力解决几个星期,看不到任何解决方案。

前几天我们得出结论,CBitmapButton 看起来是个不错的选择。看起来很简单,为不同的按钮状态定义 4 个位图。我需要的只是 BN_CLICKED 来启动一个处理程序,我会很高兴。

在搞砸了一段时间后,设置了一个按钮和一些位图,我能够显示 CBitmapButton;看起来不太好,但我可以解决这个问题......现在的问题是我试图设置一个消息映射来捕获 BN_CLICKED 消息,但是由于父窗口是从 CWnd 而不是 CDialog 派生的,我得到语法错误设置消息映射。多次阅读有关该主题的 MSDN,看来您只能将 CBitmapButton 连接到 CDialog 派生类。这对我来说似乎很奇怪 - 我只想要一个按钮,它应该能够将一个简单的“我被点击”传输到它所连接的任何父级,但显然不会发生。

那么,有没有人成功地将 CBitmapButton 附加到 CWnd 派生的父级?如果是这样,如何设置一个可以处理这些东西的消息映射?或者,您将使用什么方法来设置一个可以与 CWnd 父级一起使用的按钮类,因为 CBitmapButton 和 CButton 似乎需要 CDialog 作为父级?

4

1 回答 1

1

不,它并不要求您的父窗口始终是 CDiaglot,您甚至可以从 CWnd 继承并在其中创建一个 CButton/CBitmapButton。

您可以覆盖派生类OnCommand中的消息CWnd并点击按钮单击事件。

于 2012-07-24T06:34:37.540 回答