Chinaunix首页 | 论坛 | 博客
  • 博客访问: 669873
  • 博文数量: 134
  • 博客积分: 3158
  • 博客等级: 中校
  • 技术积分: 1617
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-30 22:36
文章分类

全部博文(134)

文章存档

2012年(2)

2011年(28)

2010年(68)

2009年(35)

2008年(1)

我的朋友

分类: C/C++

2010-09-24 09:46:40

基础篇:VC对话框小知识

时间:2009-04-01 12:27来源:未知 作者:admin 点击: 324次
总结几点VC中关于对话框小知识供大家参考。 一、对话框属性 1.Styles-Clip siblings:排除子窗口之间的相对区域,也就是说,当一个特定的窗口接收到绘图消息时,将所有重叠窗口排除在外,只重绘指定的子窗口。 Styles-Clip children:当在父窗口内绘图时,排
  

      总结几点VC中关于对话框小知识供大家参考。

       一、对话框属性

       1.Styles->Clip siblings:排除子窗口之间的相对区域,也就是说,当一个特定的窗口接收到绘图消息时,将所有重叠窗口排除在外,只重绘指定的子窗口。 

          Styles->Clip children:当在父窗口内绘图时,排除子窗口区域。

      2.More Styles 

         System modal:系统模式对话框 

         Absolute align:坐标相对于屏幕原点 

         Set foreground:设置为前台窗口 

         No fail create:应用于Windows 95 

         No idle message:不发送空闲消息 

         Control:不使用标题栏的对话框 

         Center:在屏幕中心显示对话框 

         Center mouse:以鼠标坐标为对话框中心显示对话框 

         Local edit:指定编辑控件的正文将存储于应用程序的局部数据段中

       3.Extended Styles 

         Tool Window:工具栏窗体 

         Client edge:对话框边框下凹 

         Static edge:对话框边框为实边框 

         Accept files:是否接受文件拖放 

         Control parent:用键在窗口的子窗口间搜索 

         Context help:在窗口标题栏添加一个问号按钮 

         No parent notify:以这个风格创建的窗口在创建和销毁时,不向父窗口发送WM_PARENTNOTFY消息

      二、对话框的创建与显示

       1.模态对话框:

         CDlg dlg; 

         dlg.DoModal();  

         CDialog::OnOK();//或CDialog::OnCancel()关闭模态对话框

      2.非模态对话框 

          CDlg *dlg=new CDlg;

         dlg->Create(IDD_DIALOG,this);  

         dlg->ShowWindow(SW_SHOW); 

         dlg->DestroyWindow();//销毁非模态对话框,若在一个非模态对话框中实现OnCancel方法,需在内部调用  DestroyWindow方法,

                                                  //不要调用基类的OnCancel方法,因为它调用EndDialog方法将使对话框不可见,但不销毁对话框。 

         delete dlg;//DestroyWindow只销毁窗口,但不释放对象。delete释放对象。

      三、遍历对话框中的控件 

      控件也是窗口,所有可以用CWnd类的方法操作控件,GetTopWindow方法可以获得第一个属于CWnd的子窗口,GetNextWindow方法返回窗口管理器中的下一个窗口。首先在对话框中添加几个控件,然后在主窗口的OnInitDialog中添加: 

         CWnd* pWnd = GetTopWindow(); 

         while(pWnd != NULL)  

         {  

                  int i = pWnd->GetDlgCtrlID(); 

                  CString str;  

                  str.Format("ID是:%d",i); 

                  pWnd->SetWindowText(str); 

                  pWnd = pWnd->GetNextWindow(); 

          }

      四、消息处理函数共享

      指多个连续ID的控件都发出相同的消息,使用ON_CONTROL_RANGE宏来实现,类向导不支持ON_CONTROL_RANGE宏,需手动添加:

      afx_msg OnButtonClicked();

      ON_CONTROL_RANGE(BN_CLICKED,IDC_BUTTON1,IDC_BUTTON3,OnButtonClicked).

      然后在OnButtonClicked()中添加消息响应。

阅读(926) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~