学习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...

poppler 心得 windows下的mfc应用和非mfc

poppler基于XPDF是一个免费开源的软件,用于显示PDF文件,应用起来比XPDF要难些 poppler现在官网的最新版本为0.15多了,我现在说得是0.12.4这个版本,因为这个版本有wi...

XPDF 心得 windows下的mfc应用和非mfc

XPDF是一个免费开源的软件,用于显示PDF文件,应用起来有些难度 xpdf现在官网的最新版本为xpdf3.02,20101026查询 前面有一篇文章,介绍了xpdf的编译,我就不废话...

poppler 心得 windows下的mfc应用和非mfc

poppler基于XPDF是一个免费开源的软件,用于显示PDF文件,应用起来比XPDF要难些 poppler现在官网的最新版本为0.15多了,我现在说得是0.12.4这个版本,因为这个版本有wi...

孙鑫VC学习笔记:第三讲 MFC应用程序框架

MFC框架 -------------------------------------------------------------------------- CTestApp theApp; ...

MFC应用程序设计(第二版)学习笔记

第一章, Windows应用开发基础 基本概念 windows API函数按功能大体分为以下: 窗口管理函数 WUI 图形设备管理函数 GUI 系统服务函数 SUI   早期开发使用软件...

MFC学习笔记1_MFC应用程序架构

最近开始了新的项目,要求在现有项目基础上进行二次开发以及改进。现有项目使用vc++6.0, MFC开发。 MFC的本质就是一个包含许多微软已经定义好的对象的类库,虽然不同的程序功能上千差万别,但本质上...

c++的mfc应用

  • 2013-09-25 20:54
  • 905KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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