草庐IT

当我的应用程序加载MFC C ++时,启用输入模式到Hiragana

我想启用IME模式,并默认用日语将其设置为日语时,当应用程序老号和编辑字段的集合焦点以再次将其禁用到英语中,我尝试了许多组合,但没有解决,我正在做,我正在做这个-在编辑字段的集合焦点上-HIMChimc=ImmGetContext(m_hWnd);HIMCm_himc=ImmAssociateContext(this->m_hWnd,himc);TCHARkey_layout[20];DWORDlangFlags=IME_CMODE_JAPANESE|IME_CMODE_NATIVE;ImmSetOpenStatus(himc,TRUE);ImmSetConversionStatus(himc

c++ - 获取硬盘盘符

我的应用程序适用于WindowsVista和XP。有多个硬盘驱动器连接到我的机器。我需要获取我的系统从中启动的硬盘驱动器的驱动器号。通过使用GetLogicalDriveStrings函数,我可以获得所有硬盘驱动器的盘符。但是如何区分这个特定的盘符是我的启动硬盘的分区名称?磁盘的结构是:disk0(用这个启动)-CDG磁盘1-EFHdisk2-IJ我只需要获得C、D、G。 最佳答案 调用GetLogicalDrives获取所有可用的驱动器号。调用GetSystemDirectory获取包含操作系统的驱动器。使用CreateFile(

c++ - 如何在 `mpeg` 中播放 `MFC` 文件

如何在MFC中播放mpeg文件。能不能告诉我有什么函数可以播放这种类型的文件。 最佳答案 您可以通过usinganActiveXcontrol将windowsmediaplayer嵌入到您的应用程序中和IWMPPlayer界面。或者使用borland的TMediaPlayer.可以找到一个例子here.如果您想在MFC中工作,我建议坚持使用第一个变体(ActiveX控件),因为MFC和BorlandC++构建器不是最佳组合。 关于c++-如何在`mpeg`中播放`MFC`文件,我们在St

c++ - 在数据结构中保存成员的替代方法

我需要记住n个实例的值对。我知道一个解决方案,即制作一个单独的类或结构,声明2个成员变量并将其放在列表或数组中。但是在C++/VC++MFC中还有其他有效的方法吗? 最佳答案 您可以使用std::pair创建一对或std::make_pair(T1,T2).然后,您可以将这些对存储在您选择的数据结构中,因为您想要修改std::vector>orstd::set> 关于c++-在数据结构中保存成员的替代方法,我们在StackOverflow上找到一个类似的问题:

c++ - 如何更改新 MFC 对话框的默认语言(地区)?

每当我在VisualStudio中创建一个新对话框时,它会将Language属性设置为English(Canada),这与我的系统默认设置相同。但是,我有一个相当挑剔的第三方MFC库,每当我尝试显示这样的对话框时都会崩溃。崩溃的解决方案是使用English(UnitedStates)作为语言。我希望我的对话框在创建时默认为English(UnitedStates)。我该怎么做? 最佳答案 没有官方方法可以完全满足您的需求,默认资源语言和子语言取决于AFX_TARG_XXX宏,而这又取决于您的系统默认语言环境。但是有一种黑客攻击。应用

c++ - 工作线程如何与主 UI 线程通信?

工作线程与主UI线程通信的最佳方式是什么?总结:我的C++/MFC应用程序是基于对话框的。为了进行冗长的计算,主UI线程创建了多个工作线程。当工作线程在计算中取得进展时,它们会向主UI线程报告其进度,然后主UI线程会显示进度。这适用于共享内存中的数字进度值(由工作人员编写,由UI读取),但我在处理文本进度消息时遇到了问题。我尝试的解决方案已经过多次迭代,但似乎没有一个有效。我让UI线程将指向控件的指针传递给工作人员,然后工作人员直接更新UI。这不是很有效,而且似乎是错误的方法。我让工作人员使用SendMessage向UI线程的窗口发送消息。这就僵持了。(SendMessage在消息被处

c++ - 无法将 CStringW 转换为 CStringA

我在一个项目中遇到了将CStringW转换为CStringA的问题,以用于像日语这样的多字节字符串。我正在使用LoadString()方法从字符串资源中加载字符串。我尝试了以下代码,但它似乎不起作用。CStringWcsTest;csTest.LoadString(JAPANESE_STRING);CStringAMsg=CStringA(csTest);//Msghasbeenreturnedblankstring和std::stringMsg=CW2A(csTest);//Msghasbeenreturnedblankstring我也试过wcstombs()也是。谁能告诉我如何将C

c++ - 使用 == 比较两个 LPCSTR

我发现了一个比较两个LPCSTR的实现,它执行以下操作:voidcheck(LPCSTRlpText){if(lpText==input){//dostuff}}问题是它有效。我将其替换为...if(lstrcmpi(lpText,input)==0){//dostuff}虽然我现在感觉更安全了。我只是想知道其他实现是否只是检查地址或大小,它是如何工作的?我检查了一个LPCSTR的内存地址,它是0x0633522c,另一个是0x028a91a4。这动摇了我的整个基础。 最佳答案 您的第一个示例中的input可能是CString实例,

c++ - CString += 运算符性能问题

我正在处理一个较旧的MFC/C++项目,该项目使用MFC的CString解析大型文本文件。处理字符串的类。我注意到在解析过程中有很多小部分添加到一个整体的大CString对象中://'strContainer'=CString//'tag'=CStringofamuchsmallersizestrContainer+=L"";当strContainer变量达到某个更大的大小时,上面的运算符似乎会降低CString的整体性能。我假设发生这种情况是因为+=运算符经常重新分配内存。所以我很好奇,有什么办法可以改善这一点吗?PS1。我不知道预先分配结果字符串的大小。PS2。由于项目本身的复杂性

MFC实现:学生管理系统,教师管理系统,教务管理系统,C++代码详细解析

实验目的基本要求学生选课和成绩管理是高等学校教务管理的重要组成部分,主要包括教师管理学生成绩梦块、学生选课模块和系统管理模块。每门课程包括学分、学时、课程名字以及课程性质(必传和选修)等信息。每位教师可以教授若干门课程,并负责学生成绩的录入、删除、查找及传改、成绩的统计分析等等。教师的信息还包括姓名和D。学生根据自己的专业要求进行选课,比如需要完成的总学分(学校要求总学分为50)和必修课等情况。学生的信息还包括姓名、ID和班号等。请设计一个系统实现对学生的选课和成绩的管理。系统要求实现以下功能:教师模块(a)成绩的录入,要求从文件读取。(b)成绩修改:若输入错误可进行修改;要求可以先查找,再修