草庐IT

c++ - 将 MFC 对话框从 STA 更改为 MTA?

我正在开发一个具有一些COM接口(interface)的API。问题在于API通过一个接口(interface)进行通信,该接口(interface)必须由加载该API的项目实现。因此,如果我要使用API,我会将其加载到我的项目中并创建一个类来实现API调用的方法,以通知我某些事情或向我传递结果。这显然成为编码噩梦。此外,由于还有一些中间对象通过API从不同的插件和管理器将调用传递给所有实现要为通知调用的方法的对象,这些对象已将自己注册到API通知程序,这在术语上已经失控了的复杂性。我在想,为了缩短加载API的人需要完成的工作,如果API遵循自由线程模型,MFC生成的类如对话框是否可以

c++ - 如何从堆栈中找到崩溃的代码行?

现在我有了崩溃信息:TestAPP导致访问冲突(0xc0000005)在0023:5763c230的模块XCrashReportTest.exe中。Context:EDI:0x002aee0cESI:0x002ad7f4EAX:0x00000000EBX:0x00000000ECX:0x57635670EDX:0x028c1d27EIP:0x5763c230EBP:0x002aee18SegCs:0x00000023EFlags:0x00010246ESP:0x002ad554SegSs:0x0000002bBytesatCS:EIP:8b0852508b4118ffd08b0dc8e

c++ - Windows 有默认的单词词典吗?

我正在尝试为我的C++/MFC项目(仅使用WinAPI开发。)制作一个密码复杂性指示器。类似于此:我可以做大多数检查,例如字符数,包含字母、数字、符号、重复字符等,但我还想添加一个功能来查看一个人是否使用过任何字典单词。这似乎是决定所用密码强度的最重要因素之一。(例如,密码"Monkey123!"被评估为VeryStrong如果您不考虑字典单词的存在,这实际上使它非常弱。否则,它有10个字符长,有大小写字母,有数字和标点符号。除了使用字典单词之外唯一的警告是它有连续的数字。)所以我想知道Windows是否有字典单词列表(非常类似于Linux在/usr/share/dict/words中

c++ - 单个类实例在 GUI exe 和 dll 中是不同的

在我的GUI应用程序(MFC)中,我使用dll在屏幕上显示某些内容。我有一个静态库,它有一个单例类。例如:sing.lib。我在应用程序(exe)项目和dll项目中包含sing.lib(因为两者都使用这个单例类)问题是进入exe和进入dll的实例不同。两者都调用构造函数!请参阅单例类代码片段。classA{private:A();virtual~A();staticA*m_pInstance;public:staticA*GetInstance(){if(NULL==m_pInstance){m_pInstance=newA();}returnm_pInstance;}}

c++ - 为什么我的 MFC 应用程序在我抛出异常时挂起?

如果您从MFC对话框中抛出异常,应用程序将挂起,即使您的代码中有一个catchblock。它拒绝响应鼠标或键盘,关闭它的唯一方法是使用任务管理器。为什么我要发布这个问题令我感到遗憾的是,有一个流行的收缩包装应用程序每次在模态对话框中遇到异常错误时都会挂起。当我们从整数错误代码大量转移到异常时,我负责选择std::exception作为抛出异常的基类。直到大量的工作投入到转换中,我们的测试才发现这个问题,到那时再改变已经来不及了。希望这个问题/答案可以防止有人犯同样的错误。 最佳答案 CDialog::DoModal的代码通过禁用父窗

c++ - 为什么我的 CTreeCtrl 复选框没有选中?

我有一个MFCCTreeCtrl卡在一个打开了TVS_CHECKBOXES样式的对话框中。我的所有树项目旁边都有复选框。在OnInitDialog中,我使用CTreeCtrl::SetCheck设置了一些项目的选中状态,但在显示树时没有选中树中的任何项目。SetCheck正在返回TRUE。用鼠标检查项目工作正常。有人遇到过这个吗? 最佳答案 找出问题所在。我在visualstudio资源编辑器中设置了TVS_CHECKBOXES样式。显然这导致了我在初始检查时遇到的问题。相反,你必须做m_nodeTree.ModifyStyle(T

c++ - MFC CWinApp 程序中的输入框?

我需要一个UI程序中的输入框,该程序是从CWinnApp类派生并使用MFC编写的。我看到它正在使用消息框,但我没有看到任何输入框的示例....我该怎么做?(在C++中使用VisualStudio6.0)谢谢。 最佳答案 我知道这是经常需要的东西,但MFC中没有内置的输入框,因此您必须创建自己的输入框。我通常只是创建一个带有标签和编辑框的简单对话框(对话框已经带有确定/取消按钮),然后创建一个类,比如CInputDlg,为标签和编辑框添加成员变量,并像任何其他对话框一样调用它:CInputDlgdialog;dialog.m_labe

c++ - 我是否需要使用 COM(组件对象模块)

几天前我开始阅读COM。然后我的一个团队成员告诉我这是一项旧技术,现在已经没有人使用它了。我的问题是:1)如果它是一项旧技术,那么它的替代方案是什么。2)为什么我不需要使用COM。即COM的缺点是什么。 最佳答案 COM与C++一样都是“旧技术”。仅仅因为它是旧的并不意味着它已经过时了。Microsoft不断回归它的原因(Windows8大量使用它)是因为它是一种开销相对较低的基于对象的技术。在使用COM之前没有大的运行时要初始化(尽管组件可以在需要时初始化运行时,例如.NETCCW)。接口(interface)/实现边界严格分开,

c++ - 属性表 (MFC) 的 RTL 布局问题

我在阿拉伯语Windows中运行我的英语应用程序。它包含一个属性表UI(MFC)。一切似乎都很好(从左到右或LTR),除了按钮(确定、取消、应用和帮助)是从右到左或RTL。但是如何使按钮LTR呢?我试过MSDN上提到的标志PSH_RTLREADING,但它只处理窗口标题,而不处理按钮。此外,我注意到了thisdicussion但目前还没有很好的解决办法。 最佳答案 RaymondChen[1]和另一位微软员工[2]给出了答案;您必须从CDialog(又名CPropertySheet)创建的窗口中的按钮中删除WS_EX_LAYOUTR

MFC-TCP网络编程服务端-Socket

目录1、通过Socket建立服务端:2、UI设计:3、代码的实现:(1)、CListenSocket类(2)、CConnectSocket类(3)、CTcpServerDlg类1、通过Socket建立服务端:(1)、创建一个Socket对象并绑定一个端口:CListenSocket监听Socket(2)、通过Listen()函数,监听来自客户端的连接请求(3)、连接请求到来之后,建立一个通信用的Socket,CConnectSocket,并且加入数组中(4)、使用Send()、Receive()函数,接收客户端发送的数据,并遍历数组,一次转发消息2、UI设计:3、代码的实现:(1)、CList