C++ MFC学习 (六)

摘要:
由于Microsoft不建议在VS2013及更高版本中使用传统的C/C++库函数scanf、strcpy、sprintf等,因此直接使用这些库函数将提示C4996错误。VS建议使用S的_函数,如scanf_S、strcpy_S。但这些不是标准的C/C++函数。

   由于微软在VS2013 及之后不建议再使用 C/C++ 的传统库函数

  scanf,strcpy,sprintf 等,所以直接使用这些库函数会提示 C4996 错误

  VS建议采用带 _S的函数,如: scanf_s, strcpy_s , 但这些不是标准 C/C++ 函数。要想继续使用此函数,需要添加  _CRT_SECURE_NO_WARNINGS 这个预定义

     添加方法:在项目 -> 属性 -> C/C++ ->预处理器 -> 预处理器定义中添加 _CRT_SECURE_NO_WARNINGS

C++ MFC学习 (六)第1张

设置窗体的图标,需要在MainFram文件下的OnCreate 函数添加,响应创建的消息

//设置窗体图标 参数; 窗口句柄 读取ICon文件
SetClassLong(m_hWnd, GCL_HICON, (LONG)AfxGetApp()->LoadIconW(IDI_ICON_WIN));

窗体标题分为两部分, 左侧和右侧

C++ MFC学习 (六)第2张

设置左侧,即销售管理系统 时,在对应的Doc文件中的OnNewDocument() 函数中添加

//设置标题 左侧
    SetTitle(TEXT("销售管理系统"));

设置右侧,即V 1.0.0 时,在MainFram文件的初始化函数中添加

//设置标题  右侧标题
    SetTitle(TEXT("V 1.0.0"));

设置窗口的位置和大小,在MainFram的初始化函数中

//设置窗口的位置和大小  CWnd::MoveWindow 函数
    MoveWindow(0, 0, 800, 500);
    //设置居中显示
    CenterWindow();

 文件处理:

    对文件进行处理时,可添加 设计文件处理类 CInfoFile

退出当前对话框  可使用  OnClose() 函数    退出整个程序可使用 exit(0)

添加需要继承MFC的类时,在创建时,选择MFC类

拆分窗口时,可通过 CSplitterWnd 类   在MainFram.h 中声明CSplitterWnd  对象

 1 //静态拆分窗口 1行2列 m_spliter.CreateStatic this代表当前窗口
 2     m_spliter.CreateStatic(this, 1, 2);
 3 
 4     //创建视图:CSplitterWnd::CreateView
 5     /*
 6         0,0 :表示放在第0行第0列的位置
 7         RUNTIME_CLASS(CSelectView) : 表示使用CSelectView这个类
 8         CSize(250,500): 指定视图宽度和高度
 9         pContext : 为OnCreateClient的最后一个形参
10     */
11     m_spliter.CreateView(0, 0, RUNTIME_CLASS(CSelectView), CSize(250, 500), pContext);
12 
13     /*
14     0,1 :表示放在第0行第1列的位置
15     RUNTIME_CLASS(CDisplayView) : 表示使用CSelectView这个类
16     CSize(250,500): 指定视图宽度和高度
17     pContext : 为OnCreateClient的最后一个形参
18     */
19     m_spliter.CreateView(0, 1, RUNTIME_CLASS(CDispalyView), CSize(600, 500), pContext);

如下图所示:

C++ MFC学习 (六)第3张

普通View类 重写OnInitUpdate函数,来初始化一些显示

未放置Tree Ctrl 控件,可使用 GetTreeCtrl 获取一个  用一个TreeCtrl 的指针接收即可

MainFram 分屏 实现界面挂载

   声明自定义消息,需要将自定义消息写到分界宏中,

  1. 使用 PostMessage 发送消息

1     //CWind::PostMessage 将一个信息放入窗口的消息队列
2     //AfxGetMainWnd()  框架窗口对象的指针
3     //AfxGetMainWnd()->GetSafewnd()  获取返回窗口的句柄
4     //NM_A 发送自定义消息
5     //(WPARAM)NM_A 指定了附加的消息信息
6     //(LPARAM)0  指定了附加的消息信息,            

  2. 在MainFram 的 OnMyChange 中接收消息

      下面为挂载代码

 1     CCreateContext Context;
 2 
 3     //挂载界面
 4     Context.m_pNewViewClass = RUNTIME_CLASS(CUserDlg);  //将上下文的变量 设置为需要显示的窗口的类
 5     Context.m_pCurrentFrame = this;                        //获取当前主窗体
 6     Context.m_pLastView = (CFormView *)m_spliter.GetPane(0, 1);   //获取分割后的右侧窗体
 7     m_spliter.DeleteView(0, 1);       //删除现在的右侧界面
 8     m_spliter.CreateView(0, 1, RUNTIME_CLASS(CUserDlg), CSize(600, 500), &Context); //创建一个新的右侧界面
 9 
10     CUserDlg *pNewView = (CUserDlg *)m_spliter.GetPane(0, 1);  //获取新分割后的右侧窗体
11     m_spliter.RecalcLayout();        // 重新布局
12     pNewView->OnInitialUpdate();    // 将CUserDlg的窗体初始化
13     m_spliter.SetActivePane(0, 1);  //激活新建的右侧窗体

免责声明:文章转载自《C++ MFC学习 (六)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vant的日历(calendar)组件如何禁用指定的日期使用SHA1、SHA2双证书进行微软数字签名下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用RichEdit程序无法启动

在MFC或者WTL工程里,如果使用了RichEdit控件,会发现程序无法启动,编译器却没给出任何警告或错误。 在网上找了下资料,原来是没有加载支持RichEdit的动态库。 在MFC下面添加: AfxInitRichEdit(); 在WTL下面添加: HMODULE hRichDll = LoadLibrary(_T("riched20.dll"));...

白乔原创:VC之美化界面篇

本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础: 1.大致了解MFC框架的基本运作原理; 2.熟悉Windows消息机制,熟悉MFC的消息映射和反射机制; 3.熟悉OOP理论和技术; 本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。 1. 美化界面之开题篇 相信使用过《金山毒霸》、...

MFC用PostMessage传递消息

1.自定义消息ID。 #define WM_MY_MESSAGE (WM_USER+100)         WM_USER为windows系统为非系统消息保留的ID,这里至少要用100,因为其它控件的消息会占用一部分。 2. 定义消息处理函数。 消息处理函数为消息目标类的成员函数。首先应该在.h 文件中声明。这里以主窗口类为例,主窗口类名 C...

创建最简单的exe形式COM组件并在MFC程序调用

来新公司学习接手新项目,拿到代码打开解决方案看到里面竟然有40几个工程,有点吃惊。具体看代码也有很多之前没见过的写法,上了几天火。 有件事就没太搞明白,按照文档的说法上层很多软件都要调用IO服务器,但看程序安装目录,IO服务器其实是一个exe程序,按照我之前的印象,能被别的程序调用的也得是动态库、静态库或者服务。实在想不通exe程序怎么作为接口被别的程序调...

如何在MFC中使你的程序具有xp/win7风格(一)

首先在你的工程的 "res目录" 下建一个文件, 命名 windows.manifest 后缀为:.manifest 然后用记事本打开放入    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>   <assembly xmlns="urn:schemas-microsoft-...

MFC之目录结构及消息流转(一)

跟上时代,用vs2010, 新建一个MFC应用程序Helloworld。 目录结构: 所有文件分为6个部分:解决方案相关文件、工程相关文件、应用程序头文件和源文件、资源文件、预编译头文件和编译链接生成文件。        1.解决方案相关文件        解决方案相关文件包括解决方案文件夹下的.sdf文件、.sln文件、.suo文件和ipch文件夹。  ...