随笔分类 -  MFC

上一页 1 2 3
HDC,CDC,CClientDC,CPaintDC,CWindowDC的区别
摘要:CDC是MFC的DC的一个类 HDC是DC的句柄,API中的一个类似指针的数据类型.MFC类的前缀都是C开头的 H开头的大多数是句柄 首先说一下什么是DC(设备描述表)解:Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC)在DC表示的逻辑意义的“画布”上进行图形的绘制。DC是一种包含设备信息的数据结构,它包含了物理设备所需的各种状态信息。Win32程序在绘制图形之前需要获取DC的句柄HDC,并在不继续使用时释放掉。在c++ 编程中常会见到HDC,CDC,CClientDC,CPaintDC,CWindowDC这样的类HDC是DC的句 阅读全文
posted @ 2010-12-23 18:13 maxweii 阅读(878) 评论(0) 推荐(1)
MFC常见问题解惑
摘要:OnCreate InitDialog区别:WM_CREATE的时候窗口还没有建立,你可以给成员变量赋值,也可以修改窗口的基本内容比如风格,但是不能对窗口控件操作,因为窗口还没有建立。 INITDIALOG时候窗口已经建立,你可以移动窗口,修改风格等等,也可以给成员变量赋值,通常你要先建立(OnCreate)一个窗体,然后再对他进行初始化(OninitDialog).WM_INITDIALOG The WM_INITDIALOG message is sent to the dialog box procedure immediately before a dialog box is disp 阅读全文
posted @ 2010-12-23 01:00 maxweii 阅读(2773) 评论(0) 推荐(1)
BoundsChecker使用
摘要:BoundsChecker是一个Run-Time错误检测工具,它主要定位程序在运行时期发生的各种错误。 BoundsChecker能检测的错误包括:1)指针操作和内存、资源泄露错误,比如:内存泄露;资源泄露;对指针变量的错误操作。2)内存操作方面的错误,比如:内存读、写溢出;使用未初始化的内存。3)API函数使用错误。使用BoundsChecker对程序的运行时错误进行检测,有两种使用模式可供选择。一种模式叫做ActiveCheck,一种模式叫做FinalCheck。下面分别进行介绍。一,ActiveCheck是BoundsChecker提供的一种方便、快捷的错误检测模式,它能检测的错误种类有 阅读全文
posted @ 2010-12-21 18:55 maxweii 阅读(726) 评论(0) 推荐(0)
Another splitter control for dialog
摘要:Introductionhttp://www.codeproject.com/KB/splitter/simpledlgsplitter.aspxI'm a student and very interested in VC++. I often enter this web site to get free source code. I was in need of a splitter in a dialog. I downloaded one but it's very complex and I felt it was difficult to use the control (alt 阅读全文
posted @ 2010-12-20 21:22 maxweii 阅读(426) 评论(0) 推荐(0)
MFC各种控件属性介绍
摘要:VC++6.0控件工具箱: 2 图形控件(picture):常用于显示位图(Bitmap)和图标(Icon)3 静态文本(Static Text):用来在指定的位置显示特定的字符串,一般用来标识附近另一个控件的内容。显示在静态文本控件中的字符串一般不再改变,但是在需要的时候,也可以通过调用相应的函数来进行设置。MFC提供了CStatic类支持静态控件。4 编辑框(Edit Box):用来接收用户输入的字符串。通过选择编辑框的选项,编辑框可以接收字符串、数字、密码等;编辑框还可以设置成接收多行字符串的模式;可以自动进行大小写转换。编辑框可能向其父窗口发送多种控件通知,如果用户需要,可以对这些控件 阅读全文
posted @ 2010-12-20 19:42 maxweii 阅读(8533) 评论(0) 推荐(0)
VC防止窗口和控件闪烁的方法总结
摘要:1、 将 Invalidate()替换为 InvalidateRect()   Invalidate()会导致整个窗口的图象重画,需要的时间比较长,而 InvalidateRect()仅仅重画 Rect 区域内的内容,所以所需时间会少一些。虫虫以前很懒,经常为一小块区域的重画就调用 Invalidate(),不愿意自己去计算需要重画的 Rect,但是事实是,如果你确实需要改善闪烁的情况,计算一个 Rect 所用的时间比起重画那些不需要重画的内容所需要的时间要少得多。2、 禁止系统搽除你的窗口  系统在需要重画窗口的时候会帮你用指定的背景色来搽除窗口。可是,也许需要重画的区域也许非常小。或者,在 阅读全文
posted @ 2010-12-20 16:48 maxweii 阅读(515) 评论(0) 推荐(0)
在VC++中实现无标题栏对话框的拖动
摘要:其实,有无标题栏无所谓,本文要实现的是点击客户区实现拖动.目前,很多基于对话框的应用程序中对话框都是不带框架的,也就是说对话框没有标题栏。众所周知,窗口的移动都是通过鼠标拖动窗口的标题栏来实现的,那么现在应用程序中的对话框没有了标题栏,用户如何移动对话框呢?本实例针对这个问题提出解决的办法。程序编译运行后的界面效果如图一所示:图一、无标题栏的对话框界面 一、实现方法解决无标题栏窗口的拖动问题有两种方案,一种方案是使用常规思路来处理鼠标拖拽事件,当窗口获得WM_LBUTTONDOWN(OnLButtonDown)时,通过设置标志并调用CWnd::SetCapture()函数来让当前窗口捕捉鼠标消 阅读全文
posted @ 2010-12-20 15:41 maxweii 阅读(950) 评论(0) 推荐(0)
使用VC++和CRT库定位和排除内存泄漏
摘要:介绍: 动态分配、回收内存是C/C++编程语言一个最强的特点,但是中国哲学家孙(Sun Tzu,我不知道是谁?那位知道?) 指出,最强的同时也是最弱的。这句话对C/C++应用来说非常正确,在内存处理出错的地方通常就是BUGS产生的地方。一个最敏感和难检测的BUG就是内存泄漏-没有把前边分配的内存成功释放,一个小的内存泄漏可能不需要太注意,但是程序泄漏大块内存,或者渐增式的泄漏内存可能引起的现象是:先是性能低下,再就是引起复杂的内存耗尽错误。最坏的是,一个内存泄漏程序可能用完了如此多的内存以至于引起其他的程序出错,留给用户的是不能知道错误到底来自哪里。另外,一个看上去无害的内存泄漏可能是另一个问 阅读全文
posted @ 2010-12-20 10:40 maxweii 阅读(458) 评论(0) 推荐(0)
RichEdit 小结
摘要:一般性问题1. 代码编译通过了,运行后RichEdit控件不显示,在InitInstance中添加BOOL CWinApp::InitInstance (){…AfxInitRichEdit(); - RichEdit 1.0或 AfxInitRichEdit2(); - RichEdit 2.0…}2. 升级默认的RichEdit版本,默认的版本有BUG,在InitInstance中添加BOOL CWinApp::InitInstance (){…LoadLibrary("RICHED20.DLL");…FreeLibrary();}如果是CRichEditView基类的话,可用如下消息机制 阅读全文
posted @ 2010-12-20 01:40 maxweii 阅读(1295) 评论(0) 推荐(0)
CButtonST按钮教程
摘要:CButtonST使我目前见过的最强大,功能最全的CButton派生类。撰写本文的目的不在于技术的讨论,而是希望能够为各位提供关于CButtonST的使用参考,以提高编写程序的速度。   下图是用CButtonST做的几个按钮  以下是CButtonST类的一些版本信息,方便大家可以及时获得它的最新版本。  作者:Davide Calabro  邮箱地址:davide_calabro@yahoo.com  个人主页:http://www.softechsoftware.it  CButtonST类主要包括BtnST.h、BtnST.cpp、BCMenu.h和BCMenu.cpp四个文件。如果你 阅读全文
posted @ 2010-12-20 00:17 maxweii 阅读(533) 评论(0) 推荐(0)
让CButtonST类支持鼠标掠过时发声
摘要:首先,建立一个基于对话框的工程 test,然后把原BCMenu.cpp, BCMenu.h, BtnST.cpp, BtnST.h 四个文件加入到工程中。 接下来我们开始改造CButtonST 类。   1.打开CButtonST类的头文件BtnST.h 在它的开始部分加入对多媒体头文件及库文件的引用: #include #pragma comment(lib,"Winmm.lib")   2.向CButtonST类中添加两个成员变量和两个成员函数: private: CString SoundID; BOOL m_bPlaySound; public: void PlaySound(); v 阅读全文
posted @ 2010-12-20 00:12 maxweii 阅读(434) 评论(0) 推荐(0)
MFC常用命名规范
摘要:一、MFC、句柄、控件及结构的命名规范Windows类型样本变量MFC类样本变量HWNDhWnd;CWnd*pWnd;HDLGhDlg;CDialog*pDlg;HDChDC;CDC* pDC;HGDIOBJhGdiObj;CGdiObject*pGdiObj; HPENhPen;CPen*pPen;HBRUSHhBrush;CBrush*pBrush;HFONThFont;CFont*pFont;HBITMAPhBitmap;CBitmap*pBitmap;HPALETTEhPaltte;CPalette* pPalette;HRGN hRgn;CRgn* pRgn; HMENUhMenu; 阅读全文
posted @ 2010-12-19 18:56 maxweii 阅读(1146) 评论(0) 推荐(0)
MFC经验
摘要:MFC框架各部分指针获取方式:记住,是获取指针MFC消息流程图:string CString char* 的互相转换: string 转 CString CString.Format("%s", string.c_str()); //用c_str()比data()好 char 转 CString CString.Format("%s", char*); // 可以直接给CString赋值,不要用Format char* 转 string string s(char *); CString 转 string string s(CString.GetBuff 阅读全文
posted @ 2010-12-19 16:26 maxweii 阅读(1555) 评论(1) 推荐(1)
GDI绘图基本步骤总结(经典)
摘要:一、获得绘图的窗口句柄方法(详细参数及其调用可以看考MSDN):1、 HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName)HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter,LPCTSTR lpClassName, LPCTSTR lpWindowName)2、 HWND WindowFromPoint(POINT& Point)3、 BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam) BOOL CALLBACK 阅读全文
posted @ 2010-03-22 14:26 maxweii 阅读(1117) 评论(0) 推荐(0)
GDI+编程基础
摘要:一、GDI GDI是位于应用程序与不同硬件之间的中间层,这种结构让程序员从直接处理不同硬件的工作中解放出来,把硬件间的差异交给了GDI处理。GDI通过将应用程序与不同输出设备特性相隔离,使Windows应用程序能够毫无障碍地在Windows支持的任何图形输出设备上运行。例如,我们可以在不改变程序的前提下,让能在Epson点式打印机上工作的程序也能在激光打印机上工作。它把windows系统中的图形输出转换成硬件命令然后发送给硬件设备。GDI是以文件的形式存储在系统中,系统需要输出图形时把它载入内存,如果转换成硬件命令时遇到非GDI命令,系统还可能载入硬件驱动程序,驱动程序辅助GDI把图形命令转换 阅读全文
posted @ 2010-01-25 19:43 maxweii 阅读(260) 评论(0) 推荐(0)
四种进程或线程同步互斥的控制方法
摘要:1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。 4、事 件: 用来通知线程有一些事件已发生,从而启动后继任务的开始。一,临界区(Critical Section): 保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式操. 阅读全文
posted @ 2010-01-12 15:21 maxweii 阅读(340) 评论(0) 推荐(0)
MFC中的GDI绘图
摘要:一.关于GDI的基本概念什么是GDI?Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上。在Windows操作系统中,动态链接库C:\WINDOWS\system32\gdi32.dll(GDI Client DLL)中定义了GDI函数,实现与设备无关的包括屏幕上输出像素、在打印机上输出硬拷贝以及绘制Windows用户界面功能。在Visual C++6.0中的头文件C:\Program Files\Microsoft Visual Studio\VC98\Include\wingdi.h和Visual 阅读全文
posted @ 2009-12-24 09:01 maxweii 阅读(8112) 评论(0) 推荐(0)
__cdecl __fastcall与 __stdcall
摘要:__cdecl (C Declaration缩写)__fastcall与 __stdcall (Standard Call缩写)调用约定: __cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。 1、__stdcall(被调者弹参,)调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈, 即自身清除。2、_cdecl (调用者弹参)是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的 阅读全文
posted @ 2009-10-16 08:21 maxweii 阅读(175) 评论(0) 推荐(0)
最简单的winMain程序——
摘要:/*------------------------------------------------------------------------ HELLOWIN.C -- Displays "Hello, Windows 98!" in client area (c) Charles Petzold, 1998 -----------------------------------------------------------------------*/#include <windows.h>LRESULT CALLBACK WndProc (HWND, 阅读全文
posted @ 2009-09-24 18:22 maxweii 阅读(354) 评论(0) 推荐(0)

上一页 1 2 3