Chinaunix首页 | 论坛 | 博客
  • 博客访问: 151870
  • 博文数量: 34
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 346
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-19 09:53
文章分类

全部博文(34)

文章存档

2011年(1)

2009年(33)

我的朋友

分类: C/C++

2009-05-31 15:23:28

一、对话框属性:
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()中添加消息响应。
阅读(1353) | 评论(0) | 转发(0) |
0

上一篇:C++学习笔记

下一篇:C#网络编程:UDP协议

给主人留下些什么吧!~~