CProperytSheet中的ON_UPDATE_COMMAND_UI
2010-04-07 13:24
369 查看
需要从CPropertySheet派生类,并拦截消息WM_KICKIDLE。
1、利用Class
Wizard常见一个新类CMyPropSheet,其基类为CPropertySheet。
2、在头文件中添加消息函数:
afx_msg LRESULT OnKickIdle(WPARAM wParam, LPARAM lParam);
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
LRESULT
CMyPropPage::OnKickIdle(WPARAM, LPARAM)
{
UpdateDialogjControls(this,FALSE);
return 0;
}
接下来就是和对话框类似的处理ON_UPDATE_COMMAND_UI 消息映射。
对无模式属性表不起作用,需要在属性表的所有窗口中处理WM_IDLEUPDATECMDUI消息,并发送WM_KICKIDLE消息给它。
如何在属性表的两个页之间传递数据?
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;
}
1、利用Class
Wizard常见一个新类CMyPropSheet,其基类为CPropertySheet。
2、在头文件中添加消息函数:
afx_msg LRESULT OnKickIdle(WPARAM wParam, LPARAM lParam);
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
LRESULT
CMyPropPage::OnKickIdle(WPARAM, LPARAM)
{
UpdateDialogjControls(this,FALSE);
return 0;
}
接下来就是和对话框类似的处理ON_UPDATE_COMMAND_UI 消息映射。
对无模式属性表不起作用,需要在属性表的所有窗口中处理WM_IDLEUPDATECMDUI消息,并发送WM_KICKIDLE消息给它。
如何在属性表的两个页之间传递数据?
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;
}
相关文章推荐
- 在基于对话框的应用中执行空闲状态处理(比如用ON_UPDATE_COMMAND_UI更新控件)
- MFC中ON_UPDATE_COMMAND_UI和ON_COMMAND消息区别
- 在Dialog中使用ON_UPDATE_COMMAND_UI来更新控件
- ON_COMMAND_RANGE和ON_UPDATE_COMMAND_UI_RANGE
- ON_COMMAND 和 ON_UPDATE_COMMAND_UI的区别
- MFC中ON_UPDATE_COMMAND_UI和ON_COMMAND消息区别,OnMenuSelect事件介绍
- 在对话框里面使用ON_UPDATE_COMMAND_UI映射工具条
- 在MFC对话框中使用ON_UPDATE_COMMAND_UI更新菜单
- MFC中ON_UPDATE_COMMAND_UI和ON_COMMAND消息区别
- 在对话框中使用ON_UPDATE_COMMAND_UI更新菜单
- 对话框添加 ON_UPDATE_COMMAND_UI 更新菜单和工具栏
- C++实例 菜单操作2 ON_UPDATE_COMMAND_UI
- UPDATE_COMMAND_UI和ON_COMMAND
- 对话框的菜单 ON_UPDATE_COMMAND_UI
- ON_UPDATE_COMMAND_UI_RANGE
- Dialog 中使用ON_UPDATE_COMMAND_UI
- ON_COMMAND和ON_UPDATE_COMMAND_UI
- 对话框使用ON_UPDATE_COMMAND_UI(转)
- 【VC++】在对话框中使用ON_UPDATE_COMMAND_UI更新菜单
- 使基于对话框的菜单能够使用ON_UPDATE_COMMAND_UI更新菜单