WIN32/MFC
文章平均质量分 83
dsg333
资深工程师,对嵌入式软硬件掌握较好
展开
-
Windows下多任务同步机制简析
多作务操作系统之间各任务在使用同一资源时会发生冲突,包括读写的一致性问题,唯一性外设等这时需要通过同步来使资源在同一时刻被合理的占用。 WINDOWS下可以通过临界区(CRITICAL_SECTION)、互斥量(MUTEX)、信号量(SEMAPHORE),事件(EVENT) 比较 临界区互斥量信号量事件跨进程否原创 2012-12-01 15:39:31 · 991 阅读 · 0 评论 -
OnPaint和OnDraw的区别
问题:我在视图画的图象或者文字,当窗口改变后为什么不见了?OnDraw()和OnPaint()两个都是解决上面的问题,有什么不同?答:OnDraw()和OnPaint()好象兄弟俩,因为它们的工作类似。至于不见了的问题简单,因为当你的窗口改变后,会产生无效区域,这个无效的区域需要重画。一般Windows会发送两个消息WM_PAINT(通知客户区 有变化)和WM_NCPAINT(通知非客转载 2013-08-14 23:22:20 · 655 阅读 · 0 评论 -
CreateDIBSection 是怎么使用内存的?
CreateDIBSection 该函数创建应用程序可以直接写入的、与设备无关的位图(DIB)。m_hbitmap = CreateDIBSection(m_hdc, &m_bmi, DIB_RGB_COLORS, &m_pimagedata, NULL, 0x0);使用这个函数前,要先建立兼容的内存设备上下文m_hdc,准备好位图信息BITMAPINFO m_bmi;转载 2013-08-14 23:31:55 · 1476 阅读 · 0 评论 -
WM_PAINT(父子窗口间)
WM_PAINT(父子窗口间)窗口句柄(HWND)都是由操作系统内核管理的,系统内部有一个z-order序列,记录着当前从屏幕底部(假象的从屏幕到眼睛的方向),到屏幕最高层的一个窗口句柄的排序,这个排序不关注父窗口还是子窗口。当任意一个窗口接受到WM_PAINT消息产生重绘,更新区绘制完成以后,就搜索它的前面的一个窗口,如果此窗口的范围和更新区有交集,就向这个发送wm_paint消息,转载 2013-08-17 08:53:31 · 1558 阅读 · 0 评论 -
VC 绘图,使用双缓冲技术实现
VC 绘图,使用双缓冲技术实现*******************************************************************例子******************************************************************* ********************所有的GDI绘图函数使用的都是逻转载 2013-08-17 09:36:58 · 919 阅读 · 0 评论 -
MFC实现父窗口不透明,子窗口半透明效果
C++代码12345678910111213141516171819202122232425262728293031转载 2013-08-15 21:16:47 · 6263 阅读 · 3 评论 -
窗口重绘一点通
窗口重绘函数心得 在刷新窗口时经常要调用重绘函数MFC提供了三个函数用于窗口重绘InvalidateRect(&Rect)Invalidate()UpdateWindow()当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化)WM_NVPAINT系统会自己搞定WM_PAINT消息对应的函数是O转载 2013-08-17 09:35:35 · 646 阅读 · 0 评论 -
MFC通过ADO连接数据库
http://blog.chinaunix.net/uid-24585655-id-2125520.html MSDN中提供MFC的连接数据库的方法大约有三种方法一是CDatabase类(ODBC),一是DAO,另一是OLE DB,MSDN上推荐的方法是ODBC或者OLE DB方式。 OLE DB是一组”组件对象模型”(COM) 接口,是新的数据库低层接口,它封装了ODBC的功能,转载 2013-11-06 12:17:20 · 717 阅读 · 0 评论 -
MFC通过ADO操作Access数据库
http://blog.csdn.net/cb_cb/article/details/7477463我在《VC知识库在线杂志》第十四期和第十五期上曾发表了两篇文章——“直接通过ODBC读、写Excel表格文件”和“直接通过DAO读、写Access文件”,先后给大家介绍了ODBC和DAO两种数据库访问技术的基本使用方法,这次要给大家介绍的是ADO数据库访问技术的使用方法。AD转载 2013-11-07 12:06:19 · 1004 阅读 · 0 评论 -
GDI图形图形的一些函数
一、位图显示新方法 用于操作DIB图像的应用类有许多,笔者在"电脑编程与技巧"杂志99年第10期, 介绍了一个封装的通用图像基类(CImage),可完成DIB图像数据的管理和一些基本处理功能。其中大多的DIB类都采用直接分配内存的方式,然后用DIB操作函数来实现图像的显示。这种方式在Win98中,DIB操作函数将DIB内存直接写入显示内存中,但是在NT中,操作系统首先将DI转载 2013-08-15 00:11:51 · 1664 阅读 · 0 评论 -
图像透明拷贝--不同方法的效率比较
基于 Windows GDI 的图像透明拷贝,我知道的有三种方法。第一种方法是用 MaskBlt() 函数,第二种方法是我从网上看来的,用 SRCINVERT 的 DC 拷贝 (BitBlt) 的方法。第三种方法是直接处理像素。先晾一下我的测试结论:方法 每像素处理所花时间 备注 MaskBlt 22 Clk 无 DC 辗转拷贝的方法 34~35 Clk 无 自己拷贝像转载 2013-08-14 23:51:53 · 785 阅读 · 0 评论 -
CImage类
前两天有个朋友让我帮他编一个图象处理方面的程序,需要支持目前常见的图像格式.这可把我难住了.一直以来都只会用Visual C++的CBitmap类加载各种位图资源,然后处理.Visual C++的CBitmap类的功能是比较弱的,它只能显示出在资源中的图标、位图、光标以及图元文件的内容,而不像VB中的Image控件可以显示出绝大多数的外部图像文件(BMP、GIF、JPEG等)。如果想要在对话框或其转载 2013-08-15 00:52:44 · 630 阅读 · 0 评论 -
WINDOWS下读写锁
//最近看到了非常好的一篇WINDOWS读写锁的代码,无论类的设计上还是锁的逻辑实现上都很不错。。。 RWLockImpl.h01.#ifndef _RWLockImpl_Header02.#define _RWLockImpl_Header03.08.09.using namespace std;10.11./*12. 读写锁允许当前转载 2012-12-03 17:15:00 · 2704 阅读 · 0 评论 -
CreateFileMapping实现的共享内存及用法
在32位的Windows系统中,每一个进程都有权访问他自己的4GB(232=4294967296)平面地址空间,没有段,没有选择符,没有near和far指针,没有near和far函数调用,也没有内存模式。每个进程都有独立的4GB逻辑地址空间,32位的Windows系统允许每一个进程独立访问自己的内存,即独立于其它进程,也即它自己的32位逻辑地址空间。操作系统将把每一个进程的逻辑地址转换成实转载 2012-12-05 15:24:53 · 24484 阅读 · 2 评论 -
编写ActiveX控件
(1)一是从MFC提供的控件类派生一个新类,通过合理地设计派生类,可以修改控件的行为和属性以达到用户的要求,但此类控件使用范围很小。 (2)二是编写一个ActiveX控件,以后可以在不同的应用程序中重复使用。 1、创建ActiveX控件框架: (1)创建ActiveX控件工程转载 2013-05-05 21:52:23 · 2237 阅读 · 0 评论 -
基于MFC的ActiveX控件开发
ActiveX 控件是基于组件对象模型 (COM) 的可重用软件组件,广泛应用于桌面及Web应用中。在VC下ActiveX控件的开发可以分为三种,一种是直接用COM的API来开发,这样做显然非常的麻烦,对程序员要求也非常高,因此一般是不予考虑的;一种是基于传统的MFC,采用面向对象的方式将COM的基本功能封装在若干MFC的C++类中,开发者通过继承这些类得到COM支持功能。MFC为广大VC程序员所转载 2013-06-26 13:50:41 · 713 阅读 · 0 评论 -
Windows模块加载基址与地址计算
每个可执行模块和DLL模块都有一个首选的基地址,用于标识模块应该映射到的进程地址空间中的理想内存地址。当创建一个可执行模块时,链接程序将该模块的首选基地址设置为0x0040 0000;如果是DLL模块,链接程序设置的首选基地址是0x1000 0000。使用Visual Studio的Dumpbin实用程序,可以看到一个映像的首选基地址,如前一部分所示。当加载某个可执行程序时,操作系统为新进程创转载 2013-06-30 16:29:48 · 2654 阅读 · 0 评论 -
Activex、OLE、COM、OCX、DLL之间的区别
熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(Component)和对象(Object)之间的区别。组件是一个可重用的模块,它是由一组处理过程、数据封装和用户接口组成的业务对象(Rules Object)。组件看起来像对象,但不符合对象的学术转载 2013-06-30 18:27:35 · 861 阅读 · 0 评论 -
AlphaBlend StretchBlt BitBlt
AlphaBlend 该函数显示拥有透明或半透明像素的位图。 SyntaxBOOL AlphaBlend( HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest, HDC hdcSrc,转载 2013-08-15 00:06:09 · 774 阅读 · 0 评论 -
从DC中得到位图数据
从该DC中得到位图数据 描述:在DC加载了RGB24位图,如何从该DC中得到位图数据,给些代码好吗?LONG GetBitmapBits( HBITMAP hbmp, // handle to bitmap LONG cbBuffer, // number of bytes to copy LPVOID lpvBits // bu转载 2013-08-15 00:44:23 · 1595 阅读 · 0 评论 -
使用CreateProcessAsUser的范例代码
-------- CreateProcessEx.h文件 --------#ifndef _CREATE_PROCESS_EX_H_#define _CREATE_PROCESS_EX_H_#include #include "tchar.h"#pragma comment(lib, "shell32")#pragma comment(lib, "user32")#pragma co转载 2016-09-01 10:26:27 · 15803 阅读 · 0 评论