欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++ MFC操作基础 以及 常用控件 - CEdit

程序员文章站 2022-04-27 08:11:06
...

关闭窗口

//这是通过类向导自动生成的 如果看不懂推荐去看我的另一篇博客:
//https://blog.csdn.net/qq_20330595/article/details/82382480
void NewDailog::OnClickedSeeYou()
{
    //关闭程序
    //DestroyWindow();
    //AfxGetMainWnd()->SendMessage(WM_CLOSE);
    //关闭对话框
    //this->EndDialog(0);
    //发出WM_QUIT消息,结束应用程序
    //PostQuitMessage(0);               
}

模态和非模态:
1.前者弹窗不能操作父界面.
2.后者弹窗可以同时操作.

代码:

    模态 弹窗
    NewDailog newDailog;
    newDailog.DoModal();
    非模态 弹窗
    NewDailog *newDailog = new NewDailog();
    newDailog->Create(IDD_NEW_DIALOG, this);
    newDailog->ShowWindow(SW_SHOW);

获取/修改CEdit(EditText)t的文本内容
代码:

//VC++的String 参考:https://www.cnblogs.com/MakeView660/p/6072591.html
    CString str;
//GetDlgItem:获取控件(findViewById) 
//IDC_SHOW_EDIT:ID
//GetWindowText:getText(); 等同于String str = getText();
//SetWindowTextL:setText();
if (GetDlgItem(IDC_SHOW_EDIT)->GetWindowText(str), str == "Number1:")
    GetDlgItem(IDC_SHOW_EDIT)->SetWindowText(_T("数值1:"));
else
    GetDlgItem(IDC_SHOW_EDIT)->SetWindowText(_T("Number1:"));

忽略警告

#pragma warning(suppress : 4996)

将两个Edit内容相加

// TODO: 在此添加控件通知处理程序代码
    int num1, num2, num3;
    //VC++的新String对象
    CString  c1, c2, c3;

    GetDlgItem(IDC_SHOW_EDIT)->GetWindowText(c1);
    GetDlgItem(IDC_TEXTVIEW)->GetWindowText(c2);
    //_ttoi:API 功能:String to int 
    num1 = _ttoi(c1);
    num2 = _ttoi(c2);
    num3 = num1 + num2;

    CString str;
    //字符串格式化
    str.Format(_T("%d"), num3);
    //setText
    SetDlgItemText(IDC_TEXTVIEW, str);

添加文本内容修改事件(addTextWatcher)
C++ MFC操作基础 以及 常用控件 - CEdit

//IDC_SHOW_EDIT :ID
//OnEnChangeShowEdit调用函数
ON_EN_CHANGE(IDC_SHOW_EDIT, &NewDailog::OnEnChangeShowEdit) 

动态创建CEdit

添加控件类型变量:
C++ MFC操作基础 以及 常用控件 - CEdit
C++ MFC操作基础 以及 常用控件 - CEdit

//NewDailog的中被实例化(注意这里C++ 就已经实例化了)
// 文本框的额外变量
CStatic newVariable;
//实现方法DoDataExchange中 加入该变量,对你没看错,第二个参数 IDC_TEXTVIEW
//指的就是IDC_TEXTVIEW这个文本框 也就是为IDC_TEXTVIEW文本框分配一个变量名
void NewDailog::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_TEXTVIEW, newVariable);
}

上面我们为IDC_SHOW_EDIT添加了addTextWatcher事件,现在我们又为IDC_TEXTVIEW添加了全局变量名,那我们可以做一个IDC_TEXTVIEW随IDC_SHOW_EDIT同步的案例。
代码:

void NewDailog::OnEnChangeShowEdit()
{
    // TODO:  如果该控件是 RICHEDIT 控件,它将不
    // 发送此通知,除非重写 CDialogEx::OnInitDialog()
    // 函数并调用 CRichEditCtrl().SetEventMask(),
    // 同时将 ENM_CHANGE 标志“或”运算到掩码中。

    CString  c1;
    GetDlgItem(IDC_SHOW_EDIT)->GetWindowText(c1);
    //和SetWindowText写法不同 都是设置文本:setText
    //SetDlgItemText(IDC_TEXTVIEW, str);
    newVariable.SetWindowText(c1);
}

demo下载地址
https://download.csdn.net/download/qq_20330595/10649715