草庐IT

windows - 如何启用 'Microsoft.Windows.Common-Controls' 进行指定控制?

我有一个旧的MFC应用程序,由于某些控件的新行为,我无法为此应用程序中的所有控件启用“Microsoft.Windows.Common-Controls”。但我需要它用于支持EM_SETCUEBANNER的CEdit。我尝试在OnInitDialog中这样做:m_edt=(CEdit*)GetDlgItem(edit_id);inti=SetWindowTheme(m_edt->m_hWnd,L"Explorer",NULL);SetWindowTheme返回0但我仍然无法使用EM_SETCUEBANNER消息。如何仅为CEdit启用Microsoft.Windows.Common-C

windows - 使用 CFileDialog::AddCheckButton 失败

好的,我正在尝试使用CFileDialog::AddCheckButton。函数调用成功,我可以看到新的复选框。我看不到任何事件,虽然我可以覆盖OnInitDialog,但忽略覆盖OnOK。我不确定我做错了什么://标题classCTPSaveDialog:publicCFileDialog{DECLARE_DYNAMIC(CTPSaveDialog)staticconstCStringCTPSaveDialog::m_cstrFilter;public:BOOLm_bForce;CTPSaveDialog(LPCTSTRlpszDefExt=NULL,LPCTSTRlpszFileN

c++ - Win32/MFC 从客户端矩形获取窗口矩形

我知道某处有一个函数可以接受客户端rect,它会为您将其转换为窗口rect。我就是找不到/记不住了!有人知道这是什么吗?它会做类似的事情:constCRectclient(0,0,200,200);constCRectwindow=ClientRectToWindowRect(client);SetWindowPos(...) 最佳答案 您可能会想到AdjustWindowRectEx().请记住,这旨在用于创建窗口时使用-不能保证它会为现有窗口生成一组准确的窗口尺寸;为此,使用GetWindowRect().

c++ - 覆盖 OnNcPaint() 会影响窗口客户区的绘制吗?

我想改变窗口标题栏的外观,所以我决定覆盖CMainFrame的OnNcPaint()方法。但是当我这样做的时候,我发现了一个问题。如果有另一个窗口覆盖了我的窗口,我快速拖动窗口,我窗口的客户区内容消失了,只有当我停止拖动时,它才会出现。我重写的OnNcPaint()如下所示:voidCMainFrame::OnNcPaint(){CDC*pWinDC=GetWindowDC();//dosomedrawingReleaseDC(pWinDC);}我的方法有问题吗?谢谢! 最佳答案 除非您使用设置为排除客户区的裁剪区域,否则您可以通过

c++ - 在 Win32/MFC 和 POSIX 中,线程会自行清理吗?

我正在使用C++和Boost开发一个多线程程序。我正在使用辅助线程来异步初始化资源。如果我分离线程并且对线程的所有引用都超出范围,我是否泄漏了任何资源?还是线程会自行清理(即它的堆栈和自身所需的任何其他系统资源)?根据我在文档中看到的内容(以及我8年前从pthreads中记忆的内容),不需要进行明确的“销毁线程”调用。我希望线程异步执行,当需要使用资源时,我会检查是否发生错误。粗略的代码看起来像这样://Assumethiswon'tgetcalledfrequentlyenoughthatnext_resourcewon'tgetpromoted//beforethethreadfi

c++ - 简单的 CArray 问题

1.)之间有什么区别CArraycollection;和CArraycollection;甚至CArraycollection;?2.)在阅读有关Stackoverflow的一些评论时,我看到一条注释说“不要使用CArray”。为什么不应该使用CArray? 最佳答案 这个:CArraycollection;等同于:CArraycollection;第二个模板参数用于指定访问成员的类型。模板参数aredescribedinthedocumentationonMSDN.这个:CArraycollection;存储指向SomeClass

windows - 独立于进程在内存中存储一​​个值

我需要一种方法来临时在某处存储一个值,比如进程A。进程A可以在将值存储在内存中后退出。一段时间后,进程B来访问内存的相同位置并读取值。我需要存储在内存中,因为我不希望数据在重新启动后保持不变。但只要系统正常运行,它就必须独立于进程访问数据。我在Windows中尝试了MailSlots和临时文件,两者似乎都有问题,进程引用计数下降到零,实体不会保留在内存中。在Windows中最好使用Win32API的合适机制是什么?象头神 最佳答案 编写一个在启动时启动的服务,并让它创建一些共享内存。然后这个共享内存可以由进程A填充,然后进程B可以读

C++ MFC : How to open immediately a secondary dialog after the first modal dialog was created

如何在不按任何按钮的情况下从对话框中打开C++MFC中的辅助模式对话框?(如果我在OnInitDialog()中创建一个对话框,第一个对话框将不会出现。) 最佳答案 只需在显示辅助对话框之前调用OnInitDialog中的ShowWindow(SW_SHOW);。 关于C++MFC:Howtoopenimmediatelyasecondarydialogafterthefirstmodaldialogwascreated,我们在StackOverflow上找到一个类似的问题:

wpf - Fortran 能否与 Windows 上的 Silverlight、WPF 或 MFC 交互?

我想使用Fortran来解决数值问题,但我不确定使用FortranGUI库是否是可视化结果的最佳选择。在Silverlight、WPF或MFC中拥有一个GUI并调用用Fortran编写的代码是否可行?当然,Silverlight和/或WPF代码将使用.NET语言编写,如果我使用MFC,它将使用C++。 最佳答案 前提是您使用标准FortranmeansofmakingyoursubroutinesthatisusableviaC,您应该能够使用C#中的P/Invoke来访问和调用它们。使用MFC,您可以直接调用子程序。这适用于MFC

c++ - 为什么我不能将字符串添加到组合框?

这看起来微不足道,但是对于MFC,我总是会遇到一些愚蠢的微不足道的问题,这些问题会停止我的工作流程。我收到指向afxcmn2.inl第352行的“调试断言失败”错误:_AFXCMN_INLINEintCComboBoxEx::AddString(LPCTSTRlpszString){UNUSED_ALWAYS(lpszString);ASSERT(FALSE);returnCB_ERR;}我试图在初始化时将一些字符串添加到组合框,如下所示:BOOLmyDialog::OnInitDialog(){CDHtmlDialog::OnInitDialog();cb_direction.Add