123456

 

2010年12月8日

MFC下实现透明位图

摘要: 我们在进行程序的界面设计时,常常希望将位图的前景显示在界面上,而将位图的背景隐藏起来,将位图与界面很自然的融合在一起,本文介绍了透明位图的制作知识,并将透明位图在一个对话框中显示了出来。直接上图:原图:Demo效果图:步骤如下: 1、设置待显示位图的背景颜色,也就是设置我们希望透明显示的位图颜色; 2、位图设备描述表以"SRCINVERT"的方式绘制(BitBlt)到显示设备描述表上; 3、"掩码"位图设备描述表以"SRCAND"的方式绘制(BitBlt)到显示设备描述表上; 4、再次将位图设备描述表以"SRCINVERT& 阅读全文

posted @ 2010-12-08 15:23 hgy413 阅读(1049) 评论(0) 推荐(0) 编辑

2010年12月7日

INFINITE解释和怎么WaitForSingleObject超时大于0x7FFFFFFF

摘要: 原码:原码表示法在数值前面 增加了一位符号位(即最高位为符号位),该位为0表示正数,该位为1表示负数,其余位表示数值的绝对值大小。反码:正数的反码与其原码相同,负数的反码是对其原码逐位取反,但符号位除外。补码:正数的补码与其原码相同,负数的补码是在其反码的末位加1。例如,我们用8位二进制表示一个数,+11的原码反码补码都为00001011,-11的原码就是10001011,反码是11110100,补码是11110101。计算机中负数只能用补码表示:如8位二进制:原码:-127到127反码:-127到127 补码:-128到127也就是只有补码能表示-128,因为-127的原码为11111111 阅读全文

posted @ 2010-12-07 15:44 hgy413 阅读(692) 评论(0) 推荐(0) 编辑

2010年12月1日

DbgView.exe的应用和使用类

摘要: 用处:release版本中打印信息: 用法:在工程中加入类DebugShow.h:包含到调用部分#include类DebugShow就一个函数:BOOL DebugTrace(TCHAR * lpszFormat,...){ static HWND hwnd = ::FindWindow(NULL, _T("DbgView")); if(!IsWindow(hwnd)) hwnd = ::FindWindow(NULL, _T("DbgView")); if(hwnd) { static TCHAR szMsg[512]; va_list argList 阅读全文

posted @ 2010-12-01 19:04 hgy413 阅读(353) 评论(0) 推荐(0) 编辑

#pragma once与 #ifndef的区别

摘要: 为了避免同一个文件被include多次1 #ifndef方式2 #pragma once方式在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 一些声明语句 #endif 方式二: #pragma once ... ... // 一些声明语句 #ifndef的方式依赖于宏名字不能冲突,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。当然,缺点就是如果不同头文件的宏名不小心“撞车”,可能就会导 阅读全文

posted @ 2010-12-01 16:55 hgy413 阅读(130) 评论(0) 推荐(0) 编辑

内存对齐的一点个人理解

摘要: 1.默认的#pragma pack(k)中k的大小是多少?vc下默认是8。2.什么叫偏移值?偏移值是相对于数据存储的首地址而言的,首地址的偏移值自然为0,首地址后一位的偏移值自然为1。2.结构体(结构体不内嵌子结构体)内存对齐原则是什么?#pragma pack(k),(1).对于结构的各个成员,第一个成员位于偏移为0的位置(也就是首地址开始),以后每个数据成员的偏移值必须是min(k,这个数据成员的自身长度(设为len)) 的倍数,明白点说,如果len小于K,起始位置的偏移值为len倍数,如果大于k,起始位置的偏移值为len倍数。(2).在(1)完成后,如果得到的的总大小为sum,sum必须 阅读全文

posted @ 2010-12-01 10:43 hgy413 阅读(152) 评论(0) 推荐(0) 编辑

2010年11月30日

MFC应用程序配置不正确解决方案

摘要: [现象] 对这个问题的研究是起源于这么一个现象:当你用VC++2005(或者其它.NET)写程序后,在自己的计算机上能毫无问题地运行,但是当把此exe文件拷贝到别人电脑上时,便不能运行了,大致的错误提示如下:应用程序配置不正确,请重新安装程序……或者是MSVCR80D.dll 没有找到什么的(我记得不是很清楚,不过大致是这样的) [分析] 看到这样的提示,当然不会傻到重装咯。第一反应应该是什么配置有问题、或者是缺少了什么依赖的库文件;于是我就根据以前Windows缺少库文件的经验,把所有库文件(××.DLL)统统一股脑地复制到当前文件夹下来,满心欢喜以为可以运行了,以运行… 阅读全文

posted @ 2010-11-30 10:59 hgy413 阅读(307) 评论(0) 推荐(0) 编辑

2010年11月25日

SetWinEventHook和SetWindowsHookEx的异同[转]

摘要: SetWinEventHook和SetWindowsHookEx都可以指定钩子函数(hook function)来截取别的进程中的消息,但是他们之间有一些不同。?SetWindowsHookEx有两种钩子函数,一种是全局钩子(global hook),另一种是线程钩子(thread hook)。全局钩子能够截取所有线程的消息,但是全局钩子函数必须存在于一个dll中。线程钩子只能截取属于当前进程中的线程的消息,钩子函数不需要放 在dll中。SetWinEventHook也有两种钩子函数,一种是进程内钩子(in-context hook),另一种是进程外钩子(out-of-context hook 阅读全文

posted @ 2010-11-25 10:43 hgy413 阅读(257) 评论(0) 推荐(0) 编辑

2010年11月24日

背景透明的static控件

摘要: HBRUSH Xxxxx::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (nCtlColor == CTLCOLOR_STATIC) { pDC->SetBkMode(TRANSPARENT); //pDC->SetTextColor(RGB(255,0,0)); return HBRUSH(GetStockObject(HOLLOW_BRUSH)); } return hbr;} 随手写的Demo,效果图:= 阅读全文

posted @ 2010-11-24 20:58 hgy413 阅读(108) 评论(0) 推荐(0) 编辑

一种新颖的流程控制方式

摘要: do{ if ( x ) break; if ( y ) break;//..... if ( z ) break;}while(0);用 do{}while(0)的形式,使得{}中的代码必须且仅走一次,但又可以随时用break退出整个流程,一举两得,并且流程清晰易懂。习惯性的从各位好友那偷点代码,学习之,占为已有,笔记之,共享。 阅读全文

posted @ 2010-11-24 20:29 hgy413 阅读(114) 评论(0) 推荐(0) 编辑

结束已知应用程序名的进程

摘要: 从CSDN好友博客上挖掘的知识,自己学习兼测试了下,笔记于下:vs2005,unicode环境下#include #include void KillProcess(LPTSTR sProcessName){ TCHAR cTemp[256]; //判该程序是否运行 HANDLE hProcessSnap = NULL; PROCESSENTRY32 pe32={0}; PROCESS_INFORMATION ProcessInfo; STARTUPINFO StartupInfo = {0}; hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SN 阅读全文

posted @ 2010-11-24 20:15 hgy413 阅读(147) 评论(0) 推荐(0) 编辑

导航