`

MFC经验小总结

 
阅读更多

1.去除菜单

        在CMainFrame::PreCreateWindow(CREATESTRUCT& cs)函数中加入一句:

         cs.hMenu = NULL;

2:项目->属性->链接器->常规   下面的“启用增量链接”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。
不过这又引入了另外一个警 告:FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)
选择项目,属性->配置属性 ->C/C++,修改“调试信息格式”为“程序数据库(/Zi)”即可。

 

3:

cin 相当于 scanf("%s",【变量名】);
cout相当于 printf("%s",【变量名】);

char cstr[100] = "who am i!";   内存为100个字节

wchar_t wstr[100];                ->内存为200的字节 

swprintf(wstr, L"%S", cstr);

 wcstombs(char *dest, const wchar_t *src, size_t n);

 

 

4:查询该文件是ansi 还是unicode突然发现notepad++可以查看 下方 右侧可以标明了是ansi Dos\Windows

 

 

5:调试常用

TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能;该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调试也在RELEASE的时候减少代码量。相当于 
#ifdef _DEBUG 
AfxDump<<"string in trace ...\n"; 
#endif   
  使用非常简单,格式如下:
  TRACE("DDDDDDDDDDD");
  TRACE("wewe%d",333);
  同样还存在TRACE0,TRACE1,TRACE2。。。分别对应0,1,2。。个参数

  TRACE信息输出到VC IDE环境的输出窗口(该窗口是你编译项目出错提示的哪个窗口),但仅限于你在VC中运行你的DEBUG版本的程序。

 TRACE 宏有点象我们以前在C语言中用的Printf函数,使程序在运行过程中输出一些调试信息,使我们能了解程序的一些状态。但有一点不同的是:


TRACE 宏只有在调试状态下才有所输出,而以前用的Printf 函数在任何情况下都有输出。和Printf 函数一样,TRACE函数可以接受多个参数如:

 

6:struct(在C与C++中的区别)

  struct People {
}

  People  p ; //C++中可以这样  

  struct People ;// C中必须这样

 

7:数组数据易懂

  *(it) = *(it+1)           很简洁的写法

 8:

strlen函数的宽字符版是wcslen(wide-character string length:宽字符串长度),并且在STRING.H(其中也说明了strlen)和WCHAR.H中均有说明。strlen函数说明如下:

size_t __cdecl strlen (const char *) ;        

而wcslen函数则说明如下:

size_t __cdecl wcslen (const wchar_t *) ;        

这时我们知道,要得到宽字符串的长度可以呼叫

iLength = wcslen (pw) ; 

函数将返回字符串中的字符数6。请记住,改成宽字节后,字符串的字符长度不改变,只是位组长度改变了。

 

 

 

Visual Studio 2005 移植 - WINVER,warning C4996, error LINK1104 - 消除.vc2005的sprintf_s警告

最简单的可以用的方法:

选项Project   |   Configuration   Properties   |   C/C++   |   Preprocessor   |   Preprocessor   Definitions  
  添加_CRT_SECURE_NO_DEPRECATE和_SCL_SECURE_NO_DEPRECATE

 

Activex:

ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和java applet功能类似。

 

 ActiveX控件等价于以前的OLE控件或OCX。

 

而它的所谓“比较底层,和底层操作系统的关系比C#这些高级语言要密切很多”的好处一直都没有体会到

 

正是因为C++比较底层,比较基础,所以它可以开发出很多和语言无关的公用程序块,如dll动态链接库和COM组件,原则上,只要你的Windows的系统,用VC++开发出来的这些公用程序块就能被任何语言调用(如果不用MFC框架,而用ATL框架来编写,甚至还可以脱离Windwos系统,不仅仅实现跨语言,甚至跨平台调用,这个笔者就没有仔细研究了)。

 

 

 ActiveX这门技术是通过生成“*.ocx”文件来实现的。先来了解下OCX文件,在百度百科上面对OCX是这样解释的

 

用VC开发的OCX控件 可以在其它语言里面都能调用

 

 

 

--窗口消息

WM_CTLCOLOR  WM_DRAWITEM 

 

命令消息

     WM_COMMAND   lParam用来区分是命令消息还是控件通知消息  

 

控件通知消息

       WM_NOTIFY  lParam中放的是一个称为NMHDR结构的指针。

 

   NMHDR

     {

         HWnd hWndFrom ; 相当于原WM_COMMAND传递方式的lParam

         UINT idFrom ;    相当于原WM_COMMAND传递方式的wParam(low-order)

         UINT code ;      相当于原WM_COMMAND传递方式的Notify Code(wParam"s high-order)

     };

    

  ON_NOTIFY( LVN_KEYDOWN, IDC_LIST1, OnKeydownList1 )

 

void CMessageReflectionDlg::OnKeydownList1(NMHDR* pNMHDR, LRESULT* pResult)

    {

     LV_KEYDOWN* pLVKey= (LV_KEYDOWN*)pNMHDR;

     *pResult = 0;

     }

 

 

  ON_NOTIFY( LVN_KEYDOWN, IDC_LIST1, OnKeydownList1 )

ON_COMMAND(ID_MYCOMMAND, &CMFCListViewDoc::OnMycommand)

 

ON_COMMAND是菜单和工具栏项处理消息的宏          ON_COMMAND(id,memberFxn)    

ON_MESSAGE是处理自定义消息的宏ON_MESSAGE(message,memberFxn)

ON_NOTIFY 是控件向其父窗口发送消息处理的宏ON_NOTIFY( LVN_KEYDOWN, IDC_LIST1, OnKeydownList1 )  

ON_CONTROL(wNotifyCode,id,memberFxn)

 

 

 

Notification Code的命名规律:

 

列表框:   LBN_*****   

 

组合框:   CBN_****

 

Tab框:    TBN_****

 

按钮:    BN_*****

 

Edit :    EN_*****

 

 重叠窗口(Overlapped),弹出窗口(Popup),子窗口(Child)

 

 

分享到:
评论

相关推荐

    MFC控件使用经验总结适合Windows程序员

    总的来说,MFC控件使用经验总结是Windows程序员的重要参考资料,它涵盖了从基础到进阶的各个层面,有助于提升开发效率和代码质量。熟练掌握MFC控件的使用,尤其是Edit控件的技巧,将使你在Windows应用开发中游刃有余...

    MFC界面制作技巧经验总结

    本经验总结主要聚焦于MFC界面制作技巧,涵盖了我在这一领域三年深入实践的积累,旨在帮助你提升在Windows应用开发中的界面设计能力。 一、MFC框架基础 MFC是微软为了简化Win32 API编程而设计的一套面向对象的类库,...

    mfc实现小型计算器

    总结,通过MFC实现小型计算器涉及了用户界面设计、消息映射、计算逻辑实现、错误处理等多个方面。这不仅锻炼了对MFC的理解,也让我们熟悉了Windows程序的事件驱动模型。这个项目的实现可以帮助开发者巩固C++编程基础...

    MFC学习总结

    本文将基于标题和描述中的内容,总结MFC学习中的一些关键技巧。 1. **属性页的添加**: 在MFC中,属性页通常用于组织多个相关的设置对话框。要创建属性页,首先需要定义一个从`CPropertyPage`派生的新类,然后在主...

    基于MFC的2048小游戏.zip

    总结来说,这个基于MFC的2048小游戏项目涵盖了C++编程基础、面向对象设计、MFC框架应用、游戏逻辑实现等多个知识点。通过研究这个项目,初学者不仅可以了解到C++和MFC的基本用法,还能深入理解游戏开发的过程,提升...

    利用MFC实现的简单小程序

    总结来说,这个项目是一个基于MFC的Visual C++小程序,主要展示了如何利用MFC创建对话框,以及如何在对话框中添加实时时间显示和动态地球转动的模拟功能。这对于学习MFC和Windows GUI编程的初学者来说是一个很好的...

    MFC学习步骤总结

    4. **社区论坛**:加入相关的技术社区或论坛,如Stack Overflow,与其他开发者交流经验,解决遇到的问题。 通过以上几个阶段的学习,相信你能够在两个月内建立起较为扎实的MFC编程基础,并能够独立完成一些简单到...

    MFC课程设计--魔方(包含代码,历次周总结,汇报PPT和个人总结小组总结)

    **汇报PPT和个人/小组总结** 是项目结束后的重要产出物,它们展示了项目的成果和学习经验。在PPT中,我们会详细介绍项目的目标、实现方法、主要功能和技术难点;而在总结报告中,每个人都会反思自己的工作,分享学习...

    MFC简介,可以通过该文档学会初步运用MFC编写小型程序

    ### MFC基础知识与应用 #### 一、MFC概述 **MFC**(Microsoft Foundation ...无论是从零开始的新手还是有一定经验的开发者,都能够从中受益。掌握了MFC之后,你将能够更加高效地开发出高质量的Windows应用程序。

    MFC 简明教程 MFC 简明教程

    无论是初学者还是经验丰富的开发者,掌握MFC都是非常有益的。通过本教程,我们不仅了解了MFC的基础概念,还深入探讨了如何使用MFC构建高效的Windows应用程序。希望这些知识点能够帮助你在MFC的学习道路上更进一步。

    MFC编写的数独小游戏

    总结,通过MFC编写数独小游戏,不仅能够加深对C++和Windows编程的理解,也能锻炼问题解决和逻辑思维能力。对于初学者来说,这是一个极好的实践项目,可以帮助他们在理论学习之外,获得实际编程经验,为后续更复杂的...

    MFC中使用SDK个人经验总结(包含海康威视云台相机).pdf

    在MFC应用中,开发人员经常使用SDK(Software Development Kit)来访问特定设备或服务的功能,如本例中的海康威视云台相机。这里提到的SDK集成涉及到多个步骤,主要包括配置项目设置、添加必要的头文件和库、初始化...

    mfc经典案例开放

    以下是一些从实战经验中总结的关键点: 1. **界面设计与事件处理**:MFC提供了丰富的控件和窗口类,用于构建用户界面。熟练掌握如何创建和定制控件、响应用户事件(如点击按钮、拖动滑块等),是MFC开发的基础。...

    贪吃蛇(MFC)

    总结,这个MFC实现的贪吃蛇游戏展示了如何利用面向对象的编程思想和MFC框架来构建一个功能完整的桌面应用。通过深入研究这个游戏的源代码,开发者不仅可以学习到MFC的基本用法,还能理解游戏开发中的核心逻辑和用户...

    VS2010下用MFC写的CAD小项目

    在Visual Studio 2010环境下使用MFC(Microsoft Foundation Classes)进行开发,尤其是构建CAD(Computer-Aided Design)小项目,是一项具有挑战性的任务。MFC是微软为Windows平台提供的一个C++类库,它封装了...

    五子棋 MFC 小游戏

    总结,五子棋MFC小游戏的开发涉及了MFC的基本使用、图形界面设计、事件处理以及基础的游戏逻辑实现。对于初学者,这是一个很好的练习项目,可以帮助他们巩固C++编程基础,了解Windows应用程序开发,并接触到一些...

    MFC4

    总结来说,MFC4是Windows程序设计的重要工具,它通过封装复杂的API,提供了一套高效的开发框架。无论是初学者还是经验丰富的开发者,都能从中受益,快速构建出功能丰富的桌面应用程序。尽管现代的开发环境中出现了更...

    MFC 编程实例讲解

    MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于简化Windows应用程序的开发。它基于面向对象的编程理念,封装了Windows API,使得...在实际项目中,不断实践和总结经验,将使你对MFC的理解更加深入。

    用mfc实现的http文件上传服务器

    在IT行业中,MFC(Microsoft ...通过这个项目,开发者不仅可以学习到MFC和C++的实践经验,还能深入了解网络编程,特别是HTTP服务器的实现细节。同时,这也是一个很好的锻炼面向对象编程和系统设计能力的机会。

Global site tag (gtag.js) - Google Analytics