对话框操作

本文介绍了如何在Windows应用程序中进行对话框操作,包括创建菜单项,新建对话框并添加类,以及在对话框中添加控件。重点讲解了对话框控件的访问方法,如GetDlgItemText、SetDlgItemText、GetDlgItemInt等,并给出了使用SendDlgItemMessage函数获取和设置控件值的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// TestDlg.cpp : 实现文件
//


#include "stdafx.h"
#include "MY.h"
#include "TestDlg.h"
#include "afxdialogex.h"




// CTestDlg 对话框


IMPLEMENT_DYNAMIC(CTestDlg, CDialogEx)


CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(IDD_DIALOG1, pParent)
, m_num1(0)
, m_num2(0)
, m_num3(0)
{


//  m_num1 = 0;
}


CTestDlg::~CTestDlg()
{
}


void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
//  DDX_Control(pDX, IDC_EDIT1, m_num1);
//  DDX_Control(pDX, IDC_EDIT2, m_num2);
//  DDX_Control(pDX, IDC_EDIT3, m_num3);
//  DDX_Control(pDX, IDC_EDIT1, m_num1);
//  DDX_Control(pDX, IDC_EDIT2, m_num2);
//  DDX_Control(pDX, IDC_EDIT3, m_num3);
DDX_Text(pDX, IDC_EDIT1, m_num1);
DDX_Text(pDX, IDC_EDIT2, m_num2);
DDX_Text(pDX, IDC_EDIT3, m_num3);
DDX_Control(pDX, IDC_EDIT1, m_edit1);
DDX_Control(pDX, IDC_EDIT2, m_edit2);
DDX_Control(pDX, IDC_EDIT3, m_edit3);
}




BEGIN_MESSAGE_MAP(CTestDlg, CDialogEx)
ON_STN_CLICKED(IDC_NUMBER1, &CTestDlg::OnClickedNumber1)
//ON_BN_CLICKED(IDC_BUTTON1, &CTestDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_ADD, &CTestDlg::OnBnClickedAdd)
// ON_EN_CHANGE(IDC_EDIT3, &CTestDlg::OnEnChangeEdit3)
END_MESSAGE_MAP()




// CTestDlg 消息处理程序




void CTestDlg::OnClickedNumber1()
{
// TODO: 在此添加控件通知处理程序代码
CString str;
if (GetDlgItem(IDC_NUMBER1)->GetWindowText(str), str == "Number1")
{
GetDlgItem(IDC_NUMBER1)->SetWindowText("数字1");
}
else
{
GetDlgItem(IDC_NUMBER1)->SetWindowText("Number1");
}
}




void CTestDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
}




void CTestDlg::OnBnClickedAdd()
{
// TODO: 在此添加控件通知处理程序代码
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_s(num3, ch3, 10);


SetDlgItemText(IDC_EDIT3,ch3);/*

------------------------------------------------------------------------------

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_s(num3, ch3, 10);


SendDlgItemMessage(IDC_EDIT3, WM_SETTEXT, 0, (LPARAM)ch3);

------------------------------------------------------------------------------------------


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);

UpdateData();
m_num3 = m_num1 + m_num2;
UpdateData(FALSE);




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_s(num3, ch3, 10);

m_edit3.SetWindowTextA(ch3);*/


//int num1, num2, num3;
//char ch1[10], ch2[10], ch3[10];


//::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd, WM_GETTEXT, 10, (LPARAM)ch1);
//GetDlgItem(IDC_EDIT1)->SendMessage(WM_GETTEXT, 10, (LPARAM)ch1);
//::SendMessage(m_edit1.m_hWnd, 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_s(num3, ch3, 10);


//m_edit3.SendMessage(WM_SETTEXT, 0, (LPARAM)ch3);


}

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1、在菜单项新增一个菜单,更改ID

2、新建一个对话框,设置ID,给对话框添加类

3、在View类中添加一个函数来创建窗口,并将ID加入,窗口一般为模态窗口

4、在窗口中增加部件,工具箱中寻找,同时可使用增加成员变量,空间变量等方式实现

注:

模态对话框用DoModal实现

非模态对话框用Create成员函数实现,但最后得调用showwindow显示


判断是否已经创建窗口可增加判断调用一个成员变量(静态变量)来判断,或者CWnd派生类中都自带一个m_hwnd句柄成员变量进行判断


静态文本框处理

GetDlgText()-------获取指定控件指针

GetDlgItem(IDC_NUMBER1)->GetWindowText(str)


atoi将字符串内容转化为整型


GetDlgItenText()   获取控件文本

GetDlgItemInt     获取控件文本,并返回整型


或者定义整型变量跟ID关联,直接相连,但是使用需使用UpdateData函数


对话框控件访问七种方式:

1、GetDlgItem()->Get(Set)WindowText();(获取控件指针,,,此方法最常用)

2、GetDlgItemText()/SetDlgItemText()                 直接获取/设置对话框文本

3、GetDlgItemInt()/SetDlgItemInt()    获取和设置一个值

4、将控件和整型变量相关联

5、将控件和控制变量相关联

6、SendMessage()发消息,引用win32的AP函数,也可用CWnd成员函数调用

7、SendDlgItemMessage()直接给对话框子控件发送一个消息




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值