看B站黑马MFC教学视频知识总结(上)

  1. windows 消息机制
  2. MFC基于微软windows平台一种应用程序开发
  3. 学习了几个控件:分别是 静态标签,编辑框,下拉列表(Combo Box),按钮(button) 还有树形控件(Tree)
  4. 静态标签(Static Text)(变量:st):Caption  “标题”  用于修改文字  代码片段/
  5. //这是Control类别写法
  6. st.SetWindowText(TEXT(“要修改的文字”));        //设置标签文字
  7. CString str;    st.GetWindowText(str);                //获得标签中文字并且给str;
  8. //这是Value类别写法
    st = TEXT("你想要的文字");    //设置文字
    UpdateData(FALSE);          //将值更新到控件中
    CString str;
    str = st;
    UpdateData(TRUE);    //将控件同步到变量中
  9. 编辑框(Edit)(变量:ed):Ready Only “只读” Password “密码” Align Text “文本对其方式” Muliline “可将文本折成多行” Horizonal Scroll “显示水平滚动条” Vertical Scroll “显示纵向滚动条” 代码片段
  10. //这是Value类别写法
  11. ed = TEXT("你想要的文字");    //设置文字
    UpdateData(FALSE);          //将值更新到控件中
    CString str;
    str = ed;
    UpdateData(TRUE);    //将控件同步到变量中

  12. //这是Control类别写法
  13. ed.GetWindowText(TEXT("要修改的文字"));           //获取edit文字
  14. 下拉列表:Style  “列表风格”   代码片段
  15. //窗口初始化后
    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);     //最后弹出来点击的项
    }
  16. 树形控件:Has Butoon “显示+号按钮” 代码片段
  17. //初始化
    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消息"));
     }
    }


猜你喜欢

转载自blog.csdn.net/z1455841095/article/details/79773179