• MFC对话框控件访问的七种方式


    void CTestDlg::OnButtonAdd() 
    {
    	// TODO: Add your control notification handler code here
    	//动态创建按钮
    /*	if ( FALSE == m_bIsCreate )  // 亦可以通过静态变量 static BOOL bIsCreate = FALSE;
    	{
    		m_btn.Create("Lee", BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD, CRect(0,0,100,65), this, 111);
    	//	m_btn.ShowWindow(SW_NORMAL);//若上句没有WS_VISIBLE,就加上showWindow
    		m_bIsCreate = TRUE;
    	}
    	else
    	{
    		m_btn.DestroyWindow();
    		m_bIsCreate = FALSE;
    	}
    */
    /*	//最简单的动态创建按钮
    	if (!m_btn.m_hWnd) //窗口句柄不为空
    	{
    		m_btn.Create("Lee", BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD, CRect(0,0,100,65), this, 111);
    	}
    	else
    	{
    		m_btn.DestroyWindow(); // 会自动将 m_hWnd = NULL
    	}
    */
    	//实现 点击Add按钮,将 编辑框1的数 + 编辑框2 的数  放到编辑框3中
    /*	int num1, num2, num3;
    	char ch1[10], ch2[10], ch3[10];
    	GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10); //将编辑框的文本存到ch1中,最大10个字符
    	GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10);
    	
    	num1 = atoi(ch1); // 将字符串转换为整型
    	num2 = atoi(ch2);
    	num3 = num1 + num2;
    	itoa(num3, ch3, 10); // 将整数num3 转换到ch3中,以十进制的方式
    	
    	GetDlgItem(IDC_EDIT3)->SetWindowText(ch3); // 将ch3字符数值,存到编辑框3中
    */
    /*	//也可以
    	int num1, num2, num3;
    	char ch1[10], ch2[10], ch3[10];
    	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);
    */
    /*	//还可以
    	int num1, num2, num3;
    	num1 = GetDlgItemInt(IDC_EDIT1); // 直接获得编辑框中的数值
    	num2 = GetDlgItemInt(IDC_EDIT2);
    
    	num3 = num1 + num2;
    
    	SetDlgItemInt(IDC_EDIT3, num3);
    */
    /*	//最简单的一种,用classwizard 关联 控件与成员变量(以值)
    	UpdateData();
    	m_num3 = m_num2 + m_num1;
    	UpdateData(FALSE);
    */
    /*	//第五种方式  用classwizard 关联 控件与成员变量(以控件)。与第一种相似
    	int num1, num2, num3;
    	char ch1[10], ch2[10], ch3[10];
    
    	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);
    */
    /*	//第六种方式,发送消息
    	int num1, num2, num3;
    	char ch1[10], ch2[10], ch3[10];
    
    	//::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd, WM_GETTEXT, 10, (LPARAM)ch1);
    	//::SendMessage(m_edit1.m_hWnd, WM_GETTEXT, 10, (LPARAM)ch1);
    	//GetDlgItem(IDC_EDIT1)->SendMessage(WM_GETTEXT, 10, (LPARAM)ch1);
    	m_edit1.SendMessage(WM_GETTEXT, 10, (LPARAM)ch1); //以上四句等价
    	m_edit2.SendMessage(WM_GETTEXT, 10, (LPARAM)ch2);
    
    	num1 = atoi(ch1); // 将字符串转换为整型
    	num2 = atoi(ch2);
    	num3 = num1 + num2;
    	itoa(num3, ch3, 10);
    
    	m_edit3.SendMessage(WM_SETTEXT, 10, (LPARAM)ch3);
    */
    	//第七种方式
    	int num1, num2, num3;
    	char ch1[10], ch2[10], ch3[10];
    
    	SendDlgItemMessage(IDC_EDIT1, WM_GETTEXT, 10, (LPARAM)ch1);//直接给子控件发消息
    	SendDlgItemMessage(IDC_EDIT2, WM_GETTEXT, 10, (LPARAM)ch2);
    
    	num1 = atoi(ch1); // 将字符串转换为整型
    	num2 = atoi(ch2);
    	num3 = num1 + num2;
    	itoa(num3, ch3, 10);
    
    	SendDlgItemMessage(IDC_EDIT3, WM_SETTEXT, 10, (LPARAM)ch3);
    	SendDlgItemMessage(IDC_EDIT3, EM_SETSEL, 0, -1); //复选所有的文本
    	//GetDlgItem(IDC_EDIT3)->SetFocus(); //将焦点聚到edit3. 或者 
    	m_edit3.SetFocus();
    }
    

      

    常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。

    昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。
  • 相关阅读:
    那些年读过的书《Java并发编程实战》和《Java并发编程的艺术》三、任务执行框架—Executor框架小结
    那些年读过的书《Java并发编程实战》二、如何设计线程安全类
    那些年读过的书《Java并发编程实战》一、构建线程安全类和并发应用程序的基础
    重读《深入理解Java虚拟机》七、探究Java内存模型
    重读《深入理解Java虚拟机》六、Java泛型 VS C#泛型 (伪泛型 VS 真泛型)
    重读《深入理解Java虚拟机》五、虚拟机如何执行字节码?程序方法如何被执行?虚拟机执行引擎的工作机制
    重读《深入理解Java虚拟机》四、虚拟机如何加载Class文件
    input 文本框禁止输入表情
    win7右下角无线网图标显示未连接,但是实际上已连接上,也能上网
    history.back(-1)和history.go(-1)的区别
  • 原文地址:https://www.cnblogs.com/htj10/p/9346411.html
Copyright © 2020-2023  润新知