草庐IT

c++ - CString 'Trim' : is not a member, 为什么?

我有一个简单的应用程序,我尝试用VCExpress编译并使用:适用于WindowsServer2003的Microsoft平台SDK,包含MFC和ATL。现在我有了这个简单的代码:CStringstrValue("test");CStrings=strValue.Trim();LPCTSTRlpStr=(LPCTSTR)strValue.Trim()这给我一个编译错误:c:\dev\test.cpp(463):errorC2039:'Trim':不是'CString'的成员c:\programfiles\microsoftplatformsdkforwindowsserver2003r

c++ - 在 MFC 中禁用快捷键表项

当输入焦点位于CEdit字段时,我需要暂时禁用快捷键表中的一些项目。我的应用程序有一些与键盘键(A、S、D等)关联的命令,我需要在用户在字段中输入文本时禁用这些命令。 最佳答案 你可以试试CopyAcceleratorTable要获取ACCEL结构的数组,然后编辑掉不需要的结构,请调用DEstroyAcceleratorTable在当前表上。然后使用CreateAcceleratorTable使用编辑的加速器表创建新表。编辑:This链接可能会有用。 关于c++-在MFC中禁用快捷键表项

c++ - 如何获取通过网络驱动器访问的文件的 UNC 路径?

我正在使用VC++开发一个应用程序,其中网络驱动器用于访问文件。驱动器由用户手动分配,然后在应用程序中选择驱动器。这导致驱动器并不总是映射到相同的服务器。我将如何获取此类文件的UNC路径?这主要用于识别目的。 最佳答案 这是我用来将普通路径转换为​​UNC路径的函数:wstringConvertToUNC(wstringsPath){WCHARtemp;UNIVERSAL_NAME_INFO*puni=NULL;DWORDbufsize=0;wstringsRet=sPath;//CallWNetGetUniversalNameus

c# - 如何向 MFC 应用程序添加 list 并设置支持的操作系统?

我正在尝试为WindowsServer2012运行Microsoft平台就绪测试工具4.6:http://www.microsoft.com/en-ca/download/details.aspx?id=41676我遇到了一个问题。它提示我有一个MFC应用程序有一个list,但该list缺少supportedOS部分。我知道如何将它添加到C#项目中,但如何在MFC应用程序中添加它?MFC应用程序显示在“list中缺少支持的操作系统部分的可执行文件”下。 最佳答案 刚收到。过程如下:右键单击您的解决方案,转到“属性”。从配置属性向下钻

c++ - 我可以使用 CArchive 在 MFC 中序列化 STL 映射吗?

我需要把一个map的内容(key是int的ID,value是自定义的struct)写入一个文件,稍后从文件中加载。我可以在带有CArchive的MFC中完成吗?谢谢! 最佳答案 在MFC中,我认为最简单的方法是首先序列化map的大小,然后简单地遍历所有元素。你没有指定你使用的是std::map还是MFC的CMap,但是基于std::map的版本可以看起来像这样:voidMyClass::Serialize(CArchive&archive){CObject::Serialize(archive);if(archive.IsStori

c++ - 使用 MFC 以编程方式创建控件

我只是想知道怎么做。我写:CEditm_wndEdit;在按钮事件处理程序(对话框应用程序)中,我写:m_wndEdit.Create(//withparams);但我仍然没有看到该控件出现在UI中。我实际上是在按钮处理程序中写的:CWnd*pWnd=GetDlgItem(IDC_LIST1);CRectrect;pWnd->GetClientRect(&rect);//pWnd->CalcWindowRect(rect,CWnd::adjustBorder);wnd_Edit.Create(ES_MULTILINE|ES_NOHIDESEL|ES_READONLY,rect,this

c++ - 什么是无效,更新方法在 VC++ 中做什么

我对C++中的窗口函数有一点疑问。"invalidate()"函数究竟做了什么?它发送什么消息?当我们需要调用它时?还有什么是"update()"函数?"invalidaterect()"是否与"invalidate()"函数类似?谢谢 最佳答案 CWnd::Invalidate()使窗口的整个客户区无效,这表明该区域已过时,应该重新绘制。您通常会在需要重绘的控件上调用它。CWnd::InvalidateRect()仅使窗口的一部分无效。使用Invalidate函数,WM_PAINT消息将发布[不严格为真;查看评论]到消息队列并在将

c++ - 如何在MFC中创建粗体和斜体标签?

请不要将其标记为这个问题的骗局:BoldlabelsinMFC这个问题对我没有帮助;出于某种原因,我没有看到丰富的编辑控件。相反,我相信我必须用代码来做。这是我找到的示例:http://www.tech-archive.net/Archive/VC/microsoft.public.vc.mfc/2006-10/msg00245.html我的问题是我不想重新发明轮子并自己或通过QA测试错误。之前肯定有人实现过这个。请分享您的代码。我想做的是:与已创建的标签保持相同的字体大小、系列等,但也要粗体和斜体。保持足够低的内存占用(不要创建任何新的不必要的对象),但也不要让应用进入不一致的状态。

c++ - 重命名 MFC CArchive 序列化类

我正在使用MFC的CArhive类来保存我的应用程序的项目文件。其中一个类名非常不准确,我想更改它,但是简单地在各处更改名称会使以前的存档文件无用并出现存档错误。有没有一种方法可以更改存档类的名称而不会使所有以前保存的文件变得无用?这当然是在不使用typedef以新名称访问现有类或保留具有旧名称的类版本以读取存档文件并将读取的对象复制到具有新名称的同一类的情况下. 最佳答案 关键点是,当您使用DECLARE_SERIAL和IMPLEMENT_SERIAL时,一个CRuntimeClass成员被添加到您的类中,其中包含其中的名称cod

c++ - atoi() 与其他语言

我正在从事一个国际化项目。除0-9之外,其他语言(例如阿拉伯语或中文)是否使用不同的数字表示法?如果是这样,是否有atoi()的版本可以解释这些其他表示?我应该补充一点,我主要关心的是解析来自用户的输入。如果用户输入其他表示形式,我想确保我将其识别为数字并相应地对待它。 最佳答案 我可以使用std::wistringstream和语言环境来生成这个整数。#include#includeusingnamespacestd;intmain(){localemylocale("en-EN");//Constructlocaleobject