c++ - 使用 SubclassDlgItem 改变控件类型

标签 c++ mfc user-interface

我有一个带有对话框的 C++ MFC 应用程序,我想在其中根据组合框中的选择动态更改控件的类型。对话框资源以一个普通的旧编辑控件开始,然后我调用 SubclassDlgItem 以更改为自定义控件类型。

到目前为止一切顺利。现在,当用户在屏幕上的不同组合框中更改选择时,我想将此控件更改为不同的自定义类型。因此,我通过在指向该控件的自定义类的指针上调用 delete 来销毁现有控件。然后我调用::CreateEx 重新创建我的编辑控件并再次调用 SubclassDlgItem 以创建新的自定义控件。

我的问题是这会闪烁很多,我想我正在使用::CreateEx 在我的自定义控件之上创建编辑控件。关于如何消除闪烁的任何想法,尤其是当用户快速更改控制组合框的内容时?

最佳答案

您可以在父窗口的同一区域创建一组所有可能的控件,并仅显示相关的控件并隐藏所有其他控件。当用户导致控件更改时,您将隐藏事件控件并显示新的相关控件。这应该看起来更平滑。

关于c++ - 使用 SubclassDlgItem 改变控件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/828000/

相关文章:

c++ - 为什么在传递 IXMLDOMDocument 参数时 IXSLTemplate::putref_stylesheet 会编译

c++ - 为什么 MFC CDocument 有 SetTitle 方法而不是 CFrameWnd

c++ - 在 Windows 下,以相同的对话框 ID 打开 2 个 Windows 是否有效

java - 备用 Java GUI 框架

java - 有没有办法在java控制台中对扫雷游戏的行和列进行编号?

Java标签中gif的问题

php - C++/CURL - 通过 PHP 请求安全方式传递数据?

c++ - sizeof 运算符宏 #define MYSIZEOF(X) ((X*)0 +1)

c++ - 使用 new 关键字和指针的 STL vector 进行内存管理

c++ - CRichEditCtrl 如何知道已执行粘贴操作?