摘要:
最近写了一个GDI 绘图的程序,过程中遇到一个奇怪的问题,就是 定时器定时一会GDI绘的图就消失了。。后来经过分析,原来是 GDI对象数量过多 ,即GDI对象超过10000个 导致内存泄漏的问题。找到了问题所在,就好解决了,就是及时释放GDI对象。在创建GDI对象的时候,遵循以下规则:GetDC 得到的DC要用 ReleaseDCCreateCompatibleDC 要用 DeleteDC例如:BOOL CLogicChartCtrl::DrawBmp( CDC* pDC, CRect rect, HBITMAP hBitmap ){ BITMAP bm; GetObject(hBitmap. 阅读全文
摘要:
vc中获取windows版本信息,一般是调用GetVersionEx 这个API函数来获取的,这个API需要OSVERSIONINFOEX 这个结构体作为参数,OSVERSIONINFOEX 的对应的具体的OS版本类型详细如下:Operating systemVersion numberdwMajorVersiondwMinorVersionOtherWindows8.16.3*63OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATIONWindows Server2012R26.3*63OSVERSIONINFOEX.wProductType != 阅读全文
摘要:
在VC++中,要实现对回车键的响应实现,一般通过截获消息来响应,即通过处理BOOL PreTranslateMessage(MSG* pMsg)这个函数来处理实现如下:BOOL PreTranslateMessage(MSG* pMsg){ if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN ) //屏蔽ALT+F4{ //处理响应回车键后的动作} return __super::PreTranslateMessage(pMsg);} 阅读全文
摘要:
在VC++中,想实现将MFC最小化到系统托盘,需要调用NOTIFYICONDATA类,并注册相应的消息,以下详细讲解如何实现:1。声明一个NOTIFYICONDATA类,也就是NOTIFYICONDATA NotifyIcon;该句可以放在Dlg类的声明中,作为Dlg类的一个成员;也可以放在Dlg类的实现中,作为全局变量来使用。2。声明一个响应函数afx_msg LRESULT OnClickTray(WPARAM wParam,LPARAM IParam);用于响应鼠标操作。将这个函数放入Dlg类的声明中,作为Dlg类的一个成员。3。自定义消息,用于点击托盘 来响应的消息:定义消息名称和消息 阅读全文
摘要:
1.1WS_CLIPCHILDRENWS_CLIPCHILDREN样式从字面上可以理解成ClipChildren,裁减子窗口。MSDN里的E文解释:Excludes the area occupied by child windows when drawing occurs within the parent window. This style is used when creating the parent window.读E文是一件困难的事,为了不让大家再重复我的痛苦,我就越俎代庖翻译一下:WS_CLIPCHILDREN样式主要是用于父窗口,也就是说当在父窗口绘制的时候,父窗口上还有一个 阅读全文
摘要:
Windows平台为我们提供了多种进程间通信的机制,主要包括:注册表方式、共享文件方式、共享内存方式、共享数据段、映射文件方式、管道方式、 剪贴板方式、消息方式。其中注册表方式需要增加注册表表项,而注册表一般不应删改,所以此种方式不被推荐;共享数据段需要借助动态链接库,实现起来比较麻 烦,这种方式也不被推荐。下面重点介绍一下其它几种进程间通信的实现方式。1.共享文件方式(1)数据发送数据发送进程为通过Cfile类创建一个共享文件,然后调用Write()方法想文件中写入数据,具体如下:void CSendDlg::OnSend(){ //TODO: 在此添加控件通知处理程序代码 UpdateDa 阅读全文
摘要:
要在Unicode字符集环境下把CString转化为char*方法: CString str = _T("D://校内项目//QQ.bmp");//////leo这个NB 可以降在Unicode下的CString转化为char* //声明标识符 USES_CONVERSION; //调用函数,T2A和W2A均支持ATL和MFC中的字符转换 char * pFileName = T2A(str); //char * pFileName = W2A(str); //也可实现转换在Visual C++.NET2005中,默认的字符集形式是Unicode,但在VC6.0等工程中,默 阅读全文
摘要:
WTL 绘制的进度条,逻辑清晰明了,代码函数清晰易懂:基本思路就是 首先绘制 进度条背景图,然后根据动态进度不断重绘前景进度条,绘制操作在OnPaint函数里画。该类可以直接用于项目中。使用示例:MyProgress* pMyProgress = new MyProgress; CRect rcProgress; rcProgress.top = 500; rcProgress.left = 240; rcProgress.right = rcProgress.left + 500; rcProgress.bottom = rcProgress.top + 20; CString strFor 阅读全文
摘要:
C++读取xml有很多第三方的xml解析库,最近使用tinyxml库来解析,下面直接上应用例子:Skin.xml文档内容如下: C++利用tinyxml库读取的关键代码如下:(这里得先说明下,下面代码中的MyButton类是我自己自定义的button类,实现原理和代码在我的另一篇文章:http://www.cnblogs.com/JczmDeveloper/p/3494615.html):#include "tinyxml/tinyxml.h"void LoadSkin(LPCTSTR lpszRelativePath,LPCTSTR lpszXmlName){ CStri 阅读全文
摘要:
WTL 自绘Button类,支持按钮三种形态,正常模式,hover模式,鼠标按下模式,支持png图片。使用方法很简单: MyButton* pButton = new MyButton;pButton->SetBtnBmp(strBtnNormal,strBtnHover,strBtnDown);pButton->Create(m_hWnd,rt,NULL,WS_CHILD|WS_VISIBLE);pButton->SetBtnID(nID);//该ID是用来处理WM_COMMAND 命令的,即单机左键命令#pragma once#pragma comment(lib, &q 阅读全文