MFC 学习笔记

一、常用工具

按键 静态框 弹出框 文本框 下拉框 选择框
Button Static-Test Message-Box Edit-Contral Combo-Box Check-Box

二、工具使用

1、弹出框 (MessageBox)

MessageBox(_T("Version 1.0"));     //只显示内容

MessageBox(_T("Version 1.0"), _T("SerialPort"), MB_OK);     //显示内容和标题

2、文本框 (Edit Contral)

(1)多行显示、回车换行、滑动条

属性 Multiline = True              //多行

属性 Want Return = True            //Enter键换行

属性 Vertical Scroll = True        //如果需要垂直滚动条的话将

属性 Horizontal Scroll = True      //需要水平滚动条的话将

(2)输入、输出

//从文本框获取输入
CString temp;
val.GetWindowText(temp);             


//输出到文本框
CString temp;
temp += "abc";
val.SetWindowText(_T("abc"));
val.SetWindowText(temp);


//追加输出
val.ReplaceSel("abc");

3、下拉框 (Combo box)

(1) 下拉列表 and 默认值

// TODO: 在此添加额外的初始化代码

int BaudArr[] = { 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 56000, 57600, 115200 };

CString temp;

//波特率下拉列表
for (int i = 0; i < sizeof(BaudArr) / sizeof(int); i++)
{
    temp.Format(_T("%d"), BaudArr[i]);
    myBaud.InsertString(i, temp);               //myBaud 是下拉框变量
}

//默认波特率
temp.Format(_T("%d"), 9600);                       
myBaud.SetCurSel(myBaud.FindString(0, temp));

(2) 默认值

myBaud.SetCurSel(i);     //选择下拉列表中的第 i 个

4、选择框 (Check Box)

(1)查看是否选中

if ( BST_CHECKED == IsDlgButtonChecked( IDC_CHECK1 ) )
{
    // 勾选
}
else
{
    //未选中
}

(2)改变选中状态

用API函数CheckDlgButton();  这个函数只是用来改变对话框上的控件

CheckDlgButton(IDC_CHECKBOX1,BST_CHECKED);    //将checkbox设置为选中状态

CheckDlgButton(IDC_CHECKBOX1,BST_UNCHECKED);    //将checkbox设置为非选中状态

用API函数SendMessage()向控件发送BM_SETCHECK 消息

SendMessage(hwnd_checkbox,BM_SETCHECK ,BST_CHECKED,0);    //将checkbox设置为选中状态

SendMessage(hwnd_checkbox,BM_SETCHECK ,BST_UNCHECKED,0);     //将checkbox设置为非选中状态

三、知识点

1、连接两个 CString字符串

CString s2 = s1 + _T("\r\n");      //添加回车

2、_T() : 字符串 to Unicode编码

_T("")是一个宏,定义于tchar.h文件中。作用是将字符串转换为Unicode编码。

在C语言中普通的字符串使用ANSI进行文字处理。也就是常见的双引号字符串。但是由于数据类型的局限性,ANSI的字符串不能保存全部语言。比如说中文。

例如:char *str = "ABC";

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。可以保存中文等。可以使用_T("ABC")或者L"ABC"的方式表示UNICODE编码。

_T()和L也存在区别。
L是一定使用UNICODE进行编码。
_T()会根据编译条件的设置,选择不同的编码格式。

3、初始化

(1)在初始化函数中:默认的状态控件状态、给变量初始化。如,选择框默选中、文本框默认文本。

(2)全局变量:通常放在xxxDlg.cpp函数前面定义

4、格式化输出

(1)数字 转 进制字符串

CString temp;

int a = 10;

temp.Format(_T("%d"), a);     //数字 转 10进制字符串

temp.Format(_T("%x"), a);     //数字 转 16进制字符串

my_textBox.SetWindowText(temp);      //输出到 my_textBox 控件变量对应的文本框中

MessageBox(temp);                    //弹框弹出

(2)进制字符串 转 数字

如,L"61 62 63 44"  -->  L"abcd"

CString temp;
my_Recvtext.GetWindowText(temp);       //取数字串 
int n = temp.GetLength();              //长度

string s;
for(int i=0; i>hc;                             //字符流 转 数字
    temp.Format(_T("%c"), hc);          //16进制数字 转 字符
    my_Sendtext.ReplaceSel(temp);       //追加输出
}

四、参考链接

1、Microsoft 官方资料

https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.combobox.findstring?redirectedfrom=MSDN&view=netframework-4.8#System_Windows_Forms_ComboBox_FindString_System_String_System_Int32_

2、https://blog.csdn.net/qq_34849157/article/details/82257920

3、https://bbs.csdn.net/topics/461774

4、https://blog.csdn.net/self_mind/article/details/50781233

你可能感兴趣的:(MFC)