
MFC
文章平均质量分 77
pizi0475
这个作者很懒,什么都没留下…
展开
-
MFC 分割窗体
MFC 分割窗体(Splitter Windows) 文档描述MFC中的CSplitterWnd类,该类用来支持窗体的分割和管理分割后每一个子窗格(pane)的大小1 分割窗体风格(Splitter Styles)CSplitterWnd类支持2种不同风格的分割窗口1.1 静态分割(static splitter)分割的窗格(pane)在分割窗体(splitter window;)创建时创转载 2010-02-04 15:24:00 · 1806 阅读 · 0 评论 -
关于头文件和源文件的分别
关于头文件和源文件的分别首先,我们可以将所有东西都放在一个.cpp文件内.然后编译器就将这个.cpp编译成.obj,obj是什么东西?就是编译单元了.一个程序,可以由一个编译单元组成,也可以有多个编译单元组成. 如果你不想让你的源代码变得很难阅读的话,就请使用多个编译单元吧.(一个函数不能放到两个编译单元里面,但两个以上就可以分别放在一个单元,也就是cpp里面)转载 2010-02-04 15:17:00 · 1523 阅读 · 0 评论 -
vc中常用的方法
vc中常用的方法 一、打开CD-ROM mciSendString("Set cdAudio door open wait",NULL,0,NULL); 二、关闭CD_ROM mciSendString("Set cdAudio door closed wait",NULL,0,NULL); 三、关闭计算机 OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数转载 2010-02-04 15:01:00 · 1624 阅读 · 0 评论 -
MFC消息传递顺序
1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用, 然后调用WindowProc()函数3.WindowProc() 该函数负责发送消息到OnWndMs转载 2010-02-04 14:39:00 · 2010 阅读 · 0 评论 -
c++编码规范101条
c++编码规范101条组织和策略问题第0条 不要拘泥于小节(又名:了解哪些东西不应该标准化)第1条 在高警告级别干净利落地进行编译第2条 使用自动构建系统第3条 使用版本控制系统第4条 在代码审查上投入设计风格第5条 一个实体应该只有一个紧凑的职责第6条 正确、简单和清晰第一第7条 编程中应知道何时和如何考虑可伸缩性第8条 不要进行不成熟的优化第9条 不要进行不成熟的劣化第10条 尽量减少转载 2010-02-04 15:02:00 · 1641 阅读 · 0 评论 -
vc 窗口尺寸和位置
尺寸和位置 窗口的尺寸和位置是由一个限定矩形来表示的,它给出了相对于屏幕或父窗口的坐标。对于顶层窗口来说这个坐标是相对于屏幕左上角(由于桌面窗口一般是没有边框的),对于子窗口则是相对于父窗口的左上角的坐标。应用程序在创建窗口时指定窗口的初始尺寸和位置,也可随时改变窗口的尺寸和位置。 尺寸 窗口的尺寸(宽和高)是以象素为单位的,一个窗口的高度和宽度都可以为0,如果应用程序把某原创 2010-02-23 11:10:00 · 5646 阅读 · 0 评论 -
MFC文档视图结构内幕
//////////////////////////////////////////////////////////////////////////////////// /********* 文章系列:MFC技术内幕系列***********/ /************MFC技术内幕系列之(二)*********转载 2010-02-20 15:43:00 · 1819 阅读 · 1 评论 -
MFC文档序列化内幕
//////////////////////////////////////////////////////////////////////////////////// /********* 文章系列:MFC技术内幕系列***********/ /************MFC技术内幕系列之(五)**********转载 2010-02-20 15:48:00 · 1403 阅读 · 0 评论 -
MFC应用程序“生死因果”内幕
/////////////////////////////////////////////////////////////////////////////////// /********* 文章系列:MFC技术内幕系列***********/ /************MFC技术内幕系列之(一)***********转载 2010-02-20 15:51:00 · 1252 阅读 · 0 评论 -
MFC执行期类型识别与动态创建技术内幕
////////////////////////////////////////////////////////////////////////////////////////////////引言:众所周知,微软的MFC Application Framework建立在一系列先进的程序设计技术上的。比如:消息映射机制,命令传递机制,执行期类型识别与动态创建技术及文档序列化技术等。其中执行期类型识别转载 2010-02-20 15:45:00 · 1370 阅读 · 0 评论 -
MFC消息映射与消息传递内幕
//////////////////////////////////////////////////////////////////////////////////// /********* 文章系列:MFC技术内幕系列***********/ /************MFC技术内幕系列之(四)***********转载 2010-02-20 15:46:00 · 1411 阅读 · 0 评论 -
Ogre与MFC结合时的内存泄漏问题
刚开始使用Ogre时总是碰到内存泄露,而且往往是一泄千里,等半分钟才能打完日志,我想这和Ogre中的大量大对象很有关系。下面就来分析一下内存泄露的产生原因。1. MFC中使用Ogre时发生的内存泄露这个问题比较有意思,其实并没有发生泄露,而是MFC自作主张的认为发生了内存泄露,实际上内存并不是没有释放,而是在VC报内存泄露之后释放,先来看一看MFC报内存泄露时的调用堆栈:msvcr71转载 2010-02-20 16:02:00 · 2340 阅读 · 0 评论 -
OGRE 渲染 到 MFC
网上睇到一个OGRE——MFC的代码就是在mfc 单文挡架构下 cview 里面 onpait 这个消息函数加个settimer 刷新UI 然后 嗯 无了我在这个之上 将CView继成 用个MFC 多线程UI的东东 这样 旁边再加个停靠窗口 用CJ60LibCVIEW插入一个 ogreappliction 不过 这个监听器呢 用OIS OIS 一定要绑定主窗口句柄的 即CMainWND 而渲染那个转载 2010-02-21 14:14:00 · 2538 阅读 · 0 评论 -
MFC 动作导致的消息
创建窗体 ...1. WM_GETMINMAXINFO 2. WM_NCCREATE 3. WM_NCCALCSIZE 4. WM_CREATE 创建完毕.显示窗体 ...1. WM_SHOWWINDOW 2. WM_WINDOWPOSCHANGING 3. WM_WINDOWPOSCHANGING 4. WM_ACTIVATEAPP 5. WM_NCACTIVATE 6. WM_GETTEXT原创 2010-02-23 11:07:00 · 1379 阅读 · 0 评论 -
Visual C++ 2008 MFC OFFICE界面创建入门
图形画板2008设计文档目录 图形画板2008设计文档 1 1. 图形后台框架 2 1.1. 基本图形类框架如下: 2 2. 界面框架 2 2.1. 快捷菜单 3 2.2. 主菜单 3 2.3. 工具栏 4 3. 如何创建OFFICE风格的MFC工转载 2010-02-23 15:13:00 · 2902 阅读 · 0 评论 -
MFC加入了新窗口元素:窗格。崭新的工具栏和状态栏都是一种窗格。
一、窗格 窗格是MFC在2008年新加入的,它由类CPane和其基类CBasePane实现。窗格就是用来在主框架窗口上占据边框位置的窗口,例如工具栏和状态栏。 CBasePane实现了窗格的基本功能和属性:停靠、浮动以及基本的窗口消息处理。CPane在CBasePane的基础上,实现了抓取的功能,可以用鼠标把窗格从停靠状态变为浮动状态。只要你的窗口从CPane派生,就能具有这样的功能。CB转载 2010-02-23 15:17:00 · 2929 阅读 · 1 评论 -
基于Visual C++的钩子编程技巧
摘要: 本文主要对钩子这种特殊的Windows编程机制进行了讨论并给出了鼠标钩子和键盘钩子的具体实现方法。 钩子概述 可以看出,钩子的本质是一段用以处理系统消息或特定事件的函数,通过系统调用将其挂入到系统。钩子的种类有很多,每一种钩子负责截获并处理相应的消息。钩子机制允许应用程序截获并处理发往指定窗口的消息或特定事件,其监视的窗口即可以是本进程内的也可以是由其他进程所创建的。在特定的消息发出后转载 2010-02-23 15:58:00 · 1390 阅读 · 0 评论 -
vc调试入门
vc调试入门。编写易于调试的VC代码一 程序的设计要避免错误,首先要从好的设计开始。对于程序的设计,需考虑到程序的两个特性:1简单性 大多数常见的错误来源于程序设计中不必要的复杂成分。一个好的设计应该反映问题本身的要求,而不必为了刻意追求“满足将来的需要”而添加不必要的特性。实际上,简单优雅的设计比那些复杂的设计更能迎合未来的需求。2 耦合性 耦合(decoupling)性用来衡量不同对象之间转载 2010-02-23 16:21:00 · 1458 阅读 · 0 评论 -
VC调试技巧
vc的调试,可以参考如下:检测程序中的括号是否匹配把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。2.查看一个宏(或变量、函数)的宏定义把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go转载 2010-02-23 16:39:00 · 1553 阅读 · 0 评论 -
Ogre1.6和MFC内存泄露冲突
第一步,是卸载dll先后顺序的问题,让OgreMain_d.dll在mfc80d.dll之前析构,老外早就有分析了: i) in the General tab, switch "Use MFC in a shared DLL" to "Use Standard Windows Libraries" ii) in the C/C++/Preprocessor tab, add _AFXDLL t转载 2010-02-26 15:33:00 · 1465 阅读 · 0 评论 -
深入剖析MFC中Windows消息处理机制
2004-11-13 00:04作者:mahongxi出处:vczx责任编辑: 本人对Windows系统、MFC谈不上有深入的了解,但对MFC本身包装API的机制很有兴趣,特别是读了候老师的《深入浅出MFC》后,感觉到Visual C++的Application FrameWork十分精制。在以前,我对SDI结构处理消息有一定的认识,但对于模式对话框的消息机制不了解,读了《深入》转载 2010-02-24 13:20:00 · 1348 阅读 · 0 评论 -
关于PumpMessage()
在单线程程序中,如果要执行一个长时间的复杂操作而且界面要有相应的话,可以考虑用自己的消息泵。比如,可以将一个阻塞等待操作放在一个循环中,并将超时值设置得比较小,然后每个等待的片段中用消息泵继续消息循环,使界面能够响应用户操作。等等之类,都可以应用消息泵(调用一个类似这样的函数): BOOL CChildView::PeekAndPump() { MSG msg; while转载 2010-02-24 13:22:00 · 5582 阅读 · 1 评论 -
CWinThread的使用详解
1.AfxBeginThread 与 CWinThread::CreateThread的区别:2.常见的启动线程函数有三个: CreateThread(), _beginThread(以及_beginThreadEx()),AfxBeginThread() 1和2是sdk函数,3是mfc函数 至于启动的是工作者线程还是UI线程,是由函数3的参数来决定的 ;转载 2010-02-25 10:47:00 · 2459 阅读 · 1 评论 -
深度解析VC中的消息传递机制
摘要: Windows编程和Dos编程,一个很大的区别就是,Windows编程是事件驱动,消息传递的。所以,要学好Windows编程,必须对消息机制有一个清楚的认识,本文希望能够对消息的传递做一个全面的分析。 什么是消息? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个转载 2010-02-25 10:47:00 · 1123 阅读 · 1 评论 -
在线程中执行AfxGetMainWnd()出错的问题
我在自己的MFC主程序里面创建了一个线程,在线程里面调用AfxGetMainWnd()获取主框架的时候出错了.上网查了一下,原来这个函数是不能在子线程里面获取主线程框架是会出错的. 以下是转贴:AfxGetMainWnd()得到的是当前线程的主窗口(如果有的话).因为主窗口是属于主线程的,所以想得到主窗口HWND值,只能在主线程中用AfxGetMainWnd(),但要不转载 2010-02-26 11:42:00 · 2230 阅读 · 1 评论 -
MFC获得各种视图指针的方法
获得各种视图指针如下1) 在View中获得Doc指针2) 在App中获得MainFrame指针3) 在View中获得MainFrame指针4) 获得View(已建立)指针5) 获得当前文档指针6) 获得状态栏与工具栏指针7) 获得状态栏与工具栏变量8) 在Mainframe获得菜单指针9) 在任何类中获得应用程序类10) 从文档类取得视图类的指针(1) 11) 在App中获得文档模板指针12) 从转载 2010-02-26 11:43:00 · 1429 阅读 · 0 评论 -
检测内存泄漏
最近看了周星星 Blog 中的一篇文章:“VC++6.0中内存泄漏检测”,受益匪浅,便运行其例子代码想看看 Output 窗口中的输出结果,可惜怎么弄其输出都不是预期的东西,郁闷了半天,便到水坛里找到周星星,请求他指点一、二,然而未果。没有办法,最后我一头栽进 MSDN 库狂搜了一把,功夫不负有心人,我搜出很多有关这方面的资料,没过多久我便基本上就找到了答案...... 首先,检测内存泄漏的基转载 2010-02-26 15:32:00 · 1468 阅读 · 0 评论 -
剖析MFC多线程程序的同步机制
简介本文探讨基本的同步概念,并实际动手帮助新手掌握多线程编程。本文的重点在各种同步技巧。基本概念在线程执行过程中,或多或少都需要彼此交互,这种交互行为有多种形式和类型。例如,一个线程在执行完它被赋予的任务后,通知另一个线程任务已经完成。然后第二个线程做开始剩下的工作。下述对象是用来支持同步的:1)信号量2)互斥锁3)关键区域4)事件每个对象都有不同的目转载 2010-02-25 08:40:00 · 1271 阅读 · 0 评论 -
MFC多线程编程注意事项
1. 表现——错误示例关于启动线程时传输窗口对象(指针?句柄?)的问题: 在选择菜单中的开始线程后: void cmainframe::onmenu_start() { ... afxbeginthread(mythread, this); ... } 线程函数转载 2010-02-25 08:46:00 · 1271 阅读 · 1 评论 -
深度解析MFC线程及机制
在VC中,启动一线程有3种方式:1.使用MFC中启动一个线程一般使用AfxBeginThread函数;2.使用API则使用CreateThread;3.就是使用_beginthread和_beginthreadex两个函数。使用MFC的AfxBeginThread函数启动一个线程,不管你代入的参数是否是个从CWinThread继承来的线程类还是一以标准的线程函数地址及参数(U转载 2010-02-25 10:46:00 · 1082 阅读 · 1 评论 -
MFC全局变量
用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。 一、在应用程序类中定义 用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作。我们可以把需要全局访问的变量转载 2010-02-25 09:04:00 · 1279 阅读 · 0 评论 -
线程通信
线程之间交换信息称为线程通信。线程之间要传送的数据较多,必须使用如共享主存、管道流等通信方式。管道用来把一个程序输出连接到另一程序输入。java.io中提供了PipedInputStream和PipedOutputStream类作为管道的输入输出部件。线程使用管道通信一般分为三步:创建输入输出管道流;连接输入输出流管道;向输出流管道写和从输入流管道读。1.创建管道流PipedInp转载 2010-02-25 09:06:00 · 1272 阅读 · 0 评论 -
VC中TRACE()的用法
个人总结:最近看网络编程是碰到了TRACE语句,不知道在哪里输出,查了一晚上资料也没找出来,今天终于在优快云上找到了,真是个高地方啊,方法如下:1.在MFC中加入TRACE语句2.在TOOLS->MFC TRACER中选择 “ENABLE TRACING”点击OK3.进行调试运行,GO(F5)(特别注意:不是执行‘!’以前之所以不能看到TRACE内容,是因为不是调试执行,而是‘!’了转载 2010-02-26 15:34:00 · 4425 阅读 · 1 评论 -
windows 内核对象
单地说: 内核对象是系统的一种资源。系统对象一旦产生,任何应用程序都可以开启并且使用该对象。系统给内核对象一个计数值作为管理只用,内核对象包括: event,mutex,semaphore,file,file-mapping,preocess,thread.这些内核对象每次产生都会返回一个handle,作为标示,每使用一次,对应的计数值加1,调用CloseHandle可以结束内核对象的使用。转载 2010-03-03 09:10:00 · 1427 阅读 · 1 评论 -
VC 预编译头
预编译头的概念:在很多程序中,每个源文件都存在一些相同的部分。比如要包括相同的一些头文件,而且这些头文件可能很长,例如window.h。如果用普通的方法编译这些源文件,对这些头文件在每个源文件中的出现都要重新编译,作了很多重复工作。如果能将这些头文件专门进行编译,并且把结果存储起来。然后在编译包含这些头文件的源文件时,使用上述结果替代头文件在源文件中的出现,就可以大大减少工作量。Microso原创 2010-03-03 13:34:00 · 1603 阅读 · 0 评论 -
OpenGL基本框架
/******************************by CRACKER007*******************************/ BOOL CGdlg::InitialPixelFormat() //此函数被后面的CreateRC调用{ static PIXELFORMATDESCRIPTOR pfd= { sizeof(PIXELFORMATDESC转载 2010-03-03 14:49:00 · 2091 阅读 · 0 评论 -
VC OpenGL框架
//窗口及OpenGL所使用的库的头文件#include //视窗头文件#include #include #include //定义程序中计划使用的所有变量HWND hWnd=NULL; //得到窗口的句柄HDC hDC=NULL; //私有的GDI设备环境HGLRC hRC=NULL; /转载 2010-03-03 14:51:00 · 2394 阅读 · 1 评论 -
BSTR、LPSTR、LPWSTR、CString、VARIANT、COleVariant 、_variant_t、CComBSTR、_bstr_t
Visual C++.NET涉及到ATL/ATL Server、MFC和托管C++等多种编程方式,不仅功能强大而且应用广泛。在编程中,我们常常会遇到ANSI、Unicode以及BSTR不同编码类 型的字符串转换操作。本文先介绍基本字符串类型,然后说明相关的类,如CComBSTR、_bstr_t、CStringT等,最后讨论它们的转换方法, 其中还包括使用最新ATL7.0的转换类和宏,如CA2CT、转载 2010-03-04 17:22:00 · 22762 阅读 · 2 评论 -
BMP位图文件结构及VC操作
---- 用普通方法显示BMP位图,占内存大,速度慢,在图形缩小时,失真严重,在低颜色位数的设备上显示高颜色位数的图形图形时失真大。本文采用视频函数显示BMP位图,可以消除以上的缺点。 ---- 一、BMP文件结构 ---- 1. BMP文件组成 ---- BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。 ---- 2. BMP文件头 ---- BMP文件头数据结原创 2010-03-05 15:52:00 · 1231 阅读 · 0 评论 -
VC根据位图的宽、高、位数来建立BMP文件头和信息头
VC根据位图的宽、高、位数来建立BMP文件头和信息头2009.9程序如下:///////////////////////////////////////////////////////////////////////////////////////////////////////BOOL myCreateBitmap2( int w, int h,int pixbit, PB转载 2010-03-05 15:54:00 · 1766 阅读 · 0 评论