MFC(五)——对话框编程
来源:互联网 发布:淘宝美工与运营 编辑:程序博客网 时间:2024/06/01 07:39
模态与非模态对话框的创建
- 模态
CTestNew dlg1; dlg1.DoModal();
- 非模态
CTestNew *pDlg1 = new CTestNew(); pDlg1->Create(IDD_DIALOG1,this); pDlg1->ShowWindow(SW_SHOW);
对话框数据获取和显示(计算器为例)
- 方法一
GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10); GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10); num1 = atoi(ch1); num2 = atoi(ch2); num3 = num1 + num2; itoa(num3,ch3,10); GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);
- 方法二
GetDlgItemText(IDC_EDIT1,ch1,10); GetDlgItemText(IDC_EDIT2,ch2,10); num1 = atoi(ch1); num2 = atoi(ch2); num3 = num1 + num2; itoa(num3,ch3,10); SetDlgItemText(IDC_EDIT3,ch3);
- 方法三
num1 = GetDlgItemInt(IDC_EDIT1); num2 = GetDlgItemInt(IDC_EDIT2); num3 = num1 + num2; SetDlgItemInt(IDC_EDIT3);
- 方法四
UpdateData(); m_num3 = m_num1 + m_num2; UpdateDate(FALSE);
- 方法五
m_edit1.GetWindowText(ch1,10); m_edit2.GetWindowText(ch2,10); num1 = atoi(ch1); num2 = atoi(ch2); num3 = num1 + num2; itoa(num3,ch3,10); m_edit3.SetWindowText(ch3,10);
- 方法六
::SendMessage(GetDlgItem(IDC_EDIT1)->m_hwnd,WM_GETTEXT,10,(LPARAM)ch1);
窗口的扩展和收缩
- Z-order
窗口的z次序表明了重叠窗口堆中窗口的位置,这个窗口堆是按一个假象的轴定位的,这个轴就是从屏幕向外伸展的Z轴。Z次序最上面的窗口覆盖所有其它的窗口,Z次序最底层的窗口被所有其它的窗口覆盖。应用程序设置窗口在Z次序中的位置是通过把它放在一个给定窗口的后面,或是放在窗口堆的顶部或底部。
Windows系统管理三个独立的Z次序——一个用于顶层窗口、一个用于兄弟窗口,还有一个是用于最顶层窗口。最顶层窗口覆盖所有其它非最顶层窗口,而不管它是不是活动窗口或是前台窗口。应用程序通过设置WS_WX_TOPMOST风格创建最顶层窗口。 - 兄弟窗口
共享同一个父窗口的多个子窗口叫兄弟窗口。 - 前台窗口和后台窗口
在Windows系统中,每一个进程可运行多个线程,每个线程都能创建窗口。
创建正在使用窗口的线程称为前台线程,这个窗口就称之为前台窗口。所有其它的线程都是后台线程,由后台线程所创建的窗口叫后台窗口。
代码实现
static CRect rectLarge; static CRect rectSmall; if(rectLarge.IsRectNull()) { CRect rectSeparator; GetWindowRect(&rectLarge); GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator); rectSmall.left = rectLarge.left; rectSmall.top = rectLarge.top; rectSmall.right = rectLarge.right; rectSmall.bottom = rectSparator.bottom; } if("收缩<<" == str) { SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Weight(), SWP_NOMOVE|SWP_NOZORDER); } else { SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Weight(), SWP_NOMOVE|SWP_NOZORDER); }
- 实现按回车焦点转移
WNDPROC prewProc; LRESULT CALLBACK FlamingProc( //WndProc名称可自由定义 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { if(uMsg == WM_CHAR && wPARAM = 0x0d) { //::SetFocus(::GetNextWindow(hwnd,GW_HWNDNEXT)); //SetFocus(::GetWindow(hwnd,GW_HWNDNEXT)); //SetFocus(::GetNextDlgTabItem(::GetParent(hwnd),hwnd,FALSE)); return 1; } else { return prewProc(hwnd,uMsg,wParam,mParam); } } BOOL CTestDlg::OnInitDialog() { preProc = (WNDPROC)SetWindowLong(GetDlgItem(IDC_EDIT1) ->m_hWnd,GWL_WNDPROC,(LONG)FlamingProc); }
0 0
- MFC(五)——对话框编程
- VS2010/MFC编程入门之五(对话框:创建对话框模板和修改对话框属性)
- VS2010/MFC编程入门之五(对话框:创建对话框模板和修改对话框属性)
- VS2013/MFC编程入门之五(对话框:创建对话框模板和修改对话框属性)
- MFC学习笔记之五—————对话框编程及控件初步操作
- MFC学习笔记之五—————对话框编程及控件的操作
- VS2010&MFC对话框编程(2)——对话框种类(模态/非模态对话框)
- VS2010/MFC入门编程五(对话框:模态对话框的弹出过程)
- MFC第七课——对话框编程
- MFC——弹出对话框编程问题
- VS2010&MFC对话框编程(1)——对话框控件简介
- VS2010&MFC对话框编程(3)——属性页对话框
- VS2010&MFC对话框编程(4)——通用对话框
- VS2013/MFC编程基础——对话框的编程
- MFC—消息对话框
- MFC 编程——》如何关联对话框和菜单
- MFC对话框编程笔记(一)
- MFC简易对话框编程(一)
- maven依赖管理和生命周期
- 243_onMeasure方法设置宽高相等
- [bzoj2946]公共串
- 《React-Native系列》32、 基于Fetch封装HTTPUtil工具类
- 【回归分析】说明
- MFC(五)——对话框编程
- C51中的内存单元与位地址
- leetcode:single-number,single-number ii
- java旅行--第七站--springAOP的小例子
- 244_Math.Random使用
- day 14 Python Css padding
- java中的线程锁
- uvaLive 3942 Remember the Word 字典树
- 教师的免费公寓和博士的安家费