CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何截获点击CPropertySheet中OK按钮的消息?

楼主OddLoop(今天就自习~~考研)2003-06-03 14:56:19 在 VC/MFC / 基础类 提问

比如:  
  ..........  
  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中的那个“帮助”按钮?

关键词

  • 函数
  • 属性
  • 消息
  • 结构
  • ws
  • propsheet
  • cpropertysheet
  • 对话框
  • cmysheet
  • 按钮

得分解答快速导航

  • 帖主:OddLoop
  • guoyin
  • winthegame

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo