【问题标题】:MFC feature pack - how to update the property grid controlMFC 功能包 - 如何更新属性网格控件
【发布时间】:2009-07-20 11:00:39
【问题描述】:

我是 MFC 新手,对“MFC 功能包”的新功能有些困惑。通过向导,我现在有一个看起来像 IDE 的应用程序 - 左侧有一个可停靠的文件资源管理器,右侧有一个可停靠的属性窗口。我可以通过 ON_WM_LBUTTONDBLCLK 和 GetItemText() 获取文件资源管理器窗口中的选定项目。

问题: 单击文件资源管理器窗口中的项目后,属性窗口应“更新”。前任。我单击树控件中的一个项目“按钮”,属性窗口应该显示“图像”、“字体”和“颜色”我该怎么做?如何更新propertygridCtrl的内容?

【问题讨论】:

    标签: visual-c++ mfc mfc-feature-pack


    【解决方案1】:

    要填充属性网格,请查看向导生成的内容。您将为“项目按钮”单击事件设置处理程序,清除网格内容,再次填充。似乎是一个显而易见的答案,所以我可能误解了这个问题。

    【讨论】:

    • 这正是它背后的逻辑。我可以通过 void CPropertiesWnd::OnProperties1() 清除和填充网格内容,它在消息映射中被称为 ON_COMMAND(ID_PROPERTIES1, OnProperties1)。这意味着我想在单击树项后在 CViewTree 类中调用 OnProperties1() 。如何调用 afx_msg void OnProperties1()?
    • 呃,像所有其他方法和函数一样调用它:OnProperties1(); ?它只是一个和其他所有函数一样的函数,即使它也是从消息处理程序调用的,您也可以手动调用它。
    • 像函数一样调用 afx_msg?嗯……如果你从另一个类中调用它,它就不会那样工作。你肯定会得到一个错误...
    • 请准确说明您遇到的错误。在它们之前用 afx_msg 声明的函数普通函数,您不能将它们称为“像函数”——它们函数。 afx_msg 在最新版本的 MFC 中甚至没有任何事情(您必须使用它,因为您正在使用 Feature Pack)。 afx_msg 是一个空的#define,被预处理器“删除”。只要您的函数是公共的,您就可以从任何地方调用它(显然,您必须使用正确的参数调用它,但像您这样的消息处理程序不接受参数)。
    【解决方案2】:

    我不明白你的困难在哪里。只需有一个派生自 CMFCPropertyGrid 的类,在其上添加一个公共成员函数以更新其数据,具有一个参数。从文件资源管理器窗口调用该函数,将所选元素作为参数。

    也许您选择错误来处理用户正在更改所选项目的事实?我不知道你的“文件资源管理器”控件是什么类,但我建议你使用与“项目更改”而不是“单击”或“LButton”有关的东西,因为所选项目可以通过其他方式更改,即方向键!

    【讨论】:

      猜你喜欢
      • 2014-10-26
      • 1970-01-01
      • 2017-06-15
      • 2011-06-27
      • 2011-05-17
      • 1970-01-01
      • 2013-06-11
      • 2016-09-03
      • 2020-01-04
      相关资源
      最近更新 更多