MFC
文章平均质量分 77
zhjf14
PC客户端产品开发
展开
-
Hook学习笔记
关于Hook 一、基本概念: 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到转载 2015-01-14 22:16:15 · 648 阅读 · 0 评论 -
VC中CString和WPARAM之间的相互转换
在传递自定义消息的过程中,需要转换CString 变量。在发送消息端使用如下方法:SendMessage(WM_MESSAG_MINE,0,(LPARAM)strVal.AllocSysString());----------------------------------------在接收消息端使用:BSTR b = (BSTR)lParam;CStr转载 2013-09-02 15:56:39 · 764 阅读 · 0 评论 -
GetAdaptersInfo Function
GetAdaptersInfo FunctionThe GetAdaptersInfo function retrieves adapter information for the local computer.On Windows XP and later: Use the GetAdaptersAddresses function instead ofGetAdapter转载 2013-08-29 09:17:16 · 803 阅读 · 0 评论 -
GetAdaptersAddresses使用小结
这几天想复习下Windows C socket网络编程,网上查阅了一些资料,大部分资料还是比较老的,介绍的都是旧接口函数,而且,绝大多数书上的内容都没有介绍API中支持ipv6的接口。 我在写一个获得本地网卡信息的函数的时候,本来想用GetAdapterInfo,由于很久没用过win32 api,于是查了下MSDN,发现这个接口已经很旧了,而且不支持ipv6,在文档中明确推荐使用G转载 2013-08-29 09:34:37 · 3405 阅读 · 0 评论 -
互斥量与临界区的作用
不管是辅助线程还是用户接口线程,在存取共享资源时,都需要保护共享资源,以免引起冲突,造成错误。处理方法类似于Win32 API函数的使用,但MFC为我们提供了几个同步对象C++类,即CSyncObject、CMutex、CSemaphore、CEvent、CCriticalSection。这里,CSyncObject为其它四个类的基类,后四个类分别对应前面所讲的四个Win32 API同步对象。转载 2013-08-28 17:31:52 · 723 阅读 · 0 评论 -
“问题事件名称:BEX 故障模块名称:StackHash_9fba”的解决办法
调试程序的时候,APP Error,弹出这样的错误:问题事件名称:BEX故障模块名称:StackHash_9fba解决办法:Project -> TestDLL2 Properties ->Configuration Properties -> Linker ->Advanced ->Data Execution Prevention(DEP)改为Default。原创 2013-08-15 16:46:19 · 41450 阅读 · 1 评论 -
c++实现ping
(1)了解探测远程主机是否可达的方法。(2)了解windows网络编程的基本步骤。(3)了解TCP/IP协议及ICMP协议。(4)掌握ping命令的思想。(5)掌握Windows Socket API的使用方法。原理ICMP:互联网控制报文协议,提供一个特殊的报文在互联网的结点之间进行监测和控制,测试目的主机是否可达,因此可模拟ICMP的工作方式来编转载 2013-07-26 17:18:05 · 718 阅读 · 0 评论 -
MFC六大关键技术之运行时类型识别
运行时类型识别(RTTI)即是程序执行过程中知道某个对象属于某个类,我们平时用C++编程接触的RTTI一般是编译器的RTTI运行时类型识别(RTTI)即是程序执行过程中知道某个对象属于某个类,我们平时用C++编程接触的RTTI一般是编译器的RTTI,即是在新版本的VC++编译器里面选用“使能RTTI”,然后载入typeinfo.h文件,就可以使用一个叫typeid()的运算子,它的地位与在C+转载 2013-07-26 09:31:24 · 674 阅读 · 0 评论 -
MFC双缓存画图
博文源地址:《VC使用双缓存技术,解决闪屏问题》VC使用双缓存技术,解决闪屏问题第一次写文章,有不对的地方请指正啊.. 双缓存:就是在内存中准备一块区域,把要显示的位图都加载到内存中,然后调用BitBlt函数,把内存设备复制到显示设备上,这样就可以防止闪屏了.. 下面是在VC中,实现的步骤..1 新建一单文档MFC程序,取名为test1.2在CTest1View中添转载 2013-06-28 14:07:25 · 898 阅读 · 0 评论 -
对话框中滚动条方便用
在对话框上要应用滚动条,首先当然是要将对话框的属性vertical scroll选中(在这里只介绍纵向滚动条,横向滚动条与之原理相同)。然后是按Ctlr+w进入classwizard选中对话消息WM_OnVScroll,并添加它的响应函数,接着进入代码编辑区,写入代码: void CRq::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar*转载 2013-06-21 09:35:55 · 680 阅读 · 0 评论 -
动态改变网页内容(CHtmlView/CWebBrowser2/IE
很多时候,我们需要动态的修改网页的内容。早先COM集中营曾有篇文章介绍过,源代码:http://263.csdn.net/FileBBS/files/2001_9/T_642_1.zip其中基本代码如下:void CMainFrame::OnChangehtml() { IHTMLDocument2 *pHTMLDocument=NULL; IPersistStrea转载 2013-06-19 14:35:35 · 932 阅读 · 0 评论 -
MFC字体(二)(控件字体颜色)
改变Edit字体颜色:1、CMyDlg类中添加成员变量:CBrush m_Brush;2、OnInitDialog中初进行设置:m_brush.CreateSolidBrush(RGB(0,255,255));3、添加消息响应函数:OnCtlColorif(nCtlColor == CTLCOLOR_EDIT){ if(pW转载 2013-06-08 15:38:20 · 642 阅读 · 0 评论 -
几种MFC对话框的隐藏方法
笔者现在了解一种比较简单的方法,即:修改CXXAPP中的InitInstance函数,将原来的模态对话框改为非模态对话框,及修改[cpp] view plaincopyINT_PTR nResponse = dlg.DoModal(); 为[cpp] view plainco转载 2013-06-07 18:54:30 · 593 阅读 · 0 评论 -
c++编写gif动画现实控件
gif.hclass CGIFImage : public CStatic{ // Constructionpublic: CGIFImage(); void LoadGIF(WCHAR *); void Pause(); void Resume(); int m_state; // Attributesprivate: struct _sTHPar { Imag转载 2013-06-06 14:19:59 · 793 阅读 · 0 评论 -
C++中文转16进制,再转化为2进制数组
#include #include #include using namespace std;void string_to_hex(ostringstream& oss, string s){ oss.flags(ios::hex | ios::showbase | ios::uppercase); for(size_t i=0; i<s.length(); ++i)转载 2013-06-08 16:10:26 · 1083 阅读 · 0 评论 -
MFC怎样编写后台运行的程序
MFC怎样编写后台运行的程序--------------------------------------------------------------- http://www.codeproject.com/system/xservice.asp ---------------------------------------------------------------转载 2013-05-29 14:39:29 · 1047 阅读 · 0 评论 -
vc中调用Flex的总结
该文章讲述了VC Dialog中使用FLEX的生成文件SWF,VC可调用FLEX中的方法,FLEX中可调用VC的方法。以下是简单的实例代码。该文章针对读者:具备FLEX开发基础,熟悉VC6.0 编程环境:VC6.0 FLEX3.2 FLASH_PLAYER_10_ACTIVE_X.EXE(要注意控件的版本,否则可能会引起不必要的错误。转载 2013-05-15 19:12:37 · 709 阅读 · 0 评论 -
使用CImage类切割png图片
1.新建一win32控制台应该程序:png,勾选支持MFC2.新建类:CImageHandler,并在头文件加添加#include (CImage头文件)#pragma once#include class CImageHandler{public: CImageHandler(void); ~CImageHandler(void);private: CI转载 2013-05-14 09:32:31 · 1915 阅读 · 0 评论 -
进程间通信 - 匿名管道实现
引子前面的两篇博文分别介绍了通过剪贴板和通过邮槽来实现进程之间的通信,其中剪贴板呢,是用来实现本地两个进程之间的通信,而邮槽则既可以实现本地两个进程之间的通信,也可以实现本地进程和服务器进程的通信,当然,上面这两种方式都是有局限性的,比如剪贴板就只能实现本地进程之间的通信,而在邮槽中,虽然是既可以实现本地进程之间的通信,又能实现本地进程和远程服务器进程的通信转载 2013-09-12 11:57:57 · 811 阅读 · 0 评论 -
Do You Have Problems With Windows Error Reporting Event Id 1001?
Problem: Windows Error Reporting Event Id 1001 errors are caused by missing system files or broken system registry structures. This is a critical sign of an unstable system that is typically caused原创 2013-09-17 14:51:05 · 2666 阅读 · 0 评论 -
eMule学习笔记一
转自中国源码网eMule的官方首页上写着:2002年05月13日 一个叫做 Merkur 的人,他不满意原始eDonkey2000客户端并且坚信他能够做的更好,所以他开始制作。他聚集了其它开发人员在他的周围,并且eMule工程就此诞生。eMule是一个典型的MFC程序,它的图形界面等,已经和MFC紧紧融合到了一起。因此通常情况下它只能在windows平台下运行。有一些其它的工程,如转载 2014-12-03 13:50:43 · 813 阅读 · 0 评论 -
Wininet协议栈的一个缺陷
前段时间在为某个项目定位一个问题时,发现一个问题:问题背景: 业务在WM平台上开发,客户端与服务器之间传输采用HTTP协议,采用Wininet库进行的封装,由于业务的需要,在某些场合下需要采用wap接入点,在某些情况下,需要采用net接入点接入。问题出现的情况: GPRS拨号采用系统自带的ConnectionManager进行管理,调用的是ConnMgrEstablishCon转载 2014-11-28 10:57:57 · 587 阅读 · 0 评论 -
VC 让进程/网页静音的方法
BOOL SetMute(BOOL bMute){HMIXER hMixer;MIXERCONTROL mxc;MIXERLINE mxl;MIXERLINECONTROLS mxlc;MIXERCONTROLDETAILS mxcd;MIXERCONTROLDETAILS_SIGNED volStruct;MMRESULT mmr;//Sound Sett转载 2014-10-21 15:19:06 · 1140 阅读 · 0 评论 -
对SendMessage与PostMessage的理解
学习VC++近几个月的时间了。 现在回过头来回想消息机制时,对SendMessage与PostMessage的区别与联系仍然是懵懵懂懂的。有些时候分不清到底是哪个发送消息后会立即返回。 因此,特别在这些记录一下,以备不时不需: 1、消息结构体:1typedef struct tagMsg2{3 HWND hWnd;4 UINT msg转载 2014-10-30 16:30:31 · 608 阅读 · 0 评论 -
VC中模态窗口启动就隐藏界面的实现
1、在BOOL C***Dlg::OnInitDialog()中添加如下代码BOOL C***Dlg::OnInitDialog(){ ...//MFC 默认生成的代码 // TODO: Add extra initialization here //修改属性,不显示在任务栏上 this->ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_转载 2014-10-30 16:29:34 · 988 阅读 · 0 评论 -
timeGetTime() 时间误差问题
最近在个地形渲染相关的东西,使用了timeGetTime()获取两个时间点之间的时间间隔,但是移动相机时总是感觉有抖动。首先,查找了消息泵,以为是这里出现了什么神奇的消息,耽搁时间。用spy++跟了一会,没发现什么神奇的消息。后来用timeGetTime(),到处打标记,显示时间差,在没有做任何事情的时候,打印timeGetTime时间间隔,间隔一会就会打印一个15ml的时间间隔,不知道哪里来的。转载 2014-03-27 10:39:58 · 3733 阅读 · 0 评论 -
ANSI转换到Unicode 或者将Unicode转换到ANSI
将ANSI转换到Unicode (1)通过L这个宏来实现,例如: CLSIDFromProgID( L"MAPI.Folder",&clsid); (2)通过MultiByteToWideChar函数实现转换,例如: char *szProgID = "MAPI.Folder"; WCHAR szWideProgID[128]; CLSID clsid; long lLen转载 2014-03-17 18:35:34 · 891 阅读 · 0 评论 -
OnPaint()函数的作用原理
WM_PAINT是窗口每次重绘都会产生的一个消息。 OnPaint是对这个消息的反应函数mfc 的 CWnd::OnPaint 没做什么,只是丢给系统处理。一 :先执行OnEraseBkgnd,擦除背景(如果想自绘控件,这个函数直接return TRUE就可以了,这样就不会擦除背景,不会闪)OnEraseBkGnd与OnPaint的区别与联系转载 2014-02-12 15:30:04 · 942 阅读 · 0 评论 -
VC双缓冲绘图
最早在vchelp上发表过的一篇文章,VChelp已经上不了了,又有好多人问人关于VC双缓冲绘图方面的问题,下面我将这篇文章再重新发出来,供大家学习一下: 用vc做的画图程序,当所画的图形大于屏幕时,当拖动滚动条时屏幕就会出现严重的闪烁情况,为了解决这一问题就得使用双缓冲来解决这一问题,程序产生严重的闪烁问题是因为画图过程中前后两次的画面反差很大造成的人的视觉的闪烁。因为在VC转载 2014-02-12 14:44:16 · 754 阅读 · 0 评论 -
解决Windows 程序界面闪烁问题的一些经验
原帖地址:http://blog.joycode.com/yaodong/archive/2004/11/26/39764.aspx一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。先来谈谈闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是写到了显转载 2014-02-11 16:50:17 · 674 阅读 · 0 评论 -
仿QQ右下角弹窗新闻_源码分享
转载:http://blog.csdn.net/cometnet/article/details/7854345转载 2014-01-09 11:20:42 · 720 阅读 · 0 评论 -
MFC中设置静态文本的字体颜色、背景透明以及解决字体重叠
将static设为背景透明时,改变该控件的文本将会出现文字重叠的现象。 其实设置为透明背景也就是在static重画背景时返回一个空的刷子而已,所以你改变文本并没有改变上次残留的背景,从而导致重叠现象。 为了解决这个问题,我们可以让父窗口重绘此区域。 以下是我的解决方法:1. 从CStatic继承一个类CStaticEx(添加CStaticEx转载 2013-12-24 11:24:58 · 880 阅读 · 0 评论 -
使用MFC CImage类绘制PNG图片时遇到的问题
为了测试CImage绘制PNG图片的效果,我们用截图软件截得一张360的界面,然后使用PhotoShop等工具在图片的周边加上了透明的区域,然后保存成PNG图片文件。CImage首先从文件中加载,即[cpp] view plaincopyCImage* m_pImgBk; ...... m_pImgBk = new CImag转载 2013-12-18 15:43:55 · 820 阅读 · 0 评论 -
在VC++中读写INI文件
在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中. 1.所用的WINAPI函数原型为: BOOL WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,转载 2013-12-18 09:24:50 · 604 阅读 · 0 评论 -
dll编程学习日志
这篇日志可以认为是学习反汇编的一个分支,因为在很多程序里都使用了dll。因此弄清楚dll很重要。最近也一直在搜索相关的文章,有很多不错的,比如宋宝华的《深入浅出Visual C++动态链接库编程》。那书是基于VC6的,而我用的是vs2005,因此应该是有所区别。因为是初学,也没有系统的资料,只好一点一点摸索了。步骤如下:因为是初学,所以需要微软的帮助,就勾上了导出符转载 2013-11-27 11:30:18 · 638 阅读 · 0 评论 -
vc 结束线程
在wtl工程中定义一个现成,如下:DWORD WINAPI ThreadFunc( LPVOID pParam ){if( g_pMainlg )g_pMainlg->DoEnumNetwork();return 0;}void CMainDlg::StartTreeThread(){DWORD dwThreadId;HANDLE hThrd = Cre转载 2013-11-15 14:12:34 · 686 阅读 · 0 评论 -
查询注册表判断是否使用无线网卡
http://bbs.csdn.net/topics/310039886原创 2013-10-17 09:22:58 · 1859 阅读 · 0 评论 -
MFC进度条的美化
平台:VS2005;资料参考:来源于网络;内容介绍:创建自绘进度条,并在进度条上显示当前进度的百分比。第一步:创建基于对话框的工程,在对话框中放置一个进度条控件,把进度条控件的属性Smooth设置为真。第二步:【1】添加基于进度条CProgressCtrl控件新类CMyProCtrl;【2】为CMyProCtrl类添加WM_PAINT消息转载 2013-05-13 15:10:53 · 2944 阅读 · 0 评论 -
利用CImage显示透明PNG图片
类CImage,头文件atlimage.h1.显示背景透明的PNG图片CImage m_Image;m_Image.Load(图片路径);//装载图片for(int i = 0; i { for(int j = 0; j { unsigned char* pucColor = reinterpret_cas转载 2013-05-14 09:33:57 · 1268 阅读 · 0 评论 -
VS2008的环境下,使用MFC和MSChart小结
用C++处理数据,想用图表的形式展现出来。发现微软有一个叫做MSChart的控件,但是网上找到的都是在C#中怎么使用,以及VC6.0中的MFC里添加MSChart. 1、安装。 依次装上dotnetfx35setup.exe,MSChart.exe,MSChart_VisualStudioAddOn.exe。2、去网上下一个mschrt20.ocx,放在C:/W转载 2013-04-19 11:52:07 · 1419 阅读 · 0 评论