Articles of mfc

MFC就像Linux易于使用的工具

当我用Windows编写testing工具时,我使用MFC来创build前端GUI。 这使得GUI开发的开发速度非常快,而且我总是专注于后端。 最近我转移到了基于Linux的控制台。 大部分东西都是基于控制台的。 我的问题:在Linux中是否有任何易于使用的MFC相当于?

将MFC文档/视图转换为?

我的问题很难形成,但要开始: 我有一个我曾经工作过的很长时间的MFC SDI应用程序,似乎从来不适合Doc / View架构。 即在Doc中没有任何有用的东西。 它是multithreading的,我需要做更多的线程等。 我也梦想把它移植到Linux X Windows上,但是我对这个编程环境一无所知。 也许Mac也是。 我的问题是从哪里去的? 我想我想从MFC文档/视图直接Win API的东西与消息循环和窗口过程等转换,但任务似乎是巨大的。 Linux X Windows环境是否使用类似的消息循环,窗口过程体系结构? 我可以参加吗? 像一次转换一点点,而不使我的程序无法长时间工作? 稍后添加: 我的程序是一个文件比较程序(听起来很简单)。所以,以简单的方式说明我的困惑,通常一个文件可以有多个视图,但是在这个应用程序中,我有一个包含多个(两个)文件(文件)的视图。 我有一个“比较引擎”,是我在DOS时代首先写回来的,这是程序的核心,而视图只是查看那个例程的输出。 有时我认为我的一些“视图”代码在“文档”类中是有意义的,但是我不知道从哪里开始将它分成更多的类。 我最近开始阅读“Programming Windows”5th Ed。 Charles Petzold(我知道这已经过时了(C)1998),希望能够更好地理解直接的Windows编程。 C#,.NET,MFC,MVC,Qt,wxWidgets等选项泛滥 我发现我经常被困在试图理解MFC框架中发生的事情,因为我的代码中的东西不工作,因为它似乎应该,但问题是,我真的不明白如何在后台处理事情。 这就是为什么我试图学习“直接Windows编程”,我的程序有我写的所有消息传递代码。 我希望这有助于对我的问题有足够的了解,以便有人可以在我的路上指导我。

子窗口(CEdit)失去焦点

我使用MFC Document / View架构在C ++中进行编程。 我一直在试图实现类似于MFC CEdit失去焦点处理程序的东西 。 正如答案所示,我处理了消息EN_KILLFOCUS。 基本上,我是这样做的:我在视图中绘制了文本。 当用户单击视图中文本的区域时,我将位于顶部的CEdit窗口放在上面,以便用户能够编辑文本。 当编辑失去焦点时,我得到CEdit文本并将其保存在文档中。 然后使视图无效。 但是,当视图失去焦点时,我似乎只收到EN_KILLFOCUS消息。 我必须点击其他地方,例如对接窗口或工具栏,以使CEdit失去焦点。 我希望它发生,当我点击CEdit框外的视图的任何其他地方。 我正在用WS_CHILD样式创buildCEdit。 我试过WS_POPUP,但仍然是同样的问题。 任何帮助,将不胜感激。

使用自定义string参数捕获抛出exception

我试图在我的VS 2008 C ++ / MFC项目中实现类似于以下内容的东西: class myClass() { public: myClass() { //Do work… check for errors if(var < 0) { //Error TCHAR buff[1024]; _snwprintf_s(buff, SIZEOF(buff), L"ERROR: The value of var=%d", var); throw buff; } } }; __try { //Begin using class above //The class member may be also defined on the global scale, thus […]

孩子的DoDataExchange永远不会在子对话框中调用? – MFC

我只是想打开一个子对话框,让它从父子对话框中的一个子对象的静态文本控件中打印结果。 使用断点我注意到这两个DoDataExchange和我的重载的OnInitDialog永远不会在子中调用,所以静态文本控件随时崩溃,我尝试打印一些东西。 子对话框在其他情况下显示自身正常。 可能是什么问题呢 ? //in parent.cpp CResultsDlg childResultsDlg = this; childResultsDlg.DoModal(15.7); //overloaded to pass value to a child member var 从我以前的post的更多信息儿童对话框 – SetWindowTextA或SendMessageA崩溃程序 – MFC

Windows Socket无法绑定VPN IP地址

我试图绑定到特定的IP,这是在VPNnetworking上,我可以ping它,连接它,也能够telnet特定的端口,但我的Windows MFC程序给出错误代码10049,我无法进一步帮助在debugging这个问题将不胜感激,我运行在Visual Studio 2012赢7和远程客户端运行在Linux变种。 这是代码的一部分,我得到的错误基本上IP地址是可configuration的,但我硬编码debugging。 CStarDoc *p_doc = (CStarDoc*) lpparam; BOOL fFlag = TRUE; const int MAX_MSGLEN = max(sizeof(DISP_INFO_T ), sizeof(REASON_STRING_T )); char buffer[MAX_MSGLEN]; DISP_INFO_T *p_disp_info_buffer = (DISP_INFO_T *) buffer; DISP_INFO_T disp_info_combined; //receiving combined butter DISP_INFO_T_1 *p_disp_info_buffer1; //receiving buffer pointer for DispInfo1 DISP_INFO_T_2 *p_disp_info_buffer2; //receiving buffer pointer for DispInfo2 int msgReceived = 0; // Initially, […]

阻止列表视图resize列在winapi中不起作用

我正在使用vc 6.0。 我试图阻止用户调整列表视图中的列使用winapi。 我想阻止第一列(宽度:0)的大小。 我是以下代码(1) winapi-listview-cant-prevent-columns-from-resizing (2) 防止列resize 。 但它不工作。 我处理邮件的function如下: #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \ (fn)((hwnd), (int)(wParam), (NMHDR FAR*)(lParam)) 我尝试了什么: 1 BOOL Present_OnNotify(HWND hwnd, int id, LPNMHDR lParam) { switch(id) { case IDC_LIST_PRESLIST: { HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam; if(lParam->code == HDN_BEGINTRACKW || lParam->code == HDN_BEGINTRACKA || lParam->code == HDN_DIVIDERDBLCLICKA || lParam->code == HDN_DIVIDERDBLCLICKW […]

将焦点设置到子窗口的OnShowWindow中的父窗口不起作用

一般来说,我有一些button,打开子窗口,第二次按这个button应该closures它。 我使用触摸屏。 问题是当我尝试按下closures子窗口的button时,第一次没有按下,所以我需要再次单击。 为了解决这个问题,我试图在子窗口打开后将焦点返回到父窗口。 我注册OnShowWindow消息并在父窗口上调用SetFocus : void CFlashGuidanceSteps::OnShowWindow(BOOL bShow, UINT nStatus) { CDialog::OnShowWindow(bShow, nStatus); GetParent()->SetFocus(); } 当函数被调用(我可以在debugging器中看到它),焦点不会返回到父窗口。 但是,它与OnSetFocus事件一起使用: void CFlashGuidanceSteps::OnSetFocus(CWnd* pOldWnd) { CDialog::OnSetFocus(pOldWnd); GetParent()->SetFocus(); } 为什么焦点没有被OnShowWindow事件保留?

CFileDialog在debugging器窗口中发布“第一次机会exception”

我的Windows应用程序使用以下用于打开文件的C ++ / MFC代码: CFileDialog fd(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_EXPLORER, NULL, hParentWnd ? CWnd::FromHandle(hParentWnd) : NULL); fd.m_pOFN->Flags &= ~(OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_NODEREFERENCELINKS); fd.m_pOFN->Flags |= OFN_FILEMUSTEXIST; INT_PTR nRes = fd.DoModal(); //This call causes the warning 它运行良好,但我在VS 2008中的debugging器输出窗口中收到以下消息: MyApp.exe中0x00007ffb653d5bf8的第一次机会exception:0x000006BA:RPC服务器不可用。 这是我需要关心的吗?

C ++代码库从MFC重写为* nix

我在暑假期间在一家公司实习,我不得不看看当前代码库(C ++,MFC,大约100K行)以及使用状态机模拟当前程序的不同方式。 我已经阅读了几篇论文,而CPP2XMi看起来可能会尝试构build序列图作为开始。 最终目标是评估从微软作为操作系统移走的可行性,并研究* nix上的开发(可能是另一种语言)。 我也开始看MFC的依赖,看看我们是否可以移植当前的C ++代码。 我已经通过WINE和性能方面的程序运行,这似乎可以接受,但我仍然需要调查其他解决scheme,因为这只能在X86上工作,而我们有其他解决scheme运行在MIPS和ARM上运行。 任何其他的想法或警告,我可以看看?