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

关闭窗口

//这是通过类向导自动生成的 如果看不懂推荐去看我的另一篇博客:
//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_第1张图片

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

动态创建CEdit

添加控件类型变量:
C++ MFC操作基础 以及 常用控件 - CEdit_第2张图片
C++ MFC操作基础 以及 常用控件 - CEdit_第3张图片

//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

你可能感兴趣的:(C++,MFC,Android,程序员学,C++)