`
lovnet
  • 浏览: 6944119 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

属性页中的ON_UPDATE_COMMAND_UI

UI 
阅读更多
我前面翻译了一篇文章简单的谈了一下在对话框处理ON_UPDATE_COMMAND_UI 消息。又在www.codeguru.com上看到在属性页中处理ON_UPDATE_COMMAND_UI 消息的方法和在对话框中稍有不同。两者的处理大体上一样。只是在属性页中还需要一个步骤。
需要从CPropertySheet派生类,并拦截消息WM_KICKIDLE。
1、利用Class Wizard常见一个新类CMyPropSheet,其基类为CPropertySheet。
2、在头文件中添加消息函数:
afx_msg LRESULT OnKickIdle(WPARAMwParam, LPARAMlParam);
3、在源文件中包含afxpiv.h
4、添加消息映射 ON_MESSAGE(WM_KICKIDLE, OnKickIdle);
5、实现函数
LRESULT CMyPropSheet::OnKickIdle(WPARAM, LPARAM)
{
SendMessgeToDescendants(WM_KICKIDLG, 0,0,FALSE, FALSE);
return 0;
}
属性表现在将所有的WM_KICKIDLE消息传递给属性页,在属性页类中,添加WM_KICKIDLE的消息映射,并调用UpdateDialogjControls
LRESULTCMyPropPage::OnKickIdle(WPARAM, LPARAM)
{
UpdateDialogjControls(this,FALSE);
return 0;
}
接下来就是和对话框类似的处理ON_UPDATE_COMMAND_UI消息映射。
对无模式属性表不起作用,需要在属性表的所有窗口中处理WM_IDLEUPDATECMDUI消息,并发送WM_KICKIDLE消息给它。

附: 这里还讨论几个有关属性页的问题

1
如何在属性表的两个页之间传递数据?
CPropertyPage有一个成员函数QuerySiblings(WPARAM, LPARAM)。应用程序可以使用这个函数。QuerySiblings生成一条PSM_QUERYSIBLINGS消息,它传递给所有的兄弟,也就是属性表上的其他属性页。
一般可创建一个所有页可见的枚举,如:
enum{QUERY_MY_STRING, QUERY_SOMETHING_ELSE,.......}
然后,在一个属性页需要其他属性页中的信息时,使用代码:
CString myString;
if(lL == QuerySiblings(QUERY_MY_STRING,(LPARAM)&myString))
{
....//获取字符串
}
提供字符串的页处理PSM_QUERYSIBLINGS消息:
LRESULT CPageThatHasString::OnQuerySiblings(WPARAM wParam, LPARAM lParam)
{
if(QUERY_MY_STRING == wParam)
{
*((CString *)lParam) = _T(“Test String“);
return 1L;
}
else
return 0L;
}

2 如何让属性页具有两行标签?
从CPropertySheet派生一个自己的类,添加一个PreCreateWindow的处理,然后在调用基类的处理前加如下代码:
cs.style |= TCS_MULTILINE;

3 如何隐藏属性页的标题栏?
从CPropertySheet派生一个自己的类,并覆盖OnInitDialog,在转到默认的情况以后,使用ModifyStyle来删除标题栏标志WS_CAPTION。
ModifyStyle(WS_CAPTION,0);
分享到:
评论

相关推荐

    VC6.0MFC函数名(下)

    3. ON_UPDATE_COMMAND_UI宏:更新用户界面元素,如菜单项或工具栏按钮的状态。 三、对话框(Dialogs) 1. CDialog类:用于创建模态对话框,ON_BN_CLICKED消息处理按钮点击事件。 2. CPropertySheet和CPropertyPage...

    MFC例题与练习

    7. **命令处理**:MFC通过ON_COMMAND和ON_UPDATE_COMMAND_UI宏定义命令处理函数,使得菜单、工具栏和快捷键的操作得以实现。 8. **数据库支持**:MFC提供了ODBC(Open Database Connectivity)类库,使得开发者可以...

    MFC画图程序步骤.pdf

    为了响应用户的菜单和工具栏操作,我们需要定义消息映射(Message Map)并在类中实现COMMAND和UPDATE_COMMAND_UI消息处理函数。COMMAND消息处理函数通常用来响应用户的点击事件,UPDATE_COMMAND_UI则用于更新工具栏...

    MFC学习总结 (67个技巧)

    - **ON_COMMAND**和**ON_UPDATE_COMMAND_UI**:用于处理用户界面的命令消息。 - **ON_BN_CLICKED**等:处理控件的特定事件。 9. **文件操作**: - **CFile**和**CFileFind**:分别用于读写文件和搜索文件。 - *...

    下拉式選單與其他UI元件有互動1

    在这里,`name`属性定义了命令的名称,`process`属性指定需要处理的组件(这里是`travelTransportList`),`update`属性则指定了在处理完成后需要更新的组件(`travelTransportOther`和`msg1`)。 3. **`...

    Visual C++ 编程资源大全(英文控件)

    24.zip Moving and Resizing the Property Pages 移动并改变属性页大小(3KB)<END><br>20,27.zip Using ON_UPDATE_COMMAND_UI in Property Pages 在属性页中使用ON_UPDATE_COMMAND_UI(2KB)<END><br>22,...

    Windows编程函数.doc

    菜单栏的更新通常通过消息映射机制实现,UPDATE_COMMAND_UI宏用于动态更新菜单项的启用状态。正确的方法是针对需要改变的菜单项添加消息映射宏,并使用如 `Enable()` 函数来控制其状态。 总结:Windows编程函数是...

    Liferay开发常用标签

    通过`renderResponse.createRenderURL()`创建URL,设置窗口状态和其他参数,然后在`liferay-ui:tabs`标签中使用。这种方式同样允许开发者根据用户的操作动态改变选项卡的内容。 总结起来,Liferay的标签库提供了...

    移动互联网开发面试题(UI、前端、PHP版本)

    4. 盖印快捷键:在Photoshop中,盖印图层的快捷键通常是`Ctrl+Shift+Alt+E`(Windows)或`Command+Shift+Option+E`(Mac)。 5. 设计任务:要求设计一个具有地理位置切换、关键词查询、个人中心、即时通知等功能的...

    第5章ADO.NET的数据库操作对象

    数据绑定是ASP.NET中常用的技术,用于将数据源与UI控件关联,使得数据的改变能实时反映到用户界面。简单型数据绑定使用`<%# %>`表达式,例如: ```html 书名:<b><%# bookName %></b></div> ``` 在这个例子中,`...

    Java开发规范上机试题

    8. **UICommand与UIAction**:UICommand和UIAction是Struts框架中的概念,前者是业务逻辑到视图的桥梁,后者处理用户请求,实现视图与控制逻辑的交互。 9. **JSP页面开发**:试题要求编写编辑、查看、查询条件和...

    asp.net带分页增删改查

    在ASP.NET中,"增删改查"(CRUD,Create、Read、Update、Delete)是Web应用程序开发的基础操作,通常用于数据管理界面。GridView控件是ASP.NET中常用的数据展示组件,它提供了内置的CRUD功能,使得开发者能够轻松...

    aspnet习题.doc

    16. ASP.NET中的所有自定义用户控件都必须继承自System.Web.UI.WebControls.WebControl或System.Web.UI.Control基类。 17. 若要实现控件内容变化后立即回传表单,可以设置控件的AutoPostBack属性为`true`。 18. ...

    ADONET数据库访问技术PPT教学课件.pptx

    Command对象提供了ExecuteReader(返回DataReader对象以读取结果集)、ExecuteNonQuery(执行无返回值的SQL命令,如UPDATE、INSERT、DELETE,返回受影响的行数)和ExecuteScalar(返回结果集的第一行第一列的值,...

    c#访问SQL数据库

    1. ADO.NET组件:ADO.NET包含几个关键组件,如Connection(连接)、Command(命令)、DataReader(数据读取器)、DataAdapter(数据适配器)和DataSet(数据集)。这些组件协同工作,帮助开发者在C#中与SQL Server...

    200多个C#面试题含答案[文].pdf

    - Command对象的ExecuteNonQuery()方法用于执行不返回结果集的SQL语句,如INSERT、UPDATE、DELETE操作。 - ExecuteReader()方法用于执行返回结果集的SQL语句,如SELECT查询。 2. C#字符串和字符处理: - 在C#中...

    c#面向对象程序设计试卷和答案借鉴.pdf

    3. ASP.NET代码隐藏:在ASP.NET中,代码隐藏文件(a)是与Web窗体页分离的编程逻辑文件,通常具有".ascx.cs"扩展名,用于存储与UI交互的代码。它们被编译到项目动态链接库(.dll)文件中,而不是单独的.exe文件。 4...

    MFC教程入门知识全集.rar

    6.1.2.5 给菜单项添加UPDATE_COMMAND_UI 消息处理 6.1.2.6 一个简单的绘图程序 6.1.3 在应用程序中控制菜单 6.1.3.1 在应用程序中取得菜单 6.1.3.2 在应用程序中修改菜单的状态 6.1.3.3 在应用程序中添加、删除...

    ADO.NET数据操作

    - `UpdateRowSource`:当 `DataAdapter` 的 `Update` 方法使用时,此属性决定如何将结果对应到数据行中。 - `Transaction`:执行命令时所在的事务。 - `Parameters`:参数集合。 - `Connection`:用于执行数据...

    2016信息工程Web开发技术复习概要Word版.docx

    - 数据绑定技术是指将数据源与UI控件关联起来的技术,使得数据能够自动填充到控件中。 #### 42. Repeater控件 - **Repeater控件**:用于循环显示数据集中的数据。`ItemTemplate`用于定义每个项的显示模板,`...

Global site tag (gtag.js) - Google Analytics