如何截获点击CPropertySheet中OK按钮的消息?
比如:
..........
CMySheet sheet("");
CPage1 p1;
CPage2 p2;
sheet.AddPage(&p1);
sheet.AddPage(&p2);
sheet.DoModal();
.........
我想截获CMySheet(derived from CPropertySheet)运行过程中,点击OK按钮的消息,并在其中做一些检测和处理,哪位高人教教我该怎么办啊!!
问题点数:100、回复次数:8Top
1 楼winthegame(120斤重的大青蛙)回复于 2003-06-03 15:11:37 得分 0
int nresponse = Sheet.DoModal();
if ( nResponse == IDOK)
{
}
另外在各个Page 中也可以重载 OnOK 进行某些处理啊。Top
2 楼qinghero(水阔长江)回复于 2003-06-03 15:19:27 得分 0
同意青蛙兄。这是最方便的方法。Top
3 楼Luxm(夕阳西下……)回复于 2003-06-03 15:22:39 得分 0
嘿嘿。。。。。。。。。。。Top
4 楼OddLoop(今天就自习~~考研)回复于 2003-06-03 20:49:39 得分 0
To青蛙兄:
我知道可以这样的,但是我的情况是,不想在调用的函数中添加过多的代码,而把处理代码放到CMysheet中,这样还有个好处,处理过程对话框一直可见,这对我的用户界面有好处啊,谁知道怎么办哪……:(Top
5 楼guoyin(Owen.Guo)回复于 2003-06-03 21:29:25 得分 80
BOOL CXXXDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
int nID = LOWORD(wParam);
switch(nID)
{
case IDOK:
AfxMessageBox("OK");
break;
case IDCANCEL:
AfxMessageBox("CANCEL");
break;
case ID_APPLY_NOW:
AfxMessageBox("APPLY");
};
return CPropertySheet::OnCommand(wParam, lParam);
}
Top
6 楼winthegame(120斤重的大青蛙)回复于 2003-06-03 22:09:35 得分 20
:( 说来惭愧, 偶除了上面偶说的标准做法以外,专门去找 CPropertySheet 的 IDOK 还没有过,不过有一个办法,因为偶需要的对话框虽然也要属性页,但里面在属性页外还需要有很多非标准的很多东西,属性页只是其中一个部分,采用CTabCtrl 未免麻烦,当然也可以TabCtrl 每页载入一个对话框资源那样,不过那方法我就不多说了,因为没有这个方便。
方法就是把你创建的属性页Attach 到 一个对话框中.
介绍如下:加一个对话框, 然后绑定他的类假设为CmyDlg, 然后设置一个成员变量 propsheet. 有若干个对应的属性页,在对话框中添加成员
CmyPropertySheet m_propSheet;
然后在InitDialog中 添加
m_propSheet.Create (this, WS_CHILD| WS_VISIBLE, 0);
m_propSheet.ModifyStyleEx(0,WS_EX_CONTROLPARENT);
m_propSheet.ModifyStyle (0, WS_TABSTOP);
m_propSheet.SetWindowPos(NULL,0,0, 0, 0,
SWP_NOZORDER|SWP_NOSIZE|SWP_NOACTIVATE);
以后就是简单的重载对话狂的 OnOK函数就可以了,而且这样做还有个好处,在对话框中可以随意自定义很多按钮, 以及其它控件。
Top
7 楼OddLoop(今天就自习~~考研)回复于 2003-06-04 09:56:17 得分 0
多谢guoyin(Owen.Guo) ,问题解决了:)。也多谢青蛙兄,又多学了一招^ ^
最后问一个多余的问题,马上就给分啊,嘿嘿,偶是菜鸟,别笑我
Windows 消息结构体中的wParam 和 lParam一般用来保存什么信息啊?好像对于不同的消息类型,他们保存的信息不同,谁能简单的说一下啊?Top
8 楼qinghero(水阔长江)回复于 2003-06-04 12:59:11 得分 0
青蛙变星了?怎么不散分呀?
这两个结构是都是指针,可以指向一些你自己定义的结构。比如说你在发送消息的地方把消息处理函数的参数保存在一个结构里,然后把结构的指针作为wParam或lParam传过去。消息处理函数就可以从wParam或lParam得到你的结构了。Top
相关问题
- CPropertySheet的Ok,Cancel,Apply按钮怎么用ClassWizard添加消息处理?
- 如何通过截获消息使窗体的最大化按钮失效?
- 从CButton继承的按钮如何能够截获WM_IME_NOTIFY消息?
- 如何处理CPropertySheet上的按钮?
- 菜鸟一问:怎么截获CPropertySheet的回车事件?
- 请问怎样截获窗口右上角关闭按钮的动作,让窗口不要关闭?
- 如何知道我按的是OK按钮,还是Cancel按钮
- 求救!如何截获系统最大化按钮单击的消息?我截获WM_SYSCOMMAND,可是只对系统菜单有效,对最大化按钮无效!
- 怎样改变CPropertySheet的“确定”和“取消”按钮上文字
- 如何去掉CPropertySheet中的那个“帮助”按钮?



