黄皮书第七章总结_对话框(咦)
来源:互联网 发布:我心伤悲 莫知我哀对句 编辑:程序博客网 时间:2024/05/02 06:12
1、模态对话框的对象可以是一个局部对象;其创建主要是一个DoModal()即可解决
2、非模态对话框的创建较为特殊
①、首先需要该对话框的对象是一个全局变量,否则会在函数执行完成之后被析构,导致对话框无法显示
{也可以定义为指针变量,在堆上给这个对象分配内存;然后重载虚函数PostNCDestory()中加入delete this来析构,因为有一个局部函数析构以后,指针无法指向的问题,这种方法较为麻烦}
②、需要ShowWindow(SW_SHOW)出来
//-----------------------------------------分割线------------------------------------------------------------------------------------------------------------------------//
3、一个对话框就是一个类,我们可以在设计完对话框以后,双击该对话框,来建立这个对话框类
4、关于“动态添加按钮”这个功能,代码如下:
1 void CLuoDlg::OnBnClickedAdd() 2 { 3 // TODO: Add your control notification handler code here 4 if(!btn.m_hWnd) 5 { 6 btn.Create("BUTTON ME",BS_PUSHBUTTON,CRect(0,0,100,100),this,123); 7 btn.ShowWindow(SW_SHOWNORMAL); 8 } 9 else10 {11 btn.DestroyWindow();12 }13 }
这里要注意学习的知识点在于:
①、用一个窗体句柄来判断。注意指明其对象,如本例中的btn.m_hWnd
②、按钮的创建方式和Show出来的问题
//-----------------------------------------分割线------------------------------------------------------------------------------------------------------------------------//
5、对于静态控件,如果要编辑的话,① 要修改其ID ② 设置其Notify选项为TRUE
6、本例中比较重要的一个函数就是GetDlgItem(控件ID)来获取相关对话框上控件的指针,同时要注意进一步领会API函数中的Get和Set的作用。一些示例代码如下:
1 void CLuoDlg::OnBnClickedAdd2() 2 { 3 // TODO: Add your control notification handler code here 4 //---------下面是第一种相加的方式-------------------------------- 5 char num1[10]; 6 char num2[10]; 7 char num3[10]; 8 int total,n1,n2,n3; 9 GetDlgItem(IDC_EDIT1)->GetWindowText(num1,10);10 GetDlgItem(IDC_EDIT2)->GetWindowText(num2,10);11 12 n1=atoi(num1);13 n2=atoi(num2);14 // total=n1+n2;15 16 itoa(total,num3,10);17 GetDlgItem(IDC_EDIT3)->SetWindowText(num3);18 19 //--------------下面是第二种方式--------------------------------20 char num1[10],num2[10],num3[10];21 int n3,n2,n1;22 GetDlgItemText(IDC_EDIT1,num1,10);23 GetDlgItemText(IDC_EDIT2,num2,10);24 25 n1=atoi(num1);26 n2=atoi(num2);27 28 n3=n1+n2;29 30 itoa(n3,num3,10);31 SetDlgItemText(IDC_EDIT3,num3);32 //----------下面是第三种方式 控件绑定----------------33 UpdateData();34 m_num3=m_num1+m_num2;35 UpdateData(FALSE);36 }
//-------------------------------------------------------分割线---------------------------------------------------------------------------------------//
7、对于控件焦点顺序的移动问题。即回车使得光标顺序移动的功能,最简要的一种方法总结如下:
在对话框中的“缺省按钮”(即是说这个按钮的Default Button属性为TRUE),中的单击事件中,写如下的代码GetNextDlgTabItem(GetFocus())->SetFocus();,如下可见:
void CLuoDlg::OnBnClickedOk(){ // TODO: Add your control notification handler code here //CDialogEx::OnOK(); }
要注意,此时就算是删掉了这个OK按钮,程序中的焦点依旧会传递,因为它会调用那个虚拟的OnOK函数
- 黄皮书第七章总结_对话框(咦)
- 第七章 15_总结
- 第七章对话框
- 第七章(对话框一)
- mfc 对话框 孙鑫 第七章
- mfc 对话框 孙鑫 第七章
- 第七章_标签文件
- 第七章总结
- 第七章总结
- Java总结第七章
- 【转】第七章 对话框编程(2)
- 第七章:无模式对话框 和 Windows通用对话框类
- 第七章 01_容器API_Collection_1
- 第七章 11_示例_1
- 第七章 12_示例_2
- 第七章 13_泛型_1
- 第七章 14_泛型_2
- 02_第七章_视图控制对象
- 转载:关于轮子,总结:只有自己动手才能学到东西,多尝试
- php中使用异步调用获取数据时出现【由于出现错误 c00ce56e 而导致此项操作无法完成】
- Oracle RAC集群简介
- fork fvck vfork!
- Linux 启动过程详解
- 黄皮书第七章总结_对话框(咦)
- Extjs正则表达式小结
- Ubuntu 10.04 图形安装教程、网络设置、软件源、硬盘安装(超详细)
- STC89C52单片机内部EEPROM驱动
- 【编程语言】Android--错误处理--R.java文件找不到的解决办法
- Eclipse FreeMarker插件
- js省市初始化
- 开发语言选择
- JS数字键盘