基础控件的使用
- 创建和初始化
 - 消息的响应
 - 控制函数
 
按钮
- 使用
CButton来绑定按钮控件. 一般不需要初始化 - 消息的响应 : 只有按钮被单击的消息.
 - 控制函数 : SetWindowText来设置按钮的标题.
 
单选框
- 使用
CButton绑定单选框控件 . - 初始化
- 单选框一般都是分组. 同一组的单选框的选中状态是互斥的.
 - 需要将一组单选框中的第一个按钮的分组属性设置为True

分组属性只能给第一个控件设置 - 单选框也是按钮中的一种, 也有被点击的消息,响应方式和按钮一样.
 - 操作函数:
- 单选框控件绑定了CButton类的变量的话, 可以使用GetCheck和SetCheck来获取和设置单选框的选中状态.
 
 - 单选框控件绑定了CButton类的变量的话, 可以使用GetCheck和SetCheck来获取和设置单选框的选中状态.
 
 - 单选框控件绑定了int类型的变量的话, int变量的值是一个分组中的单选框的序号.  使用UpdateData的时候,int类型的值是几,分组中的第几个单选框就被选中.
 - 只需将分组中的第1个单选框添加int类型的变量即可.
 - 修改了int类型变量的值在UpdateData的时候, MFC会自动操作同一分组内的其它单选框.
 
多选框
- 初始化
 - 消息 : 和按钮一样.
 - 操作函数:
- 绑定了CButton类型的变量, 可以GetCheck和SetCheck
 - 帮定了以值类型的, 可以使用UpdateData来获取和修改选中状态.
 
 
编辑框
- 初始化 : 在资源编辑视图中的属性栏设置.
 - 消息 : 编辑框文本被修改: EN_CHANGE
 - 操作函数:
- 绑定了CEdit类型变量: ```c // 设置编辑框的最大文本个数 m_edit.SetLimitText(1000); // 设置是否是只读 m_edit.SetReadOnly(0); // 密码风格的时候,显示的字符,默认是’*’ m_edit.SetPasswordChar(‘@’); // 获取文本 CString buff; m_edit.GetWindowText(buff);
 
 
// 获取一共有几行 DWORD dwLineCount= m_edit.GetLineCount(); // 滚到到指定行. m_edit.LineScroll(dwLineCount);
<a name="212779d4"></a>## 列表框1. 初始化2. 消息:1. SEL_CHANGE : 当前选中项被修改3. 操作函数1. 控件类型绑定(CListBox):1. AddString - 将一行字符串添加到列表框.2. ResetContent - 清空所有项3. GetCurSel - 获取当前选中项的下标4. GetText - 获取指定下标的文本5. 更多函数可以F1 CListBox类查看帮助文档.<a name="d5ddc4f3"></a>## 下拉框(组合框)下拉框也称为组合框, 它是编辑框和列表框的组合1. 初始化 : 有一个列表是否排序的属性2. 消息 : ON_CBN_SELENDCANCEL - 当前选中项改变了3. 操作函数1. AddString - 向列表框添加文本2. GetCurSel - 获取列表框的当前选中项3. GetLBText - 获取列表框的指定行的文本4. ResetContent - 清空列表框的所有节点5. SetCurSel - 设置列表框的当前选中项6. SetEditSel - 设置编辑框的文本<a name="1af29b1f"></a>## 静态文本<a name="14d34236"></a>### 标签一般不需要绑定变量, 不需要响应消息. 标签只是一个文本提示而已.如果想要动态修改标签的文本, 可以先得到标签控件的窗口句柄, 使用SetWindowText来修改即可.<a name="0d19ffac"></a>### 图片控件1. 初始化1. 修改资源ID(类向导不会自动静态文本类的控件的资源ID)2. 将type属性修改成bitmap3. 将center image改为true , 图片控件不能缩放要显示的图片, 如果图片比控件大, 控件会自动将大小修改成和图片一样大. 该属性设置为true之后, 控件大小就不会自动跟随图片大小, 而是使用固定大小, 并只只显示图片的部分内容.2. 消息 : 不需要处理3. 操作函数:1. 绑定了控件类型(CStatic)4. 给图片控件设置图片1. 使用资源1. 先将一张位图添加到资源中2. 在图片控件的Image属性中填写位图的资源ID<br />3. 调用CStatic.SetBitmap函数, 将位图的资源句柄设置进去.```c// 加载位图,得到资源句柄HBITMAP hBitmap =LoadBitmap(AfxGetInstanceHandle(),(TCHAR*)IDB_BITMAP1);m_pic.SetBitmap(hBitmap);
2.使用磁盘中的图片文件
CImage img;img.Load(L"位图2.bmp");pic.SetBitmap(img);
3. 加载GIF动图1. 默认的CStatic类不支持这个功能2. 需要自定义CStatic类(网上有CPictureEx类)3. 添加图片控件, 添加变量的时候, 变量的类型使用CPictureEx类4. 在项目中导入CPictureEx类的源码5. 在对话框初始化函数中. 使用CPictureEx.Load函数加载GIF图片6. 使用CPictureEx.Draw函数来开始绘制GIF图片
滑块
- 初始化
- 设置水平或垂直的风格

 - 设置滑块的取值范围
- SetRange();
 
 
 - 设置水平或垂直的风格
 - 消息 :
- 如果滑块是水平风格, 向父窗口发送WM_HSCROLL消息
 - 如果滑块是垂直风格, 向父窗口发送WM_VSCROLL消息
 
 - 操作函数
- 控件类型绑定(CSliderCtrl)
- 初始化范围的函数:SetRange
 - 获取当前位置:GetPos
 - 设置当前位置:SetPos
 
 
 - 控件类型绑定(CSliderCtrl)
 
进度条
- 进度条实际就是一个在界面上修改位置的滑块,但是通过SetPos来修改进度条的进度.
 - 进度条和滑块外观是不一样的, 但也有水平和垂直
 - 操作函数和滑块一模一样
- 通过SetRange 设置范围
 - 通过SetPos来设置位置
 - 通过GetPos来获取当前的位置
 
 
栏
菜单栏
- 添加一个菜单资源
 - 使用CMenu来加载菜单
 - 在OnInitDialog函数中使用SetMenu函数来设置程序的菜单栏
 
// 加载菜单m_menu.LoadMenu(IDR_MENU1);// 设置菜单栏SetMenu(&m_menu);// m_menu类型是CMenu ;
菜单栏的消息响应:
弹出菜单
- 不能弹出根菜单
 
状态栏
// 2. 设置指示器的IDUINT ids[] = { 1000,1001 };m_statusBar.SetIndicators(ids, 2);// 3. 设置面板的宽度m_statusBar.SetPaneInfo(0, 0, 0, 120);m_statusBar.SetPaneInfo(1, 1, 0, 80);// 4. 设置面板的文本m_statusBar.SetPaneText(0, L"程序启动完毕");m_statusBar.SetPaneText(1, L"哈哈哈");
还需要在WM_SIZE的消息中调用函数来自动修改状态栏的位置
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST, 0);
工具栏
加载:
m_toolBar.Create(this);m_toolBar.LoadToolBar(IDR_TOOLBAR1);
响应点击消息
- 先得到工具栏按钮的ID:
 - 响应WM_COMMAND消息
 - 在wParam保存就是按钮ID`
 
- 先得到工具栏按钮的ID:
 



