- windows 消息机制
- MFC基于微软windows平台一种应用程序开发
- 学习了几个控件:分别是 静态标签,编辑框,下拉列表(Combo Box),按钮(button) 还有树形控件(Tree)
- 静态标签(Static Text)(变量:st):Caption “标题” 用于修改文字 代码片段/
//这是Control类别写法
st.SetWindowText(TEXT(“要修改的文字”)); //设置标签文字
CString str; st.GetWindowText(str); //获得标签中文字并且给str;
//这是Value类别写法
st = TEXT("你想要的文字"); //设置文字 UpdateData(FALSE); //将值更新到控件中
CString str; str = st; UpdateData(TRUE); //将控件同步到变量中
- 编辑框(Edit)(变量:ed):Ready Only “只读” Password “密码” Align Text “文本对其方式” Muliline “可将文本折成多行” Horizonal Scroll “显示水平滚动条” Vertical Scroll “显示纵向滚动条” 代码片段
//这是Value类别写法
ed = TEXT("你想要的文字"); //设置文字 UpdateData(FALSE); //将值更新到控件中
CString str; str = ed; UpdateData(TRUE); //将控件同步到变量中
//这是Control类别写法
ed.GetWindowText(TEXT("要修改的文字")); //获取edit文字
- 下拉列表:Style “列表风格” 代码片段
//窗口初始化后 void CSelectView::OnInitialUpdate() { CString str[4] = {"a","b","c","d"}; //字符串数组 for(int i = 0;i<4;i++) { lb.AddString(str[i]); //向下拉列表按顺序依次加入列表中 } lb.SetCurSel(1); //将列表默认索引第一个 }
//当下拉列表里面的项改变时触发事件 void CSellDlg::OnCbnSelchangeCombo1() { int index = lb.GetCurSel(); //首先获取当前的索引 CString name; lb.GetLBText(index,name); //将索引的内容传递给name中 MessageBox(name); //最后弹出来点击的项 }
- 树形控件:Has Butoon “显示+号按钮” 代码片段
//初始化 void CSelectView::OnInitialUpdate() { CImageList img_list; //图片合集 HICON icons[2]; //创建图片资源数组 icons[0] = AfxGetApp()->LoadIconW(图片id1); icons[1] = AfxGetApp()->LoadIconW(图片id2); img_list.Create(40,40,ILC_COLOR32,2,2); //Create(宽,高,类型,张数,张数); for(int i = 0;i<2;i++) { img_list.Add(icons[i]); //将他们加入图片集合中 } tree.SetImageList(&img_list,TVSIL_NORMAL); //设置树形控件图标 HTREEITEM root = tree.inserItem(TEXT("根节点"),0,0,NULL); //设置树形图根节点 HTREEITEM chid = tree.inserItem(TEXT("子节点"),1,1,root); //因为要做根节点下的子节点所以后面NULL要变为root }
自定义消息 格式
//自定义消息 #define NM_A (WM_USER+100) #define NM_B (WM_USER+101) #define NM_C (WM_USER+102) //这是声明定义 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_MESSAGE(NM_A, OnMyChange) ON_MESSAGE(NM_B, OnMyChange) ON_MESSAGE(NM_C, OnMyChange) ON_MESSAGE(NM_D, OnMyChange) ON_MESSAGE(NM_E, OnMyChange) END_MESSAGE_MAP() //这是发送消息函数 ::PostMessage(AfxGetMainWnd()->GetSafeHwnd(), NM_A, (WPARAM)NM_A, (LPARAM)0);.... afx_msg LRESULT OnMyChange(WPARAM wParam, LPARAM lParam); // 声明 自定义消息处理函数 //具体化处理消息函数 LRESULT CMainFrame::OnMyChange(WPARAM wParam, LPARAM lParam) { //如果是NM_A if(wParam==NM_A) { MessageBox(TEXT("A消息")); } }
看B站黑马MFC教学视频知识总结(上)
最新推荐文章于 2020-09-08 17:55:46 发布