学习MFC应用于高校社团助手的心得

原创 2015年07月09日 09:29:40

学习MFC视频

点击打开链接


首先

1.创建窗口一些注意操作

(1)插入窗口Dialog  在Resource view中右键插入,或直接插入Dialog,创建是记得对属性定义,设置ID,格式与生成的一致,字体一般选择宋体 9或10,

(2)建立类向导,输入类名开头以C,结尾以Dlg。

(3)对话框的嵌套打开以一个按钮的消息响应函数为例

   void CPanelDlg::OnSporsonmanage() 
   {
ShowWindow(SW_HIDE);
CSponsorerDlg dlg;
dlg.DoModal();
ShowWindow(SW_SHOW);
  }

这为控制面板窗口中的一个按钮的消息响应函数

   ShowWindow(SW_HIDE);//为在按钮响应后原窗口隐藏

   CSponsorerDlg 为需要打开的窗口类

   dlg.DoModal();为打开窗口的函数

   ShowWindow(SW_SHOW)为显示打开窗口

(4)创建窗口时一般会加入一个打开窗口自动执行的函数,在对应窗口类右键选择 Add Widows Message Handler,选择WM_INITDIALOG。(在许多控件初始化和定义时需要用到)(打开窗口自动执行)

2. 其中用到的控件的用法

(1)列表控件(listctrl)

     【1】属性设定:

                    设置ID,样式:从上到下依次为“报告,顶端,无",右边所有选项不勾选,尤其是自动排列(会打乱你在定义表头时的顺序)

     初始化设定和允许鼠标选中某一行,设置表头

     CDialog::OnInitDialog();//为BOOL CMyDlg::OnInitDialog()函数中必须写在开头的语句

     DWORD dwStyle = m_list1.GetExtendedStyle();
    dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)
    dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
    // dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件
    //dwStyle |= LVS_EX_TRACKSELECT;//鼠标跟随选中
    m_list1.SetExtendedStyle(dwStyle); //设置扩展风格

    其中m_list1为列表控件类型为CListCtrl 的变量

   【2】设置表头

       CListCtrl* pList=(CListCtrl*)GetDlgItem(IDC_LIST1);
pList->InsertColumn(0,"",LVCFMT_CENTER,0);
pList->InsertColumn(1,"学号",LVCFMT_CENTER,90);
pList->InsertColumn(2,"姓名",LVCFMT_CENTER,80);
pList->InsertColumn(3,"班级",LVCFMT_CENTER,90);
pList->InsertColumn(4,"性别",LVCFMT_CENTER,50);
pList->InsertColumn(5,"手机",LVCFMT_CENTER,100);
pList->InsertColumn(6,"联系地址",LVCFMT_CENTER,120);
pList->InsertColumn(7,"qq号",LVCFMT_CENTER,100);
pList->InsertColumn(8,"Email",LVCFMT_CENTER,120);
pList->InsertColumn(9,"入社时间",LVCFMT_CENTER,120);

    

  CListCtrl* pList=(CListCtrl*)GetDlgItem(IDC_LIST1);为调用CListCtrl库中函数必须出现的,其中IDC_LIST1为需要设定列表控件的ID

  pList->InsertColumn(0,"",LVCFMT_CENTER,0);

函数变量 :

第1个是表头的序号(从0开始),

2是表头的标题,

3是设置表头文字的格式LVCFMT_CENTER(居中)(但是第一个表头(序号0)不能居中,会自动左对齐(LEFT  为左, RIGHT为右);

4是为该表头的长度。

【3】利用列表控件输出数据

            pList->InsertItem(i,0);
   pList->SetItemText(i,1,p->num);
   pList->SetItemText(i,2,p->name);
   pList->SetItemText(i,3,p->classname);
   pList->SetItemText(i,4,p->sec);
   pList->SetItemText(i,5,p->telephone);
   pList->SetItemText(i,6,p->address);
   pList->SetItemText(i,7,p->qq);
   pList->SetItemText(i,8,p->Email);
   pList->SetItemText(i,9,p->Time);

第一个要插入用InsertItem其他的用SetItemText函数

其变量

第1个是第几行

2是代表第几列,对应表头

3是该位置的数据变量

【4】点击表头排序函数

在对应窗口类右键选择 Add Widows Message Handler,在右下角选择该列表控件的ID,选择LVN_COLUMNCLICK.

函数定义

void CMyDlg::OnColumnclickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
for(int i=0; i<m_list1.GetItemCount(); ++i) //这个for用来给表中的项添加上索引号  
{   
       m_list1.SetItemData(i,i); 
}  
     DATA data;  
     data.subitem = pNMListView->iSubItem;
     data.plist = &m_list1;   
     m_list1.SortItems(listCompare,(LPARAM)&data);  
*pResult = 0;
}

上面再写回调函数,是

int CALLBACK listCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)   
{   
  DATA * MyData = (DATA*)lParamSort;
int col = MyData->subitem;//点击的列项传递给col,用来判断点击了第几列  
//取项的字符串  
CString strItem1, strItem2;
strItem1 = MyData->plist->GetItemText(lParam1, col);
strItem2 = MyData->plist->GetItemText(lParam2, col);
return strItem1.CompareNoCase(strItem2);
}

点击列表表头排序的原理是:点击那一列遍历该列所有数据,通过回调函数比较两个数据的顺序,这里的回调函数比较的是字符串调用了strItem1.CompareNoCase()函数


(2)组合框(ComboBox)

往其中输入数据

CComboBox* pComb=(CComboBox*)GetDlgItem(IDC_inquirechoice);
pComb->AddString("学号");
pComb->AddString("姓名");
pComb->AddString("班级");
pComb->AddString("性别");

pComb->AddString()为输入数据

组合框控件定义将“分类”取消

将组合框中选中的数据读入

CComboBox* pComb=(CComboBox*)GetDlgItem(IDC_inquirechoice);
CString str,str2;
GetDlgItemText(IDC_inquirechoice,str);
GetDlgItemText(IDC_inquire,str2);

IDC_inquirechoice为组合框的ID;

GetDlgItemText( , )把控件的数据传入,使用的是控件的ID

(3)编辑框

 从编辑框中传入数据可以用GetDlgItemText(),传出数据一般用变量

UpdateData(TRUE);缺省值是TRUE

将编辑框中的数据传到变量中;

UpdateData(FALSE);

将变量中的数据传到编辑框中;

(4)图像控件

定义:选择位图,在工具栏里选择插入,选择Bitmap引入你要的图片资源,在控件属性图像中选择刚刚引入的图像。

(5)高级编辑框(Rich Edit)

添加这一控件首先要在(CMYAPP)就是MFC最初的窗口的唯一的app中的InitInstance中添加AfxInitRichEdit();

如:

BOOL CMyApp::InitInstance()
{
AfxInitRichEdit();//
AfxEnableControlContainer();




#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif


CPanelDlg ld;
if(IDCANCEL==ld.DoModal())
return FALSE;
CMyDlg dlg;
m_pMainWnd = &dlg;
     dlg.DoModal();
return FALSE;
}

定义该控件的变量:类型为:CRichEditCtrl.

为定义该控件字体和颜色

CHARFORMAT df = {sizeof(df)};
df.dwMask = CFM_COLOR|CFM_FACE|CFM_SIZE;
df.yHeight = 256;
strcpy(df.szFaceName,"黑体");
m_graphpath.SetDefaultCharFormat(df);

往控件中输入数据

在每一次输入数据需要写下面的话

        int nLen=m_graphpath.GetWindowTextLength();
m_graphpath.SetSel(nLen,nLen);

输入首行数据

m_graphpath.SetWindowText("现在开始关键路径查找(用事件顺序)\r\n");

\r\n为换行。

m_graphpath.ReplaceSel("起点与终点重合\r\n");

为之后输入数据的函数

(6)按钮控件

使用时需要定义ID,和标题,双击定义按钮的消息响应函数


高校社团助手

失败的作品,不想说太多,放上来凑文章数。 项目文件中需要添加in.txt文件和Map.txt文件。 in文件内容: 5 6 拉赞助 0 采购 0 布置 0 报名 0 运动会开始 0 0 1 0 2 0...
  • s759012193
  • s759012193
  • 2016年09月01日 22:05
  • 187

mfc学习心得一

今天初步学习了mfc的基本知识,在这里我决定开始养成写博客的习惯,一是为了作为学习笔记、二是为了记录自己的一些心情。     今天主要学习了对文本框以及按钮的一些基本的处理,首先要创建一个基于对话框...
  • ECHOSON
  • ECHOSON
  • 2017年10月26日 21:24
  • 60

各种奖学金、社团、证书、竞赛奖项…

一、 国家及校级奖项、称号 国家奖学金—— National Scholarship 国家励志奖学金 National Encouragement scholarship 校一等奖:The Fi...
  • spc923261
  • spc923261
  • 2013年07月23日 19:54
  • 1777

MFC串口调试工具教程

MFC串口调试软件教程 一、测试环境:Windows XP,VC++6.0 二、步骤 Step1:打开VC++6.0集成开发环境,新建基于对话框(Dialog based)的MFCAppWizard(...
  • trailbrazer
  • trailbrazer
  • 2016年05月18日 15:00
  • 3522

VB阶段学习小结及感想

  • Alisawxn
  • Alisawxn
  • 2015年12月25日 09:57
  • 668

VS2013学习笔记之MFC串口调试助手入门

学习如下博文建立自己的串口调试助手: http://blog.csdn.net/a_runing_man/article/details/9947343 其中有几个数据类说明: Vari...
  • sinat_23338865
  • sinat_23338865
  • 2016年08月10日 17:13
  • 2698

VS2010编写的MFC串口程序

刚刚学习MFC串口通讯,调试了一个串口通讯的程序,实现PC机与单片机的串口通讯,能够正常地收发数据。部分源代码如下: // 打开串口函数 void CcommtestDlg::OnBnClicked...
  • u011415222
  • u011415222
  • 2015年08月12日 19:06
  • 3393

Dreamweaver学习心得(2)

这周还是在继续制作予果的网页,所用工具为Dreamweaver,本人纯0基础入门,接下来将这一周的一些心得分享给大家。 打开DW之后新建HTML文件,接着需要建立站点,即是将网站与电脑中的一...
  • youkooo
  • youkooo
  • 2015年10月23日 13:51
  • 1070

社团发现算法分类及简介

相关概念 复杂网络:具有自组织、自相似、吸引子、小世界、无标度中部分或全部性质的网络称为复杂网络。 社团结构:网络中的顶点可以分成组,组内顶点间的连接比较稠密,组间顶点的连接比较稀疏。 算法分类...
  • u012369559
  • u012369559
  • 2017年12月04日 20:38
  • 225

【复杂网络系列】社团发现简介

无论从理论研究还是从实际应用的角度来看,研究网络中的社团结构都是非常重要的,原因如下:1,可以从网络的局部结构上更好地理解节点与边的结构与功能;2.可以以社团为基本单位从中观层次更好地理解整个网络的动...
  • piaoxuefengqi
  • piaoxuefengqi
  • 2014年03月16日 14:45
  • 3379
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习MFC应用于高校社团助手的心得
举报原因:
原因补充:

(最多只允许输入30个字)