随笔分类 - Mfc
摘要:由于需要将MFC程序在其它电脑上运行,所以需要将动态链接的MFC改成静态链接,本以为很简单,没想到链接的时候出现下面的链接错误:uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" ...
阅读全文
摘要:一、前言 刚接到个任务,要把带有透明背景的章子图片打印出来,开始觉得不是很简单吗,直接用vc自动生成的打印功能不就ok了。不过问题却不是想像的那么简单!二、窗口中显示透明图片 在窗口中显示图片,可以用强大的CImage类,这个类能加载很多常见格式的图像文件,当然对于我要加载的png格式的透明图片也是可以的。具体的代码如下:1 CImage m_image;2 3 m_image.Load(_T("picture.png"));4 if (m_image.IsNull())5 {6 MessageBox(_T("图片没加载成功"));7 return;8
阅读全文
摘要:今天由于项目的需要,要编写个能编辑的List控件,即双击List控件的表项能修改其中的内容。由于MFC自带的List控件是不能编辑的,所以在网上找了下怎样编写可编辑的CListCtrl控件,基本上都是继承CListCtrl这个类,我叫它CEditListCtrl控件。 具体方法:在继承的CListCtrl的类中响应鼠标双击的消息,根据鼠标双击的位置获取List控件中被选中的子表项。在获取的子表项位置上显示一个编辑框,并将编辑框中的内容设置为选中的子表项的内容,同时将焦点设置在编辑框上。当焦点离开编辑框的时候,则认为输入结束,并把编辑框中的内容重新设置为被选中子表项的内容。显示的效果如下图...
阅读全文
摘要:今天装了个oracle客户端,准备写个访问远程oracle的程序。用的是vs2010,采用ADO的连接方法连接oracle,结果运行的时候总是报下面的错:从提示可以看出是没有找到OraOLEDBups.dll这个动态链接库。 我的连接oracle数据库的代码是: 1 try{ 2 hr = m_pConnDes.CreateInstance("ADODB.Connection"); 3 if(FAILED(hr)) return ; 4 5 CString sDNS; 6 sDNS.F...
阅读全文
摘要:本文主要是介绍MSVC命令行参数,对于使用MSVC是很有帮助的。1 cl,MSVC编译器 /c:只编译链接 /Za:禁止语言扩展 /link:链接指定的模块或给链接器传递参数 /Od:禁止优化 /O2:以允许速度最快为目标优化 /O1:以最节省空间为目标优化 /GR或/GR-:开启或关闭RTTI /Gy:开启函数级别链接 /GS或/GS-:开启或关闭 /Fa:输出汇编文件 /E:只进行预处理并且把结果输出 /I:指定头文件包含目录 /Zi:启用调试信息 /LD:编译产生DLL文件 /LDd:编译产生DLL文件(调试版) /MD:与动态多线程版本运行库MSVC...
阅读全文
摘要:今天需要把项目静态链接的可执行程序到其它机器上运行,这个项目是用vc6.0写的,结果使用MFC静态库时发现编译出现下面的错误:--------------------Configuration: upload - Win32 Debug--------------------Linking...nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)naf
阅读全文
摘要:在DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 函数中响应WM_IME_CHAR消息,wParam所存的就是汉字的编码。代码如下:LRESULT CGetChineseByIMEView::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam){ // TODO: Add your specialized code here and/or call the base class if (message == WM_IME_CHAR) { ...
阅读全文
摘要:1.显示的图形为什么会闪烁 我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图内容反差很大,这样在短时间内背景色与显示图形的交替出现,使得显示窗口看起来在闪。如果将背景刷设置成NULL,这样无论怎样重绘图形都不会闪了。当然,这样做会使得窗口的显示乱成一团,因为重绘时没有背景色对原来绘制的图形进行清除,而又叠加上了新的图形。有的人会说,闪烁是因为绘图的速度太慢或者显示的图形太复杂造成的,其实这样说并不对,绘图的显示速度对闪烁的.
阅读全文
摘要:在程序中我们经常要使用定时刷新的功能,典型的应用是在信息管理系统中表单要跟着数据库中的数据变动。MFC提供了定时器来完成这个功能。=========================================================================在MFC中和定时器相关的有三个函数:UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)( HWND, UINT, UINT, DWORD) );afx_msg void OnTimer( UINT nIDEvent );
阅读全文
摘要:MFC对话框背景色的设置 一个基于对话框的MFC AppWizard应用程序中,如何改变对话框的背景颜色呢?对于这个问题,其实可以由几种不同的方法来实现,具体如下(粗斜体代码为增添的):---- 方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。---- 其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色。下面的例子是将应用程序对话框设置为蓝色背景和红色文本,步骤如下:---- ① 新建一个基于Dialog的MFC AppWizard应用程序ExampleDlg。---- ② 在CExampleDlgApp ::InitInstance()中添加如下代码:
阅读全文
摘要:1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。 2.查看一个宏(或变量、函数)的宏定义 把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defition Of …),如果没有建立Browse files,会出现提示对话框,确定,然后就会跳到定义那些东西的地方。 3.格式化一段乱七八糟的源代码 选中那段源代码,按ATL+F
阅读全文