
WIN32 / MFC
文章平均质量分 65
geeeeeeee
这个作者很懒,什么都没留下…
展开
-
半成品也纪念一下
折腾了半天,终于把MFC+OGRE+ETM+CEGUI整合起来了本来想加OIS的,结果OIS加载的代码有问题,手头上也没OIS相关教程,只好先去掉OIS了,可能跟MFC冲突==》句柄错误奇了怪了,FPS低得出奇 得找找原因==》加上定时刷屏即可,注意清除背景绘制,否则屏幕抖动剧烈OIS createInputObject 失败原因:OIS需要 根窗口的句柄来处理原创 2008-12-28 00:21:00 · 1950 阅读 · 4 评论 -
MFC消息分类 (理论)
Windows系统是一个消息驱动的操作系统,消息是应用程序与操作系统交互的手段。消息的产生来源于系统事件和用户事件,Windows用消息来调入和关闭应用程序。例如在关机操作中,Windows给所有正在运行的应用程序发出一个关机的消息,通知它们退出内存,此时,应用程序用响应消息的方法来回应。MFC通过封装的方式提供对大部分消息处理的接口。本章将围绕消息分类、发送、接收、处理以及重定向等内容展开讨论。转载 2008-12-16 16:54:00 · 2868 阅读 · 1 评论 -
RegOpenKeyEx、RegOpenKey FormatMessage
今天读注册表时一直返回错误,使用RegOpenKeyEx返回5 失败,而RegOpenKey返回0 成功查了N多文章未果... RegOpenKeyEx说明 http://feed.yeeyan.com/articles/view/17986/4844 里面提到返回值:如果函数调用成功,返回值ERROR_SUCCESS.否则,函数将返回一个定义于Winerror.h的非原创 2008-12-12 17:29:00 · 6847 阅读 · 2 评论 -
MFC命令行及CCommandLineInfo类
获取命令行的方法:1、GetCommandLine() 获取输入的所有信息,包括程序所在路径及参数2、AfxGetApp()->m_lpCmdLine 只包含参数一般情况下,获取到命令行后就可以针对命令行中的内容进行相应的处理了 CObject └CCommandLineInfo 类CCommandLineInfo用于分析启动应用时的命令行参数。MFC应用一般都会在它的应用对象原创 2008-12-13 14:33:00 · 9992 阅读 · 0 评论 -
OLE初始化错误:往MFC中添加CLR用户控件后报错
用MFC创建了SDI在工程加了个CLR 用户控件,然后运行,提示如下错误解决办法:工程属性=》常规=》公共语言运行库支持=》选择 公共语言运行库支持(/clr)OK! 如何在 MFC 应用程序中承载 WinForms 用户控件:http://msdn.microsoft.com/zh-cn/library/ms239718(VS.80).aspx原创 2008-12-25 10:54:00 · 2361 阅读 · 0 评论 -
MFC 中的停靠栏
设置停靠功能1、CFrameWnd::EnableDocking()该函数创建停靠栏。2、CControlBar::EnableDocking()该函数向控制条中增加停靠和移动功能。3、CFrameWnd::DockControlBar()该函数将控制条停靠到停靠栏。CToolBar工具条CStatusBar状态条CDockBar停靠栏CToolBar、CStatusBar类允许控制条和视类共原创 2008-12-23 16:23:00 · 6224 阅读 · 0 评论 -
RepositionBars函数详解
MFC窗口位置管理详细分析及实例 在一般用MFC编写的程序的窗口客户区中,可能有好几个子窗口(具有WM_CHILD风格的窗口)。上边是工具栏,中间是视图窗口,下边是状态栏。三个窗口在框架的客户区里和平共处,互不重叠。主框架窗口的尺寸改变了,别的子窗口都能及时调整自己的尺寸以便保持相互位置关系不变,例如状态条窗口总能保持在主框架客户区底部,并且其宽度总能和主框架客户区宽度一致。工具栏窗口总能停靠转载 2008-12-24 15:12:00 · 1792 阅读 · 1 评论 -
如何让DialogBar支持大小变动
两种方法:重载CalcDynamicLayout或CalcFixedLayout SUMMARY The default MFC implementation of CDialogBar does not allow for the dialog bar to be resizable when it is floating. If the dialog bar contains原创 2008-12-24 00:41:00 · 1879 阅读 · 0 评论 -
MFC和WinForm集成
MFC和WinForm集成http://www.developer.com/net/cplus/article.php/3560871http://www.developer.com/net/cplus/article.php/3569051http://www.codeproject.com/KB/miscctrl/HostMFC.aspx原创 2008-12-25 18:25:00 · 1376 阅读 · 0 评论 -
OnPaint工作原理
对于窗口程序,一般有个特点:窗口大部分的区域保持不变,只有部分区域需要重新绘制。如果将整个窗口全部刷新的画,就做了许多不必要的工作,因而,MFC采用了一套基于无效区的处理机制。在分析无效区处理之前,我们要明白一个现实,现在的机器还不够牛,如果够牛的话,我们干脆将整个窗口不断的重新绘制好了。事实上即使够牛也不行,对于一个单线程程序,通过一个while循环不断的刷新窗口,程序也无法相应其他消息(除非使原创 2008-12-26 21:10:00 · 915 阅读 · 0 评论 -
CView
文档负责了数据真正在永久介质中的存储和读取工作,视图呈现只是将文档中的数据以某种形式向用户呈现,因此一个文档可对应多个视图。 Invalidate(TRUE)将整个窗口设置为需要重绘的无效区域,它会产生WM_PAINT消息,这样OnDraw将被调用。 void CView::OnPaint() { // CPaintDC类维护显示设备 CPaintDC dc(this)原创 2011-06-23 20:38:00 · 1421 阅读 · 0 评论 -
线程与消息队列
当一个线程第一次被创建时,系统假定线程不会用于任何与用户相关的任务。这样可以减少线程对系统资源的要求。但是,一旦该线程调用一个与图形用户界面有关的函数 ( 如检查它的消息队列或建立一个窗口 ),系统就会为该线程分配一些另外的资源,以便它能够执行与用户界面有关的任务。特别是,系统分配了一个THREADINFO结构,并将这个数据结构与线程联系起来。 THREADINFO结构体如下: 1.将消息发送到线转载 2011-06-23 20:56:00 · 4202 阅读 · 0 评论 -
WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息
WM_KEYDOWN和WM_CHAR都是键盘消息。TranslateMessage函数已经将按键消息转换成字符消息了,那么WndProc函数中需要对事件进行选择。如:键入“D”键,就应该选择WM_CHAR,因为WM_CHAR 只是字母,不包含特殊字符如Ctrl等。如果键盘键入的是“Ctrl+D”,则应该选择WM_KEYDOWN,因为WM_KEYDOWN既包含字母也包含特殊字符。 WM转载 2011-06-23 21:05:00 · 1844 阅读 · 0 评论 -
MFC中的消息处理/AfxWndProc/WM_COMMAND路由
窗口消息概述: 所有的窗口消息的基本形式都是一样的,有3个部分:(1).一个无符号整数,包含消息的实际内容.(2)WPARAM,一个4字节整数.(3)LPARAM,一个4字节参数.无符号数是实际消息. 含MFC在内的任何WINDOWS程序的核心都是消息泵.消息泵是一个循环,它取出消息并将消息送给恰当的窗口消息处理函数.下面是个消息泵的示例: while(GetMessage原创 2011-06-22 16:32:00 · 6052 阅读 · 0 评论 -
windows内核对象
有哪些内核对象?如下:存取符号对象、事件对象、文件对象、文件映射对象、I / O 完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象、信标对象、线程对象和等待计时器对象等。这些对象都是通过调用函数来创建的。 什么是内核对象?内核对象只是内核分配的一个内存块,并且只能由该内核访问。该内存块是一种数据结构,它的成员负责维护该对象的各种信息。有些数据成员(如安全性描述符、使用原创 2011-06-23 23:34:00 · 936 阅读 · 0 评论 -
OnBarCheck ON_COMMAND_EX
CFrameWnd提供了OnBarCheck来响应与ID_VIEW_STATUS_BAR、ID_VIEW_TOOLBAR菜单项对应的命令。 消息映射: ON_COMMAND_EX(ID_VIEW_STATUS_BAR, OnBarCheck) ON_COMMAND_EX(ID_VIEW_TOOLBAR, OnBarCheck) 这里,使用了扩展命令消息映射宏把ID_VIEW转载 2011-06-24 15:49:00 · 1830 阅读 · 0 评论 -
MFC 消息类型(实践)
1、命令消息(WM_COMMAND) 所有派生自 CCmdTarget 的类都有资格接受WM_COMMAND。 2、Window消息(WM_xxx) 所有派生自 CWnd 的类都有资格接受 WM_xxx。 3、控件消息(WM_NOTIFY) 控件向其父窗口通知消息。 消息处理 1、WM_xxx 消息处理 窗口类(自身)处理→基类处理→CWnd∷DefWindowProc()处理; 其所对应的宏一般转载 2008-12-16 16:48:00 · 1103 阅读 · 0 评论 -
MFC 模板、文档、视图、框架的关系
class CWinThread : public CCmdTarget{ CWnd* m_pMainWnd;};class CDocManager : public CObject{ CPtrList m_templateList;};class CWinApp : public CWinThread{ CDocManager* m_pDocManager;转载 2008-12-14 19:00:00 · 848 阅读 · 0 评论 -
MFC复习(五)MFC消息映射与消息传递
/////////////////////////////////////////////// /* 1.Windows消息概览 */ //////////////////////////////////////////////对于消息,程序员应转载 2008-12-14 00:54:00 · 894 阅读 · 0 评论 -
WIN32核心对象
WIN32核心对象清单进程线程文件事件信号量互斥量管道不像GDI对象,有单一拥有者,不是线程就是进程,核心对象可以有一个以上的拥有者,甚至可以跨进程为了保持每一位主人(拥有者)的追踪,核心对象保持一个引用计数,以记录有多少个handles对应到此对象如果调用CreateThread或其他传回handle的函数,引用计数累加1,当调用CloseHandle时,计数便递减1一旦引用计数降为0,此核原创 2008-12-31 15:04:00 · 1516 阅读 · 0 评论 -
MFC 对象访问
从多线程访问对象由于大小和性能原因,MFC 对象在对象级别不是线程安全的,而只是在类级别线程安全。这表明可以有两个独立的线程操作两个不同的 CString 对象,但不能有两个线程操作同一个 CString 对象。如果一定要有多个线程操作同一个对象,请用适当的 Win32 同步机制(如临界区)保护此类访问权。有关临界区和其他相关对象的更多信息,请参见 Platform SDK 中的同步。类库转载 2008-12-30 16:33:00 · 797 阅读 · 0 评论 -
非模态对话框的销毁
非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别先看一下MSDN的原文:When you implement a modeless dialog box, always override the OnCancel member function and call DestroyWindow from within it. Don’t call the base cl转载 2008-12-31 00:36:00 · 1138 阅读 · 0 评论 -
Windows窗口风格详细解释
Windows窗口风格详细解释窗口风格是各种窗口开发的重要基础之一。它可以分为普通风格(WS_系列)和扩展风格(WS_EX_系列)。从其特点上,主要分成两大类:1.一类表明窗口和其它窗口的关系,包括:WS_CHILD、WS_POPUP、WS_OVERLAPPED、WS_CLIPCHILDREN、WS_CLIPSIBLINGS、WS_GROUP、WS_EX_TOPMOST、WS_EX_MDICHIL转载 2009-01-02 00:43:00 · 6097 阅读 · 1 评论 -
MFC界面扩展库
BCGControlBar专业版是MFC的一个扩展库,您可以用来构建类似于Microsoft Office、Microsoft Visual Studio和其他一些知名产品的高级用户界面。这个扩展库包含了150多个经过精心设计,测试和具有完备文档的MFC扩展类。我们的控件能够轻松的融入你的应用程序中,节约大量的的开发和调试时间==================================原创 2009-01-05 10:38:00 · 4319 阅读 · 2 评论 -
用MFC如何高效地绘图以及如何避免闪烁
用MFC如何高效地绘图TouchMe 显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题。而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单,只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈我的一些观点。1、原创 2009-01-05 11:31:00 · 1584 阅读 · 2 评论 -
MFC窗口销毁过程
考虑单窗口情况: 假设自己通过new创建了一个窗口对象pWnd,然后pWnd->Create。则销毁窗口的调用次序: 1. 手工调用pWnd->DestroyWindow(); 2. DestroyWindow会发送WM_DESTROY; 3. WM_DESTROY对应的消息处理函数是OnDestroy(); 4. DestroyWindow会发送WM_NCDESTROY; 5. WM_NCDES转载 2009-01-02 19:50:00 · 1843 阅读 · 0 评论 -
MFC复习(一)
大家都知道,windows API编程以及其消息处理,其过程都清晰可见,大体步骤如下:1)声明消息窗口类2)注册窗口类3)createwindows4)消息获得以及分派(windows procedure)。但是,对于MFC同样是Windows程序,其流程却显得灰暗不明。现具体分析如下:在MFC中有两个重要的类,CWinApp,CFrameWnd,它们两个的存在在某种意义上来说代替了WinMa原创 2008-12-10 22:02:00 · 659 阅读 · 0 评论 -
MFC复习(二)MFC应用程序“生死因果”
//////////////////////////////////////////// /* 1. Windows 帮忙 */ /* 程序诞生! */转载 2008-12-13 16:03:00 · 933 阅读 · 0 评论 -
__declspec __cdecl __stdcall
__cdecl和__stdcall都是函数调用规范(还有一个__fastcall),规定了参数出入栈的顺序和方法,如果只用VC编程的话可以不用关心,但是要在C++和Pascal等其他语言通信的时候就要注意了,只有用相同的方法才能够调用成功.另外,像printf这样接受可变个数参数的函数只有用cdecl才能够实现. __declspec主要是用于说明DLL的引出函数的,在某些情况下用__d原创 2008-12-13 19:59:00 · 623 阅读 · 0 评论 -
MFC -- CMyApp::InitInstance()过程分析
BOOL CMyApp::InitInstance(){ CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( //步骤一 IDR_MAINFRAME, RUNTIME_CLASS(CMyDoc), RUNTIME原创 2008-12-13 22:20:00 · 1893 阅读 · 0 评论 -
预编译头文件PCH
一、预编译头文件使用经验:如果预编译头文件被正确使用时,它确实大大提高我们编程的效率(你工作中,有多少时间是在等编译完成?很多吧,这个时候一般都很无聊,无奈,浪费时间)。但是他太容易用错了. 下面是几种常见的错误用法.1) 在预编译头文件里include自己的头文件(当然, 如果你的头文件不经常变化, 也可以)原因:自己的头文件一般会经常变, 便利后导致预编译的东东重新编译, 降低了编转载 2008-12-11 20:04:00 · 5552 阅读 · 1 评论 -
MFC数据类型(Data Type)
BOOL:Boolean值(布尔值,不是TRUE就是FALSE) BSTR:32-bit字符指针BYTE:8-bit整数,未带正负号COLORREF:32-bit数值,代表一个颜色值DWORD:32-bit整数,未带正负号LONG:32-bit整数,带正负号LPARAM:32-bit数值,作为窗口函数或callback函数的一个参数LPCSTR:32-bit指针,指向一转载 2008-12-12 14:02:00 · 637 阅读 · 0 评论 -
MFC复习(三)MFC文档视图结构
///////////////////////////////////////////// /* 1.回顾"InitInstance函数" */ /////////////////////////////////////////////BOOL CMyApp::转载 2008-12-13 17:41:00 · 1346 阅读 · 0 评论 -
MFC复习(四)MFC执行期类型识别与动态创建技术
struct CRuntimeClass{ // Attributes LPCSTR m_lpszClassName; //-------------类型识别宏用到 int m_nObjectSize; UINT m_wSchema; // schema number of the loaded class CObje转载 2008-12-13 20:25:00 · 892 阅读 · 0 评论 -
在VS中为GUI程序添加console
开发中使用printf,cout等函数能够很方便地从console监控程序运行,但是对于GUI程序,虽然程序中使用了printf,cout但是无法查看stdout,stderr的输出 有几种方法可以查看GUI程序的输出(VS)1.使用VC的trace函数代替printf,但是必须include StdAfx.h,输出会显示在ouput窗口中,但是会跟其他的信息混在一起,不是很方转载 2008-12-15 14:31:00 · 1892 阅读 · 0 评论