比如说,如果我在基于MFC的对话框窗口中有一个默认的EDITcommoncontrol:我正在寻找一种方法来在其中添加一个小的“X”(或删除)按钮(这是我需要的Photoshop渲染):有没有办法通过修改默认的编辑控件来实现? 最佳答案 请考虑使用新类CMFCEditBrowseCtrl。它确实有方法CMFCEditBrowseCtrl::EnableBrowseButton()来完全满足您的需要。 关于c++-有没有办法在编辑公共(public)控件中添加我自己的按钮?,我们在Stac
目前,我有一个构建为DLL的MFCC++visualstudio项目。我们称它为FinalDLL。我需要这个FinalDLL是可配置的。所以,我想要一个GUI,以便用户可以根据通过GUI输入的信息生成FinalDLL。请考虑到我不想在任何时候都提供这些资源。我不清楚如何整合这些步骤。我想出的解决方案是在我的GUI中有一个类似按钮的东西,这样当它被点击时,FinalDLL就会根据通过GUI输入的信息生成。有可能做那样的事情吗?可能我需要另一个DLL库,因为通过GUI输入的信息可以调用FinalDLL源代码中使用的函数。 最佳答案 这个
我知道有些函数可以轻松编写Windows注册表,但是我发现在使用向导创建的新MFC项目中,一些信息(如拆分条位置、控件的可见性)会自动存储(或者至少我发现没有CWinApp::Write*在项目中调用)。因为我也有没有这种行为的旧项目,所以我需要弄清楚如何在没有项目向导帮助的情况下做到这一点。请问有人知道这是如何工作的吗? 最佳答案 MFC控件状态保存魔法发生在“新建”MFCFeaturePack中,特别是在SaveState方法中,例如CMFCToolBar::SaveState.因此,要利用这一点,您需要升级您的工具栏和菜单以使
我有一个MFC应用程序并从命令提示符启动它的.exe。我想要实现的是,我想在同一命令提示符下显示来自这个启动的应用程序的任何日志。我写了这段代码:AttachConsole(ATTACH_PARENT_PROCESS);WriteFile(GetStdHandle(STD_OUTPUT_HANDLE),errorMessage,((string)errorMessage).length(),NULL,NULL);FreeConsole();但是这段代码在下一个提示符下写日志是这样的:c:\Users>application.exec:\Users>logline这里我想要在同一个提示上
我有一个基于MFC的应用程序。它会在几秒钟后继续寻找文件(使用基于CreateTimerQueueTimer的计时器)并执行一些操作。这在XP上总是崩溃(原因不明)。此应用程序在Windows7和Windows8上运行良好。但在XP上问题仍然存在。下面是没有显示任何帮助的调用堆栈反汇编截图如下:编辑1:我更改了一些设置并获得了这个新的调用堆栈。但是还是没有得到线索。:我不明白如何找出崩溃的原因。是否有任何提示或任何方式来跟踪它从反汇编中播种?还是系统的NTDLL.DLL文件有问题?欢迎任何帮助。 最佳答案 分析堆栈后,我意识到可能是
例如,我通过双击其可执行文件从Windows资源管理器启动基于CDialog的MFC应用程序。它通常在屏幕中央显示对话窗口。但如果我将Windows资源管理器窗口移动到辅助监视器并在那里双击它,它的窗口仍显示在主监视器中。如何让它在监视器中显示应用程序的启动位置?附言。对话框窗口从InitInstance显示如下:CTestMFCDlgdlg;m_pMainWnd=&dlg;INT_PTRnResponse=dlg.DoModal(); 最佳答案 好的。我知道了。没关系。谁有兴趣,MFC没有多显示器的概念。因此需要重写居中方法:vo
我正在尝试绘制一些颜色介绍对话框,我有几个按钮(用于选择颜色)和一个CStatic控制我将使用哪个窗口来绘制所选颜色它。但是,当我调用m_myStatic.GetWindow(NULL)时,会返回指向第一个按钮窗口的指针。当我调用GetWindow(GW_HWNDLAST)时,返回一个指向静态控制窗口的指针,因为它最后被放置在对话框中(在底部)。只要我能在文档中看到CWnd::GetWindow()被记录为不是虚拟的,因此当它被调用时它不会返回调用者控件的窗口。我的问题是:我如何获得静态控件的窗口并确保无论放置如何都返回指向当前窗口的指针? 最佳答案
是否可以在不重新打开整个窗口的情况下执行需要提升的任务(在我的示例中,我必须编辑注册表)?所以我有一个CPL项目,它的页面可以选择编辑我的应用程序设置(写入注册表)。是否只有当用户点击apply或ok时才可以执行此操作?但无需重新打开整个cpl窗口。 最佳答案 Alf的评论已经说明了很多:不。Windows与进程绑定(bind),进程创建后无法提升。当然,您可以有第二个子进程,它实际上不显示任何东西,只是执行请求的任务。或者,您可以定义自己的COM对象来执行请求的任务,然后使用COMElevationMoniker在需要时以提升的状
我通过从COleDropTarget派生类CDropTarget使我的MFC应用程序成为放置目标并覆盖allnecessaryfunctions.一切都按预期工作。但是OnDrop()的返回值让我困惑。它的描述是这样的:Nonzeroifthedropissuccessful;otherwise0.如果我的申请中有多个文件,我不明白“成功”是什么意思。例如,考虑以下实现:BOOLCDropTarget::OnDrop(CWnd*pWnd,COleDataObject*pDataObj,DROPEFFECTtDropEffect,CPointtPoint){//Ileftoutdecla
当用户按下F1键时,我正在尝试为我的对话窗口覆盖WM_HELP消息。该窗口有几个按钮,可通过TrackPopupMenu显示上下文菜单,以及主菜单(在顶部)。因此,此窗口中的菜单不止一个。我可以在处理WM_HELP时捕获菜单消息,但我需要知道哪个上下文菜单发送了这条消息:BOOLCMyDialog::OnHelpInfo(HELPINFO*pHelpInfo){if(pHelpInfo->iContextType==HELPINFO_MENUITEM){HMENUhMenu=(HMENU)pHelpInfo->hItemHandle;//HowtogetmenuIDfromHMENU?