MFC
文章平均质量分 60
jiangdf
这个作者很懒,什么都没留下…
展开
-
解决VC6在Win7或Win10下调试无法结束进程的Bug
自己的系统是Win7,装上了VC6,调试一段小代码之后再次编译的时候就提示如下的错误:LINK: fatal error LNK1168: cannot open Debug/1.exe for writing意思就是编译要生成同名的 1.exe,但是此文件文件无法写入,原因呢一般就是该文件被打开了,所以无法被覆盖。那么既然打开了咱们就给他关闭呗?将 VC6 退出调试状态,这个没问题,VC6可以退出。但是,大家会遇到两种情况:1、该进程无法被结束,即使使用任务管理器也不行。Windo.转载 2022-01-12 20:58:41 · 1926 阅读 · 0 评论 -
WIN10安装vc60无响应
Win10安装vc60无响应,提示安装不成功。解决方法:直到这一步,这一步很关键,点击数据访问 ,右侧点击更改选项来到下面这一步,按图取消后,点OK,在点击Continue最后一路顺畅到底。...原创 2021-10-20 15:04:53 · 1497 阅读 · 2 评论 -
在DLL中实现Trace打印输出
void DllTrace( const char* fmt, ... ){ if( NULL == fmt ) return; va_list args; va_start( args, fmt ); char szBuffer[ 1024 ]; vsprintf( szBuffer,fmt, args ); va_end(args); OutputDebugString(szBuffer);}...原创 2020-06-19 16:51:43 · 958 阅读 · 0 评论 -
VC++书签的添加
一般来说 很多人都遇到VC++书签功能不能使用 而VC有两种方法添加书签 一种是ctrl+f2即可 另和种是添加有标识符的标签 就是alt+f2弹出的框中加入标签 此种设置的书签可以用文字来描述 也方便管理.但是 有许多人遇到书签不能添加 里面全是乱码的情况 这时候 可以删除程序目录下的"工程名.opt"文件 然后再重新打开工程 就可以正常添加书签了.————————————————版权声明:...转载 2020-04-21 16:24:36 · 682 阅读 · 0 评论 -
LoadLibrary下错误返回126错误码排查过程
在开发一些Windows下的应用程序过程中,经常会手动加载一些DLL,使用的就是LoadLibrary这个函数,而这个函数一旦失败,返回的错误码基本都是126,126错误码的意思是找不到指定的模块,这不,我就遇到了这个问题,而且挺诡异的,就是Debug模式下一点问题没有,Release模式下就必出这个错误码。先介绍下问题的环境,一个应用程序需要加载一个IoT模块的DLL,这个DLL又依赖了一些...转载 2020-02-25 14:07:49 · 6469 阅读 · 1 评论 -
内存DC也有视口和窗口的
相信经常做图形可视化的人都知道双缓冲概念,那是优化刷新显示的技术。实际上,它还有其他用途。 一般的程序当中经常有缩略图、鹰眼、或者打印输出等。有人依靠截屏保存为图片来实现。这是可行的。不过缺点是再明显不过的了。当视图区有其他窗口遮挡时,截屏会把一些非显示区内容掺杂进来,效果不理想。 然而利用内存DC绘制可以避免这一缺点。如果将内存DC内容拷贝到屏幕DC上就属于双缓冲了。原创 2014-11-13 23:05:23 · 2048 阅读 · 3 评论 -
视口和窗口
映射方式指定了逻辑坐标系的逻辑单位和坐标轴正方向, 坐标原点没有涉及。而且, 在“自作主张的”两种映射方式下, 逻辑单位、坐标轴正方向和坐标原点都有待确定。“视口”是基于设备坐标的, 通常, 视口与客户区相同。点( 0,0)是客户区域的左上角。x 的值向右增加, y 的值向下增加。“窗口”是基于逻辑坐标的, 逻辑坐标可以是像素、毫米、英寸等, 我们在GDI 绘图函数中指定逻辑窗口坐标。映射方式转载 2014-11-12 16:45:26 · 961 阅读 · 0 评论 -
在非MFC程序中引用CString
CString在当今软件设计界里还是小有名气的,说它是MFC中使用的最多的类一点也不过,然而在使用sdk编windows程序的时候,确不能利用CString类,只能用sdk的运行时库,比如strlen,strcpy,strstr等等,本文讨论的是在非mfc程序中使用CString类的方法,算是个引子,如果有更好的实现方法,欢迎大家讨论。为了使用CString类,首先源文件必须是以cpp结尾转载 2014-03-26 18:21:34 · 875 阅读 · 0 评论 -
windows消息从User32 内核出来之后逆向过程
消息从User32 内核出来之后,应该是由Windows 系统自动发往各个窗口的消息处理函数,但这里怎么会全部进入了AfxWndProc()函数USER32 内核 -> AfxWndProcBase -> AfxWndProc -> AfxCallWndProc -> CWnd::WindowProc ->CWnd::OnWndMsg -> CWnd::OnCommand -> C原创 2013-06-01 17:05:41 · 2535 阅读 · 0 评论 -
Windows消息宏定义
winuser.h中有消息的宏定义:// begin_r_winuser/* * Window Messages */#define WM_NULL 0x0000#define WM_CREATE 0x0001#define WM_DESTROY原创 2013-06-01 10:09:28 · 1471 阅读 · 0 评论 -
在Release版本中输出打印信息,实现TRACE功能
在Release版本中不支持TRACE打印信息。所以在Release中需要自己实现TRACE,由于在VC6.0中不支持宏传递可变参数,所以编写函数实现TRACE;1. 在stdafx.cpp中编写函数实现TRACE功能;CStdioFile gDbFile;void __cdecl db_print(const char *lpszFormat,...){#ifdef RE原创 2013-04-18 19:37:22 · 6483 阅读 · 0 评论 -
非MFC工程使用MFC库时的问题及解决办法
非MFC工程使用MFC库时的问题及解决办法 最近正在写一个3ds max的模型导入插件,要求能够将自定义格式的三维模型文件导入到max中进行编辑。Max SDK提供了写这种插件的接口,可以在示例工程上直接进行修改,但这些工程都是标准C工程(未使用MFC)。非MFC工程创建时是不支持MFC特性的,也就是说在这些工程中不能使用MFC库中的类,如CString,CArray等等;然而我们在处理实转载 2009-04-18 23:29:00 · 1620 阅读 · 2 评论 -
CListBox多选并把多选的内容拷贝到剪贴板
int nCount = GetSelCount();if(0 == nCount) return;CArray aryListBoxSel; // 数组用来保存选择的项目的索引aryListBoxSel.SetSize(nCount);GetSelItems(nCount, aryListBoxSel.GetData()); CString strSe原创 2012-11-23 16:15:05 · 3371 阅读 · 1 评论 -
VC编程中常使用的子函数
1. 改变光标形状例如,改变光标为等待状态加载别的形状的光标:HCURSOR hCursor = SetCursor(LoadCursor(NULL,IDC_WAIT));注意,要保存SetCursor函数的返回值,用于恢复光标,使用SetCursor(hCursor)恢复原来的光标 2.1.判断某个文件是否存在 Determines whether a path to原创 2009-12-03 10:38:00 · 1523 阅读 · 0 评论 -
BCGSoft中界面中文的乱码问题
其实解决办法很简单。首先到“资源视图”[Resource View]中找到对话框的ID号,对其右击选择“属性”[Properties],然后在右边的属性栏中找到“语言”[Language]项,默认是英语(美国),改成中文(中国),OK,问题解决。这样既可以正常显示中文,又可以显示英文,一举两得,省了不少麻烦。如果你所有的对话框程序都是中文的话建议在建立项目的时候务必把“资源原创 2015-03-31 10:09:36 · 1573 阅读 · 0 评论 -
Windows映射模式及相关问题的解决
Windows应用程序绘制图形时使用的是一种逻辑单位,每个逻辑单位的大小由映射模式决定, 这个逻辑单位既可以与设备单位(屏幕或打印机上的一个像素点)相同,也可以是一种物理单 位(如毫米),还可以是用户自定义的一种单位。在Windows应用程序中,只要与输出有关系,都 要使用映射模式。本文的目的是帮助读者了解映射模式的一些基本知识,并对在使用中经常 出现的一些问题提出解决方案。一、映射模式基转载 2015-12-01 10:24:07 · 662 阅读 · 0 评论 -
MFC中App、Doc、MainFrame、View各指针的互相获取
MFC中App、Doc、MainFrame、View各指针的互相获取首先说明这四个类的执行顺序是:App->Doc->MainFrame->View消息响应顺序是:View->Doc->MainFrame->App// App中获取其它三项指针void CSDIApp::OnApp(){ // App // Doc CDo...转载 2019-06-25 13:14:50 · 714 阅读 · 0 评论 -
VC 英文菜单改为中文时出现乱码的解决方法
打开rc资源文件,按照下面方法修改:1.#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) //_CHS#ifdef _WIN32LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED#pragma code_page(936) //936...原创 2018-09-10 15:33:13 · 2212 阅读 · 0 评论 -
软件精确定时子函数
1. 微妙级别定时void precise_us(int usec){ __int64 time1 = 0, time2 = 0, freq = 0;QueryPerformanceFrequency((LARGE_INTEGER *)&freq);QueryPerformanceCounter((LARGE_INTEGER *) &time1);d原创 2017-06-30 10:11:57 · 327 阅读 · 0 评论 -
如何在Win10 64位系统中单步调试VC6.0
最近在Win10系统中调试VC6.0的程序,发现不支持单步调试,总是弹出下面的窗口,提示错误:尝试了网上的一些方法,都不行。最后摸索出一个设置,可以解决:Tools/Options/..... / debug 对话框中,取消"OLE RPC Debugging"勾选可以解决在Win10中单步调试VC6.0程序。另外一种方法:1、菜单Tools->Option...原创 2017-01-21 17:57:45 · 3278 阅读 · 0 评论 -
VC多文档初始框架视图最大化
在利用VC++开发软件时,开发多文档形式在初始化时,使其框架以及视图最大化的一个简单方法为:1、框架最大化为在应用程序类的初始化函数中添加如下代码: BOOL CMDIAppDemoApp::InitInstance() { ... ... pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);转载 2017-02-17 10:20:01 · 912 阅读 · 0 评论 -
error C2857: '#include' statement specified with the /Ycstdafx.h command-line option 解决方法
在VC6.0中,如果stdafx.cpp中不包含stdafx.h,而是包含其他的头文件,就会出现下面的错误提示error C2857: '#include' statement specified with the /Ycstdafx.h command-line option was not found in the source file解决这个问题,仅仅在C++选项中,Pre原创 2016-08-14 19:00:25 · 9611 阅读 · 2 评论 -
visual studio 的各个版本下载地址,很全,从 6.0 一直 到 vs2013,要的拿去吧
Microsoft Visual Studio 6.0 下载:英文版360云盘下载:http://l11.yunpan.cn/lk/sVeBLC3bhumrI英文版115网盘下载:http://115.com/file/bew2qrau英文版迅雷下载:http://61.138.140.18/download/jlste_nw/vs6en.iso FTP下载:ftp://211.6转载 2016-03-15 20:43:47 · 59288 阅读 · 374 评论 -
关于SetCapture() 和 ReleaseCapture()的用法
查MSND,对SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”一开始我看这个解释误认为了只要在属于窗口里的一个线程调用了SetCapture(hWnd)把hWnd设为转载 2015-12-08 09:17:42 · 2510 阅读 · 0 评论 -
Windows XP3安装internet 信息服务(IIS)时对策
在安装VS2003.net, 提示 internet 信息服务(IIS)和FrontPage2000服务器扩展 需要安装,安装下面步骤处理:1.在 c:\Windows\inf\ 中打开sysoc.inf ; 在sysoc.inf中找到“[Components]”这一段,在里面加上: “iis=iis2.dll,OcEntry,iis2.inf,,7” 后保存关闭;2.将iis2原创 2012-09-11 17:10:09 · 1098 阅读 · 0 评论 -
在框架窗口中如何获得,视图类的指针以及文档,视图,框架窗口指针的获取与应用
1.在框架窗口中如何获得,视图类的指针CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd; // Get the active MDI child window. CMDIChildWnd *pChild = (CMDIChildWnd *) pFrame->GetActiveFrame()转载 2012-06-19 17:28:17 · 1282 阅读 · 0 评论 -
当打开一个文档时,MFC如何选择所使用的文档模板对象?
当把一个 文档名 作为 变量 来调用CWinApp::OpenDocumentFile()时,MFC是 如何选择 用来 打开一个给定文档的 文档模板对象的呢? 如果跟踪CWinApp::OpenDocumentFile()函数的整个调用过程,会发现该函数只是通过存储在 应用程序对象 中的m_pDocManager指针简单的调用CDocManager::OpenDocumentFi转载 2012-08-14 18:02:56 · 2586 阅读 · 0 评论 -
VC不常用编译器参数
<br />1. 宏展开设置<br /><br />当定义的宏比较复杂,较难分析时,可以通过一个VC选项控制预处理器将宏展开后的源代码输出到文件,以方便查看,设置方法:<br />在 “工程属性” —〉“C/C++”—〉“Project Options” 手工填入/P,然后rebuild,会产生于.cpp同名的.i文件,在这里宏被展开了。<br />正常编译时,还是要把这个开关关闭,否则可能编译失败。<br /> <br />2. C文件生产asm文件<br />在 “工程属性” —〉“C/C++”—〉“P原创 2010-09-11 22:02:00 · 790 阅读 · 0 评论 -
多行宏定义使用注意事项
<br />有#define 和斜杠可以进行多行宏定义,<br />例如:<br /><br />#define ADD(X,Y) /<br />X+Y<br /> <br />使用是要注意:<br />1) 每行的后面必须有/,但是切忌/后不能有空格。<br /> <br />2) 宏定义结束可以有多种方式:一种是最后一行不带/; 或者是带斜杠,但是后面空一行。<br /> <br /><br />#define ADD(X,Y) /<br />X+Y<br /> <br />等价与<br /><br /原创 2010-08-15 01:24:00 · 1332 阅读 · 2 评论 -
MFC注册表操作详解
MFC注册表操作详解出处:Zarotys Blog前置知识:VC WIN-API MFC我总结了一些MFC操作注册表,大致分3种方法: 1)WIN-API这个是当然的了,MFC也是基于WIN-API的,所以我们直接在MFC里面应用WIN-API的注册表操作函数来对操作注册表,是没有一点问题的。WIN-API的注册表操作大家转载 2010-01-22 10:55:00 · 4685 阅读 · 0 评论 -
IRP请求处理及完成机制
近来学习 Windows 内核方面的东西,觉得对 I/O 处理过程没有一个总体的概念。于是,就花了很长的时间搜集了很多这方面的知识总结了一下。在 Windows 内核中的请求基本上是通过 I/O Request Packet 完成的。前面说过,设备对象是唯一可以接受请求的实体。下面,我就来详细地说下 IRP 请求是怎么样一步一步完成的。首先,我们就需要知道 IRP 是怎么产生。 IR转载 2009-10-27 17:45:00 · 1910 阅读 · 0 评论 -
VC++中使用内存映射文件处理大文件
http://www.91tech.net/Article/SoftTech/vctech/200410/116.html摘要: 本文给出了一种方便实用的解决大文件的读取、存储等处理的方法,并结合相关程序代码对具体的实现过程进行了介绍。 引言 文件*作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的Crea转载 2009-10-10 15:00:00 · 895 阅读 · 0 评论 -
VC常用数据类型使用转换详解 (转)
VC常用数据类型使用转换详解 (转)我们先定义一些常见类型变量借以说明int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]="程佩君"; char temp[200]; char *buf; CString str; _variant_t v1; _bstr_t v2; 一、其它数据转载 2009-09-11 09:03:00 · 611 阅读 · 0 评论 -
在DLL中使用资源
在DLL中使用资源 现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题。这里我们从Win32 DLL和MFC DLL两个方面来分析并解决这个问题。 1.Win32 DLL 在Win32 DLL中使用对话框很简单,你只需要在你的DLL中添加对话框资源,而且可以在对话框上面设置你所需要的控件。然后使用DialogBox或者Crea转载 2009-06-18 15:37:00 · 592 阅读 · 0 评论 -
VC++实现启用与停用设备
前些日子在研究USB设备,就顺便研究了一些如何在应用程序实现USB设备的启用与停用,然后稍微深入,于是有了本文。想要实现类似设备管理器的功能,其实也不是很难,无非就是调用一些API函数,就像本文描述的,采用的API函数就是SetupDi系列的函数。不过这类函数有很多,具体的请参见MSDN,而实现设备启用、停用仅需要用到的就只有5个函数: SetupDiGetClassDevs转载 2009-08-20 18:02:00 · 6634 阅读 · 0 评论 -
please enter the path for mfcs42d.pdb 提示解决方法
在VC开发中,可能遇到在Debug的时候遇到弹出“please enter the path for mfcs42.pdb”对话框,当然你可以选择取消跳过,但是带来的结果是你在Debug过程中Watch除了内建基本型别的变量外,不能获取其他类型变量的运行时期信息(如字符串、函数等),这其实也就很大程度上失去了Debug的意义了。这时候,如果你手动指定选择指定mfcs42.pdb的路径,一般为VC安装路径/vc98/mfc/lib/mfcs42.pdb,会提示:the file is found but i原创 2010-09-03 16:48:00 · 12414 阅读 · 5 评论 -
vc串口编程使用mscomm控件的,接受字符个数多余8个时,会重复进中断的OnCommMscomm()的处理对策
<br />在串口编程时,使用microsoft的mscomm控件,简单,实用,特别是对于一些异步处理的场合,使用控件的中断(消息映射),比较方便。<br />但是,在实际使用中,发现当接收的字符个数大于8个时,会重复进入中断处理函数,这种方式在某些场合使用会出现问题。<br />本文的目的就是提出一种解决方式,当接受的字符个数大于8个时,在一次中断处理函数中全部接收到这些字符串,而不用多次进入中断处理函数。<br /> <br />串口的控件初始化:<br /><br />m_ComPort.SetCom原创 2010-12-24 23:01:00 · 5761 阅读 · 2 评论 -
如何通过命令行启动VC并加载工程
原创 2012-07-25 10:23:43 · 1038 阅读 · 0 评论 -
Visual C++6.0下的workspace和project结构初探 -VC6的dsp和dsw文件分析
最近下载Apache的httpd源码进行编译,使用VC6打开Apache.dsw以后进行编译,发现apr.h文件没有包含在下载的源码中,但编译后却发现存在该文件,为弄明白是何处产生arp.h文件,便阅读了Apache.dsp和Makefile.win等文件,整理和总结了apache的project组织结构和VC6下的Project组织结构。我会把文章中用到的apache文件都添加进来,使得大家不用转载 2012-07-24 10:03:22 · 6162 阅读 · 0 评论 -
动态库导出声明 : extern "C" __declspec(dllexport) 与 __declspec(dllexport)
最近在做项目,在动态加载动态库后,使用GetProcAddress( HMODULE hModule, LPCWSTR lpProcName)获取导出的函数的地址时,发现不能获得函数地址。通过检查发现是声明动态库导出的定义不同导致:在使用extern "C" __declspec(dllexport)时,可以使用GetProcAddr获得函数地址。在使用__declspec(dllex原创 2012-07-05 16:25:23 · 10555 阅读 · 0 评论