VC
zaijzhgh
这个作者很懒,什么都没留下…
展开
-
(zt)如何执行一个资源中的可执行程序
<br />C++ 代码CFile f;char* pFileName = "Execution.exe";if( !f.Open( pFileName, CFile::modeCreate | CFile::modeWrite, NULL ) ){AfxMessageBox("Can not create file!");return 0;}CString path = f.GetFilePath();HGLOBAL hRes;HRSRC hResInfo;//转载 2010-07-08 15:29:00 · 649 阅读 · 0 评论 -
让Notepad++变成一个轻量级的C/C++编译器 - 电脑狂 - IT世界 http://www.itlodge.net/article/121.html
为什么要这样?C/C++的IDE(如VS)的启动速度太慢了!对于刷题的人来说,单个文件还要开IDE,就跟大炮打蚊子一样!而且那些项目文件20多M,实际的代码,obj文件和exe文件不超过1M,对于那些刷题帝来说,太浪费硬盘空间了。我们需要速度,我们需要操作简便,我们需要更大的硬盘空间,于是我们把Notepad++打造成一个C/C++编译器。实际上,其它的文本编辑器如ultraeditor等也可转载 2012-09-20 11:55:40 · 5212 阅读 · 0 评论 -
VC调试内存泄露
<br />在编写程序的时候,很多时候出现了内存泄露却不知道该从哪里找.当然,从源头上制止这种现象才是最重要的,但是,有的时候做不到这一点,那么怎么找出这些讨厌的bug呢?下面介绍一些方法:<br />在头文件中或者源码文件中包含/* for memory leak detect */#define _CRTDBG_MAP_ALLOC#include <stdlib.h>#include <crtdbg.h>PS:这些文件的顺序不要改变然后,在主函数开始的地方添加_CrtDump原创 2010-11-10 18:06:00 · 1632 阅读 · 0 评论 -
截屏并保存为bmp格式
<br />嗯,代码大部分是在网上找的.自己组合了一下.算是拿来主义吧...哈.<br />void CSaveBmpDlg::OnButton1() { // TODO: Add your control notification handler code here HWND hWnd = ::GetDesktopWindow();//获得屏幕的HWND. HDC hScreenDC = ::GetDC(hWnd); //获得屏幕的HDC. int widt原创 2010-09-09 13:37:00 · 1467 阅读 · 1 评论 -
使用GDI+
GDI+ 是GDI(Windows 早期版本提供的图形设备接口)的后续版本,是Microsoft Windows XP作系统即后续版本的图形显示技术。它已经集成到了.Net开发环境中,所以不管你的OS是什么版本,只要安装了.Net框架,就有了GDI+(注意:是.Net框架,而不是.Net开发环境,所以Win98中也可以使用GDI+)。在头文件中加入下面的代码:#include using namespace Gdiplus;#pragma comment(lib,"gdiplus.lib")转载 2010-09-16 14:05:00 · 601 阅读 · 0 评论 -
如何获取当前时间的前N天时间格式字符串
<br /> 最近做项目,有这么一个需求:根据当前时间,得到前N天的年月日格式字符串,比如今天是2010年06月04日,那么今天的格式字符串为:20100604,昨天的应该为20100603,前天的为20100602, etc...<br /> 看到这个需求的时候,我首先是想根据年月日推算前N天分别是什么.但是后来一想,这个方法太麻烦了,要考虑年月日的进位退位,不是一般的繁琐.<br />后来在老大的帮助下,使用了一种新的方法.就是得到当前距离1970年的秒数,然后分别减去一天的秒数,然后再转换回CTi原创 2010-06-04 18:17:00 · 1412 阅读 · 0 评论 -
非模态对话框的销毁
非模态对话框是在堆上创建的.所以销毁的时候需要重载OnOK和OnCancel以及PostNcDestroy,在OnOK和OnCancel中使用DestroyWindow(); 来替换原来的代码.如果对话框为游离状态(指父窗体或其他窗体没有掌控指向该对话框的指针),就需要重载PostNcDestroy()函数.在PostNcDestroy()中添加delete this; 即原创 2010-05-29 16:33:00 · 809 阅读 · 0 评论 -
防止刷新的时候背景闪烁
在某些时候,我们需要控件或者画图更新之后刷新显示,可以使用Invalidate或者InvalidateRect.但是Invalidate会导致整个窗口刷新,这个有时候我们不需要,InvalidateRect可以刷新指定的区域,如果这样使用:InvalidateRect(rect); 但是这样会导致rect区域的背景也会刷新,经过google一番,发现应该这样使用:InvalidateR原创 2010-05-22 15:28:00 · 1117 阅读 · 0 评论 -
CImage显示透明PNG
在做项目的时候,需要用到透明的png格式的图片,使用CImage的时候,发现显示出来的并不是透明背景的图片,而且一些黑色边加一大片白色背景的图片,这是怎么回事呢?用ps来看的时候明明就是透明的呀...不明白.于是google一番,找到一些关于这类问题的看法:以下为转述:PNG图片的透明背景总是一片白色,后来才发现这其实是微软GDI+的设计问题,PNG图片是ARGB,使用GDI+载入图片的时原创 2010-05-24 10:36:00 · 6142 阅读 · 9 评论 -
(ZT)MFC中模态对话框的调用流程小解
首先,DoModal()会使用对话框模板名来从应用程序的资源文件中查找、载入并锁定对话款模板。如果DoModal()不能定位资源,则返回错误代码-1;然后,这个函数会调用PreModal()。PreModal会执行一些安全检查,然后为对话框查找父句柄(会通过CWnd::GetSafeOwner)。然后将结果保存在m_hWnd中。之后,它会调用EnabledWindow(FALSE)来冻结转载 2010-05-15 17:59:00 · 1040 阅读 · 0 评论 -
TCPMP编译出现Error PRJ0019错误的一个解决方案
使用VS2008编译tcpmp,发现编译common的时候出现了一个error PRJ0019的错误.Project : error PRJ0019: 工具从"正在执行预生成事件..." 开始我不知道问题出现在哪里,然后上网搜索,找到回答说是:预生成事件的设置的问题.但是这些设置我都没有更改过.只不过clear一下.然后再编译就出问题了.所以应该不是设置的问题. 换了一个编译器V原创 2012-11-20 11:31:01 · 1720 阅读 · 0 评论