MFC
文章平均质量分 92
Marcelxx
这个作者很懒,什么都没留下…
展开
-
第十三章,CArchive
MFC 提供CArchive类实现数据的缓冲区读写,同时定义了类对象的存储与读取方案。 以下对CArchvie 的内部实现作分析。 1.概述2.内部数据3.基本数据读写4.缓冲区的更新5.指定长度数据段落的读写6.字符串的读写7.CObject派生对象的读写1.概述 CArchive使用了缓冲区,即一段内存空间作为临时数据存转载 2014-01-20 15:02:40 · 812 阅读 · 0 评论 -
MFC自定义控件
VC MFC(Custom Control)自定义控件转自:http://hi.baidu.com/3582077/item/c97e9491082a391d924f410a参考关于Custom Control自定义控件的介绍,有一篇文章感觉不错,不过是英文的,英语不好的也没关系,不是有“有道”吗?再说了,我们只要看代码就行了,而且步骤也就那么几步,结合教程转载 2013-10-14 16:03:36 · 1410 阅读 · 0 评论 -
MFC自定义控件
VC MFC(Custom Control)自定义控件转自:http://hi.baidu.com/3582077/item/c97e9491082a391d924f410a参考:http://www.codeproject.com/Articles/5032/Creating-and-Using-custom-controls-in-VC关于Custo转载 2013-10-14 16:02:54 · 1729 阅读 · 0 评论 -
计算两个时间点的间隔天数
void FileTimeToTime(FILETIME ft,time_t *t){ ULONGLONG ll; ULARGE_INTEGER ui; ui.LowPart=ft.dwLowDateTime; ui.HighPart=ft.dwHighDateTime; ll=(ft.dwHighDateTime << 32) + ft.dwLowDateTime; *t=((LO原创 2013-09-24 10:36:44 · 1486 阅读 · 0 评论 -
GetSystemTime和GetLocalTime
GetSystemTime获得的时间是基于通用协调时(UTC, Universal Time Coordinated)。GetLocalTime获得的时间是基于本地时间的。如GetLocalTime获得的本地主机的时间是上午8时,当用GetSystemTime获取时,该时间是0时,注意这两个函数的区别原创 2013-09-17 10:40:00 · 1252 阅读 · 0 评论 -
创建文件夹问题
_mkdir :只能够一层一层的层次创建文件夹,无法创建多级文件夹。使用CMD命令:创建多级文件夹Shell ("cmd /c "" mkdir c:\1\2\3\4\5\6\7\8\9""")。原创 2013-09-12 11:34:26 · 733 阅读 · 0 评论 -
SetCaretPos和TextOut调用的顺序
先调用 SetCaretPos(pt);然后调用TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);否则的话,输出有一个光标的残影,原因未知!!!原创 2013-09-11 23:24:32 · 1369 阅读 · 1 评论 -
VC 利用SetWindowRgn实现程序窗口的圆角多角矩形 .
下面是实现程序窗口圆角多角矩形的三种方法,但效果都比较差。只是简单的将边角裁剪,从边框和标题栏上都可以看出来。不过可以通过这三个函数来学习下SetWindowRgn()及创建一个HRGN的不同方法。方法1?123456789void SetWindowEllispeFrame1(HWND hwn转载 2013-09-11 11:59:41 · 675 阅读 · 0 评论 -
Layered Window(分层窗体,透明窗体)
Layered Window(分层窗体,透明窗体) //为窗体添加WS_EX_LAYERED属性,该属性使窗体支持透明ModifyStyleEx(0,WS_EX_LAYERED); 效果1.1 窗体整体透明,子控件也透明 //设置Alpha值为150BYTE byteAlpha=150;SetLayeredWindowAttribute转载 2013-09-11 13:41:03 · 1193 阅读 · 0 评论 -
VC用法汇总
VC用法汇总(1)如何通过代码获得应用程序主窗口的指针?主窗口的指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使程序最大化.(2)确定应用程序的路径Use GetModuleFileName 获得应用程序的路径,然后去掉可执行转载 2013-09-02 21:58:05 · 1584 阅读 · 0 评论 -
DoDataExchange使用
DoDataExchange( )void CRegisterDialog::DoDataExchange(CDataExchange* pDX)...{CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CRegisterDialog)DDX_Control(pDX, IDC_INCOME转载 2013-10-15 14:41:47 · 2001 阅读 · 0 评论 -
MFC之资源切换
在MFC使用过程中,遇到DLL资源与主EXE资源冲突问题。出现这样的Bug,一时无从下手。报错位置在核心代码中dlgcore.cpp。[cpp] view plaincopyBOOL AFXAPI _AfxCheckDialogTemplate(LPCTSTR lpszResource, BOOL bInvisibleChild) { ASSER转载 2013-10-25 10:54:36 · 1047 阅读 · 0 评论 -
MFC的DLL
MFC的DLL 一般的,在介绍Windows编程的书中讲述DLL的有关知识较多,而介绍MFC的书则比较少地提到。即使使用MFC来编写动态链接库,对于初步接触DLL的程序员来说,了解DLL的背景知识是必要的。另外,MFC提供了新的手段来帮助编写DLL程序。所以,本节先简洁的介绍有关概念。DLL的背景知识 静态链接和动态链接 当前链接的目标代码(.obj)如果引用了转载 2013-10-21 09:23:18 · 736 阅读 · 0 评论 -
SetTimer的使用
etTimer函数用于创建一个计时器,KillTimer函数用于销毁一个计时器。计时器属于系统资源,使用完应及时销毁。 SetTimer的函数原型如下:UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc ) ; 其中 hWnd是和timer关联的窗口句柄转载 2013-12-25 13:41:39 · 2158 阅读 · 0 评论 -
Layered Window(分层窗体,透明窗体)
Layered Window(分层窗体,透明窗体) 2011-10-04 07:53:22| 分类:API&VC |字号 订阅//为窗体添加WS_EX_LAYERED属性,该属性使窗体支持透明ModifyStyleEx(0,WS_EX_LAYERED); 效果1.1 窗体整体透明,子控件也透明 //设置Alpha值为150BY转载 2013-11-11 15:41:47 · 1984 阅读 · 0 评论 -
windows笔记-API实现透明窗体
windows笔记-API实现透明窗体win7的透明的透明效果看起来炫吧 ^_-。其实用简单的系统API就可以实现了。如下:SetLayeredWindowAttributes:BOOL SetLayeredWindowAttributes( HWND hwnd, // 透明窗体的句柄 COL转载 2013-11-11 15:19:25 · 1247 阅读 · 0 评论 -
InvalidateRect和Invalidate的区别
Invalidate(); 执行时,是先用背景刷清屏以后,再重新绘画 InvalidateRect(rect), 他执行时, rect区域以背景刷清屏,rect以外的区域不调用背景刷,而是将屏幕上现有的内容(如图片图形等)作为背景,在这个背景上直接画图。 若是,图片和背景反差很大,则使用Invalidate() 会发生闪烁转载 2013-11-07 15:02:55 · 2376 阅读 · 0 评论 -
CDC,CClientDC,CPaintDC,CWindowDC 比较区别
CDC,CClientDC,CPaintDC,CWindowDC 比较区别 MFC中的CDC,CClientDC,CPaintDC,CWindowDC的区别 CDC是Windows绘图设备的基类。 CClientDC: (1)(客户区设备上下文)用于客户区的输出,与特定窗口关联,可以让开发者访问目标窗口中客户区,其构造函数中包含了GetDC,析构函数中包含了ReleaseDC。 CPain转载 2013-11-19 11:34:52 · 851 阅读 · 0 评论 -
PreTranslateMessage使用
PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当你需要在MFC之前处理某些消息时,常常要在这里添加代码. MFC消息控制流最具特色的地方是CWnd类的虚拟函数PreTranslateMessage(),通过重载这个函数,我们可以改变MFC的消息控制流程,甚至可以作一个全新的控制流出来。只有穿过消息队原创 2013-11-03 11:52:34 · 1171 阅读 · 0 评论 -
UFT-8,多字节和UNICODE之间的转换
多字节转换为UTF-8:void ConvertGBKToUtf8( CString& strGBK ){ int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0); WCHAR * wszUtf8 = new WCHAR[len+1]; memset(wszUtf8, 0, len * 2转载 2013-10-29 13:38:24 · 1244 阅读 · 0 评论 -
UTF-8和Unicode之间的转换!
本来在网上能找到很多这方面的代码,但很多都是转帖,且很多细节让人理解起来很别扭,估计有的转帖的也是不知所云。虽说就两个Windows API的调用,但只有自己去写代码测试研究,才真正领会了这些细节。文中注释有写的不当的欢迎指正。下面是我写的测试程序:[cpp] view plaincopy#include "stdafx.h" #include #in转载 2013-10-29 11:44:43 · 1470 阅读 · 0 评论 -
第七章
SDI的初始化过程 CWinApp --> CDocument --> CFrameWnd --> CView 。(要注意:SDI包含两个窗口,一个是框架窗口,一个是视图窗口,视图窗口覆盖在框架窗口之上,因此操作的时候,需要注意到底是在对视图窗口进行操作,还是在对框架窗口进行操作,SDI窗口是多个窗口的叠加)。改变窗口的外观 在窗口创建完成之前,可以利用P原创 2013-10-21 22:22:15 · 566 阅读 · 0 评论 -
Windows线程库
Win32 API 是Windows操作系统为内核以及应用程序之间提供的接口,将内核提供的功能进行函数封装,应用程序通过调用相关的函数获得相应的系统功能。MFC 是微软基础函数类库,由微软提供的,用类库的方式将Win32 API进行封装,以类的方式开发者。HANDLE 句柄是一种指向指针的指针。指针是一种内存地址,应用程序启动后,组成这个程序的各对象是驻留在内存的原创 2013-08-28 22:52:14 · 1395 阅读 · 0 评论 -
判断一个线程是否执行结束以及获取线程退出码
HANDLE g_hThread = NULL; DWORD dw = WaitForSingleObject(g_hThread, 0); if(dw == WAIT_TIMEOUT) //线程正在运行{ TerminateThread(g_hThread, dwExitCode); //不建议强制结束 if(g_hThread !=原创 2013-08-28 15:17:33 · 12553 阅读 · 0 评论 -
窗口管理函数
窗口管理函数 窗口管理函数向应用程序提供了一些创建和管理用户界面的方法。你可以使用窗口管理函数创建和使用窗口来显示输出、提示用户进行输入以及完成其他一些与用户进行交互所需的工作。大多数应用程序都至少要创建一个窗口。 应用程序通过创建窗口类及相应的窗口过程来定义它们所用窗日的外观和行为。窗口类可标识窗口的缺省属性,比如窗口是否接受双击鼠标按钮的操作。或是否带有菜单。窗口过程中包原创 2013-07-15 11:39:11 · 600 阅读 · 0 评论 -
GetModuleFileName
1.函数原型: DWORD GetModuleFileName( HMODULE hModule, LPTSTR lpFilename, DWORD nSize ); 函数参数说明: hModule HMODULE 装载一个程序实例的句柄。如果该参数为NULL,该函数返回该当前应用程序全路径。 lpFileName LPTSTR 是你存放返回的名字的内存块的指针,是一个输出参数转载 2013-07-12 14:25:02 · 935 阅读 · 0 评论 -
窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo
最近用到窗口变化的一些东西,遇到几个相关的消息函数,简要分析,作为备忘。3个消息分别是:WM_SIZE、WM_SIZING、WM_GETMINMAXINFO;分别对应相应的处理函数:OnSize、OnSizing、OnGetMinMaxInfo。当窗口大小发生变化时,响应的顺序依次是:WM_GETMINMAXINFO-->WM_SIZING-->WM_SIZE。 O转载 2013-07-12 11:59:46 · 950 阅读 · 0 评论 -
防止用户改变窗口大小的方法
1,在OnNcHitTest函数处理中,不处理返回HTTOPLEFT,HTTOPRIGHT,HTBOTTOMLEFT,HTBOTTOMRIGHT。2,在OnGetMinMaxInfo函数中,用setwindowpos,如果你想使你的窗口被人设置大小时不能无限制的缩小,你可以处理wm_size事件,然后判断当前窗口的大小,当小于你的要求时,用setqindowpos来保持窗口的大小。原创 2013-07-12 11:44:07 · 2878 阅读 · 0 评论 -
WM_SYSCOMMAND消息(点击窗口的系统菜单发送的消息)
从窗口系统菜单上发送该消息,实现窗口的最大化,最小化,移动,还原,移动等操作假设在CWnd派生类中如,关闭窗口SC_CLOSESendMessage(WM_SYSCOMMAND, SC_CLOSE, NULL);最小化窗口SC_MINIMIZESendMessage(WM_SYSCOMMAND, SC_MINIMIZE, NULL);窗口移动状态SC_MOVE转载 2013-07-12 09:32:32 · 3782 阅读 · 0 评论 -
WM_NCHITTEST消息(移动无标题栏窗口)
我为了移动一个无标题栏的窗体,使用了WM_NCHITTEST消息,这个消息大概如下:通常,我们拖动对话框窗口的标题栏来移动窗口,但有时候,我们想通过鼠标在客户区上拖动来移动窗口。一个容易想到的方案是,处理鼠标消息WM_LBUTTONDOWN和WM_LBUTTONUP。在OnLButtonUp函数中计算鼠标位置的变化,调用MoveWindow实现窗口的移动。注意,拖动标题栏移动窗口的时候转载 2013-07-12 09:57:42 · 1623 阅读 · 0 评论 -
窗口子类化三:SubClassWindow详解
许多Windows程序员都是跳过SDK直接进行RAD开发工具[或VC,我想VC应不属于RAD]的学习,有些人可能对子类化机制比较陌生。 我们先看看什么是Windows的子类化。Windows给我们或是说给它自己定义了许多丰富的通用控件,如:Edit、ComboBox 、ListBox……等,这些控件功能丰富,能为我们开发工作带来极大方面,试想:我们单单是自己实现一个EDIT控件是多么的艰难!但转载 2013-07-11 14:40:10 · 898 阅读 · 0 评论 -
窗口子类化二
尽管Windows系统提供了丰富的通用控件(如按钮,编辑框,滑动条等),但仍不可能满足我们实际应用中千差万别的需求,笔者在某项目的开发工作中就遇见了这样的问题。项目需要一个供用户输入表格数据的接口界面,要求只接收用户输入的数据信息,并可以利用键盘上的光标键移动输入位置以避免用户在键盘和鼠标之间的频繁切换。简单地使用Windows的编辑框控件不仅不能对输入字符进行有效过滤(如果给编辑框控件加上ES_转载 2013-07-11 13:54:38 · 854 阅读 · 0 评论 -
窗口子类化
VC 中基于 SDK 编程的窗口子类化窗口子类化的作用窗口子类化技术最大的特点就是能够截取 Windows 的消息。一旦用户自定义的窗口函数截取了传向原窗口函数的消息,就可以对被截取的消息进行如下处理:将其传给原来的窗口函数。这是对大多数消息应该采取的措施,因为子类通常只对原来的窗口特性作少量的改动截取该消息,阻止其向原窗口函数发送。修改该消息,修改完毕以后再向原窗口函数发送。转载 2013-07-11 11:17:47 · 703 阅读 · 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既包含字母也包含特殊字符。转载 2013-07-15 13:52:23 · 1961 阅读 · 2 评论 -
Duilib中的控件消息
所有继承自CControl类的控件都有事件消息,都可以有DoEvent函数进行事件消息响应。其余的,可以自定义DoEvent事件,然后自己实现DoEvent函数进行响应。 TEventUI event; event.Type = UIEVENT_KEYDOWN; event.chKey = (TCHAR)wParam原创 2013-08-05 10:14:27 · 1547 阅读 · 0 评论 -
定时器使用
DWORD WINAPI CheckSendInfoVector(LPVOID lpParameter){ SetTimer(NULL,100,TIMER_ELAPSE,(TIMERPROC)DoTimer); MSG msg; while(GetMessage(&msg,NULL,NULL,NULL)) { if(msg.messag原创 2013-08-14 14:17:35 · 1096 阅读 · 0 评论 -
CreateProcess
CreateProcessWIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。目录函数原型参数返回值举例说明展开编辑本段函数原型 BOOL CreateProcess ( LPCTSTR lpApplicationName, LPTSTR lpCom转载 2013-08-26 00:11:35 · 1546 阅读 · 1 评论 -
第17章,进程间通信之剪贴板
进程间通信 - 剪贴板实现引子由于在启动一个进程后,操作系统会给这个进程分配 4GB 的私有地址空间,至于为何有 4GB 这么大,那得考虑进程的私有地址空间和实际物理内存地址空间之间的映射以及页交换等等细节问题了,这里不予讨论,从名字就可以知道,既然操作系统给每一个进程分配的是私有地址空间,自然,这段地址空间也只有这个进程自己才能访问了,不然还称为私有干吗呢?既然这段私有地转载 2013-08-26 14:49:10 · 745 阅读 · 0 评论 -
GDI++第三章
LoadBitMap:函数的作用是从应用程序工程资源文件中加载位图。LoadBitmap不能加载文件,只能加载资源,如果用文件的话改用LoadImageLoadImage可以加载位图、图标、光标等多种图形数据。既可以从文件直接加载,也可以通过ID来加载。原创 2013-08-13 00:29:15 · 662 阅读 · 0 评论 -
MFC一些函数说明
BOOL IsWindow(HWND hWnd):该函数确定给定的窗口句柄是否标识一个已存在的窗口。原创 2013-07-11 12:51:12 · 937 阅读 · 0 评论