VC/MFC
ameyume
蓝蓝的天,白云朵朵。
展开
-
OnInitUpdate、OnUpdate、OnDraw与OnPaint
OnInitUpdate、OnUpdate、OnDraw与OnPaint!OnDraw,一般是收到WM_PAINT消息时调用,所以应用程序一般通过Invalidate产生WM_PAINT消息来间接调用OnDraw。当窗体无效等情况下,window也会产生WM_PAINT消息,这时OnDraw 也被间接调用。 OnUpdate 是CView提供的一个方法,一般当文档修改时调用,应用程序框架在CView::OnInitialUpdate 和CDocument::UpdateAllViews 的默认实现中都会调用原创 2010-12-02 10:31:00 · 3413 阅读 · 0 评论 -
[整理]点击最小化时把窗口放在系统托盘中的方法
<br />所谓的“托盘”,在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那一部分。在程序最小化或挂起时,但有不希望占据任务栏的时候,就可以把程序放到托盘区。<br />一 、原理<br />1、最小化的原理:首先要将窗口隐藏,然后 在右下角绘制图标。<br />2、恢复的原理:将窗口显示,再将托盘中的图片删除。<br /><br />二、代码实现<br />1、自定义消息WM_SHOWTASK: #define WM_SHOWTASK (WM_USER +1) /*为了防止用原创 2010-11-25 16:10:00 · 2886 阅读 · 1 评论 -
MFC显示彩色拷贝位图的方法
1.定义一个BYTE类型的指针,用来指向将要拷贝的位图,直接使用unsigned char类型也可以,应为BYTE被定义为unsigned charunsigned char *pBits = NULL;2.使用GetBitmapBits函数来拷贝位图,位图的宽为src_width,高为src_height,单位为像素。先给存放位图的指针pBits申请内存,长度大小为“长 * 宽 * 4”,4表示一个像素的占用的字节大小pBits = new unsigned char[client_w * client_原创 2010-11-24 19:11:00 · 2977 阅读 · 0 评论 -
MFC的View子类中判断当前view是否是活动的方法
<br />CMDIFrameWnd *pFrame = (CMDIFrameWnd *)AfxGetApp()->m_pMainWnd; CMDIChildWnd *pChild = (CMDIChildWnd *)pFrame->GetActiveFrame(); CAnalyseDispView *pView = (CAnalyseDispView *)pChild->GetActiveView(); if ((this) == pView){ ...}<br /> 利用原创 2010-11-24 18:51:00 · 2963 阅读 · 0 评论 -
位图和Bitblt
见招拆招《Windows程序设计》(十二)<br />位图和Bitblt<br />http://www.aogosoft.com/downpage.asp?mode=viewtext&id=238<br /> <br />原创 2010-11-23 17:05:00 · 1793 阅读 · 0 评论 -
用GetTextExtent取得字符串的宽度和高度
用法:GetTextExtent 函数功能:使用该函数获得所选字体中指定字符串的高度和宽度 函数原型:CSize GetTextExtent(LPCTSTR lpszString, int nCount); 参数: lpszString是字符串的指针 nCount是所包括的字符数 返回值CSize是包含(cx,cy)2个成员的结构,cx是字符串的宽度,cy是字符串的高度。例子:CString cstr = "Hello";CSize siz = pDC->GetTextExtent(c原创 2010-11-19 11:01:00 · 15411 阅读 · 0 评论 -
VC++中所见即所得打印的简易实现
<br />在VC++6.0中用应用程序向导(AppWizard)生成的单文档或多文档程序提供了对打印功能的实现,但遗憾的是如果对自动生成的框架程序不做任何改进,打印出来的文档或图形和屏幕上的显示相比就会特别小。为什么会这样呢?<br /> <br />本文对这种现象的原因和MFC的打印机制进行了深入的分析,并提出了一种特别简单的方法,在原有的程序中只需加入几行代码就能解决这一问题,实现所见即所得的打印。<br /> <br />首先,分析MFC的打印机制,把原理弄清楚了,就不难明白现象形成的原因和提出解决转载 2010-11-18 18:46:00 · 2451 阅读 · 0 评论 -
wsprintf不支持%f的解决方法
wsprintf不支持%f,即不支持浮点数,双精度数格式化。又sprintf在mfc中编译会提示warning,说此函数太老了,不推荐使用。所以可以把float, double型数据先格式化为CString类型,再格式化为char[]。例如double val_max = 5.0;char cArr[20] = "";CString str;str.Format("%f", val_max);wsprintf(cArr, "%s", str.GetBuffer(str.GetLength原创 2010-11-16 15:22:00 · 5886 阅读 · 1 评论 -
VC取得当前目录和操作系统盘符的方法
1.取得当前目录char szModulePath [_MAX_PATH]; /* Path of Module */ // Get current module handle HMODULE module = GetModuleHandle(0); // Get current file path GetModuleFileName(module, szModulePath, sizeof(szModulePath)); CString strPath = szModulePath原创 2010-11-16 11:12:00 · 8731 阅读 · 0 评论 -
VC创建目录及取得系统时间的方法
char filePath[] = "C:/test"; // At frist, check path exists or not if( !PathFileExists(filePath) ) { BOOL isDirSuccessFlg = FALSE; // Define create directory flag SECURITY_ATTRIBUTES attrib; // Define security attributes原创 2010-11-16 10:57:00 · 1802 阅读 · 0 评论 -
MFC输出Log信息到log文件
<br /> 有的时候,我们的工程需要记录一些Log的信息到文件中,方法有各种各样,下面介绍比较简单易用的CStdioFile类方法,自定义WriteLog方法,再调用CStdioFile方法即可:<br />void OutputLog(LPCTSTR logName, CString msg)<br />{<br /> try<br /> {<br /> //设置文件的打开参数<br /> CStdioFile outFile(logName, CFile::mo原创 2010-12-31 11:17:00 · 17575 阅读 · 1 评论 -
VC/MFC Q&A(整理)
<br />Q 如何处理ComboBox中的回车键?避免退出程序?<br />A 在一般的EDIT中采用的方法是处理PretranlateMessage(),执行代码<br />CWnd *pWnd = GetFocus();<br />if(pWnd != NULL)<br />{<br />if(pWnd == GetDlgItem(IDC_EDIT1)<br />{<br />...//IDC_EDIT1具有焦点<br />}<br />}<br />但在ComboBox中好象不同,是ComboBox转载 2010-12-24 11:59:00 · 2107 阅读 · 0 评论 -
MFC中对C中字符串操作函数的替代函数
MFC中StrCpyN函数代替C中的strncpy,参数不变。使用此函数需要引入以下头文件#include "Shlwapi.h"原创 2010-10-22 14:07:00 · 2294 阅读 · 0 评论 -
VC Log中输出时间的方法
// Get time SYSTEMTIME st; ::GetLocalTime(&st); CString m_sTimeName = ""; m_sTimeName.Format("%02d:%02d:%02d", st.wHour, st.wMinute, st.wSecond); TRACE("%s ********** OnPaint() *********/n", m_sTimeName);原创 2010-12-02 10:48:00 · 2938 阅读 · 0 评论 -
Windows8安装Visual Studio 2012的方法
1.先下载VS2012的安装文件,网上有很多ISO安装文件,还是旗舰版的。VS2012_ULT_chs.iso下载下来1.6G多点。注:VS2012要求安装在win8系统上,xp,win7都安装不了。2.用Ultra ISO等程序打开安装即可,完全安装需要8G空间,我只安装了MFC选项,但也需要5G多的空间,安装后会把C++, C#,F#,VB等都安装上。安装过程很耗时原创 2013-12-04 22:04:05 · 11202 阅读 · 0 评论