碧桂园.翡翠山:卓为VC——界面/窗口——VC对话框小知识
来源:百度文库 编辑:偶看新闻 时间:2024/04/30 02:52:18
一、对话框属性:
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()中添加消息响应。
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()中添加消息响应。
vc编程——对话框之间传值问题!
【类vc界面】获取一个(对话框)窗口句柄后,把它放入(sizebar)里出异常!!??
VC 界面编程求救
VC对话框的问题
VC 对话框资源
窗口句柄(VC++)
VC编程问题——图标为什么显示不出来?
关于卡特今年的新款——VC-5
VC++ 用户登陆界面源码
vc中如何删除对话框?
vc中如何调用对话框
vc++怎样连接两个对话框
运行一个VC++ 基本对话框
vc 如何关闭当前对话框
vc 对话框按位置显示
关于vc小程序?
vc++小问题?
vc中主界面如何调用登陆窗口??用什么函数什么语句?
如何VC++6.0在窗口客户区中设置按钮,按下按钮弹出对话框?
用vc++进行api编程时怎样实现应用程序只打开对话框而不打开窗口
用VC++制作程序窗口!!
舟--VC窗口的设置
VC的对话框模板中添加控件后,怎样为该控件关联一个变量
用vc++如何做出游戏的界面?