随笔分类 - MFC
摘要:(1) 在Frame中包含view头文件时注意包含的顺序问题(2)
阅读全文
摘要:在实现绘图的过程中,显示的图形总是会闪烁,笔者曾经被这个问题折磨了好久,通过向高手请教,搜索资料,问题基本解决,现将文档整理出来以供大家参考.1.显示的图形为什么会闪烁 我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图内容反差很大,这样在短时间内背景色与显示图形的交替出现,使得显示窗口看起来在闪。如果将背景刷设置成NULL,这样无论怎样重绘图形都不会闪了。当然,这样做会使得窗口的显示乱成一团,因为重绘时没有背景色对原来绘制.
阅读全文
摘要:CDC *pDc=new CClientDC(this); CBrush brush; brush.CreateSolidBrush(RGB(0,255,0)); CBrush *pOldBrush = pDc->SelectObject(&brush); pDc->Rectangle(50,50,200,200); pDc->SelectObject(pOldBrush); delete pDc; 比较困惑的是pDc->SelectObject(&brush);将刷子选入dc中,返回了一个CBrush类型的指针pOldBrush ,为什么在画完矩形之后
阅读全文
摘要:AfxWinInit函数用于初始化MFC.CWinApp 调MFC支持的WinMain, WinMain自动调AfxWinInit 做初始化。控制台程序不使用MFC支持的WinMain,所以要自己调用AfxWinInit来初始化MFC。::GetModuleHandle 函数,取得当前模块的句柄 用作参数1。参数2必须是NULL。参数3取回命令行位置参数的函数,命令行 放入字符串。win32中程序举例:int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){ int nRetCode = 0; // initialize MFC and print
阅读全文
摘要:如果选择use MFC in a Shared DLL 的话,你编译后的程序中不包含MFC库,所以文件会比较小,但是如果你的程序直接移到一个没有安装过MFC的机器上时,可能会导致找不到MFC的DLL。如果选择Use MFC in a Static Library ,那你编译后的程序就直接包含了调用MFC的部分的库,文件可能会大一些,但是可以直接移到其他机器上运行。前者是动态连接,发布要带MFC得DLL文件。 后者是静态链接,发布不用带MFC的DLL文件。如果可执行文件只有一个,使用前者,执行速度快,但文件比较大。 如果可执行文件多个,使用后者,因为DLL文件是共享的,所以文件体积总量减少。 单
阅读全文
摘要:BOOL CConVFPJPGDlg::SeekContent(LPCSTR pstr){ CFileFind m_finder; BOOL bWorking; int bexitType; strWildcard=pstr; if(strWildcard.IsEmpty()) { MessageBox("选择有效的路径"); return (0); } strWildcard += ("\\*.*"); //寻找strWildcard目录下有没有文件、或者是默认的"."和".."文件夹,如果有,返回1,否则返回0
阅读全文
摘要:转载:http://www.cnblogs.com/yxin1322/archive/2008/03/08/donamiclinklibrary.htmlWindows下动态链接库的编写 在VC中新建一个空的Win32动态链接库工程(Win32 Domanic Library),然后添加一个C++ Sourse File到工程,我这里的文件名取DllTest.cpp。然后在文件中添加如下内容://DllTest.cpp_declspec(dllexport) int add(int a,int b){return a+b;}_declspec(dllexport) int subtract(i
阅读全文
摘要:http://blacksnow.blog.51cto.com/265898/162216/http://www.cnblogs.com/Clingingboy/archive/2011/03/20/1989752.htmlhttp://blog.csdn.net/wanhui520/article/details/7021180
阅读全文
摘要:The GetParent function retrieves a handle to the specified window's parent or owner.To retrieve a handle to a specified ancestor, use theGetAncestorfunction.//该函数返回的是指定子窗口的父窗口的句柄,其中,参数hWnd为子窗口的句柄SyntaxHWNDGetParent(HWNDhWnd);ParametershWnd[in]Handle to the window whose parent window handle is to
阅读全文
摘要:UpdateData,顾名思义,是用来刷新数据的。 UpdateData(TRUE) -- 刷新控件的值到对应的变量 UpdateData(FALSE) -- 拷贝变量值到控件显示例如,窗口中用 DDX_Text(pDX, IDC_EDIT1, m_usercode); 将IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_usercode之后要想对应控件显示更改,则需要调用UpdateData(FALSE);反之在IDC_EDIT1的oneditchanged()中需要加入UpdateData(TRUE); 简单的说,如果Updatedata(TRUE) == ...
阅读全文
摘要:这是从新对windows的自定义消息响应函数进行整理。因为我发现自定义消息响应函数还是非常有用的,尤其是在windows多编程中,用的类越多,有时候就比较有用。Windows消息用"WM_"这个前缀,自定义的消息一般用"UM_这个前缀"。//////////////////////////////////////////////////////////////////////////////////////////////////////////////////1.建立响应函数的原型:在VS2005中,对于响应函数有了个比较严格的规定,导致以前VC6里面
阅读全文
摘要:先请看SetTimer这个API函数的原型UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器 UINT uElapse, // 时间间隔,单位为毫秒 TIMERPROC lpTimerFunc // 回调函数);例如SetTimer(m_hWnd,1,1000,NULL); //一个1秒触发一次的定时器在MFC程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了于是SetTimer函数的原型变为:UINT SetTimer(UINT nIDEvent,U
阅读全文
摘要:使用VS2008,在项目属性中有一项MFC的使用,有三种设置: 1.使用标准Windows库 2.在共享DLL中使用MFC 3.在静态库中使用MFC 第一种顾名思义。第二种指的是打包时一些MFC的DLL的内容没有被包含在EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件。第三种是将DLL中的相关代码写进EXE文件中,文件较大,但是可以在没有相关DLL的机器上运行。 同时,如果程序本来是第二种方式,发给同事,在同事机器上运行时,可能会出现错误:“无法启动程序……,由于应用程序配置不正确,未能启动此应用程序。”
阅读全文