Tag: mfc

C#.NET基于文档的应用程序操作图

我想开发一个新的应用程序,用户可以在其中创建描绘进程的图表。 我认为在这种情况下,基于文档的应用程序是我唯一的选择。 我熟悉C#.net,C ++ MFC和J2EE。 根据您的经验,这是实现这一目标的最佳方式,我应该关注哪个平台? 图表必须包含框和箭头连接。 或多或少像Visio中的EPC图,不同之处在于,当一个进程正在运行时,该图必须呈现具有一些视觉效果的进度。 例如闪烁的盒子或改变箭头的颜色。 我知道这不是很清楚,但如果有人能帮忙,我会非常感激。 先感谢您

为什么无法获取启动进程的主窗口句柄?

我有一种情况,我在我的代码中启动一个进程,以便建立一个IPC通道。 我正在开始的过程是一个没有CLR支持的MFC应用程序。 我开始这个过程的应用程序是WPF应用程序中的C#模块(我认为这不是我的问题的结果)。 这适用于支持CLR的应用程序版本,它适用于除部署目标之外的每台计算机,Windows 7的触摸屏计算机。但出于某种原因,当我尝试使用此确切方案时,Process对象永远不会解析主窗口句柄( Process.MainWindowHandle )。 这样做还有另一种(甚至是pinvoke)方法吗? 这是安全的事吗? 我是那个盯着这个过程的人。 进程的主窗口句柄确实存在。 我看不出有什么不对。 如果有帮助,这是我的代码。 _applicationProcess = new Process(); _applicationProcess.StartInfo.FileName = _strProcessPath; _applicationProcess.StartInfo.Arguments = _strProcessArguments; _applicationProcess.Start(); long nTicks = Environment.TickCount; if (_applicationProcess.WaitForInputIdle(1 /*minute(s)*/ * 60000)) { try { do { // Don’t let total processing take more than 1 minute(s). if (Environment.TickCount > nTicks + 1 /*minute(s)*/ […]

C#中的C ++ CString等效

MFC的CString的C#等价物是什么?

如何在MFC中访问Winform ActiveX控件没有CLR

我的项目由四个项目组成 通过Interop暴露COM接口的C#DLL WPF控件,包含1中公开类的实例 一个Winform ActiveX,它使用ElementHost在2中托管WPF控件 使用3的控件的MFC对话框应用程序 Winform ActiveX(3)通过2中的函数从1公开类实例。我希望通过ActiveX从MFC对话框应用程序访问此类实例。 我环顾四周,发现你可以使用CWinFormControl来做到这一点。 但是,我无权使用/ clr重新编译MFC应用程序。 因此我不能使用CWinFormControl。 我可以通过COM从MFC应用程序访问1中的类并运行所有函数等但是该类是一个不同的实例,因为DLL在其自己的空间中加载。 ActiveX运行良好,可以很好地显示所有WPF数据。 所以问题是如何在不使用CWinFormControl的情况下从MFC应用程序中获取指向ActiveX控件的指针? 我已尝试从ActiveX导入TLB并尝试在类向导中为其创建“变量”,但它报告TLB不可用。 我也尝试通过手动创建变量直接创建DDX条目,但DDX不允许指针。 有任何想法吗?

Shell命名空间扩展。 C#。 C ++,MFC,AT-用什么?

我们需要创建一个Shell命名空间扩展。 我在2005年离开了Windows编程,那时我不得不创建简单的shell扩展,但是构建了非常复杂的COM服务器(进程内和进程外)和桌面应用程序。 我们使用了ATL和MFC库。 时间已经过去了,现在我需要回到visual studio / windows编程。 我期待能够忘记所有关于ATL,MFC和C ++,使用C#在de CLR中创建应用程序。 我记得找到优秀的ATL / MFC开发人员确实非常困难,而且大部分时间我都要完成整个工作。 所以我现在想象一下,在.NET时代,找到可以帮助我的ATL / MFC开发人员真的是不可能的。 我刚刚在MSDN Library中看到过: http : //msdn.microsoft.com/en-us/library/dd758089%28v=VS.85%29.aspx “Microsoft建议不要编写托管的Shell扩展,并且不认为它们是受支持的方案。” – 哦不,不,不……我很兴奋并期待使用C#,WindowsForms甚至WPF,他们说我做不到。 那么如果我想创建一个Windows非托管C ++应用程序,MFC / ATL是唯一的选择吗? 在6年内没有任何改进是真的吗? 所以我必须使用相同的旧技术? 我现在正在寻找Visual Studio 2010中更好的选项,似乎对于C ++非托管应用程序,我们仍然必须使用MFC或ATL。 我的问题是,这是否真的是唯一的方法。 现在我们假设我们必须使用旧的MS库,Shell Extensions都是关于COM接口的,我认为更好的选择是ATL。 但也许我们需要包含一些窗口和一些UI控件。 我记得你可以为ATL项目添加MFC支持或者为MFC项目提供ATL支持。 我知道我曾经使用过那种东西,但很久以前。 你能告诉我什么是更好的选择。 非常感谢Java爱好者和C ++怀旧。

从C ++启动C#应用程序并在该应用程序上执行任务

我已经阅读了这篇文章并完成了我的C#应用​​程序的开放。 我的C#应用​​程序打开一个文件夹并绘制图形。 我是否有可能告诉我的C#应用​​程序从C ++打开哪个文件夹,然后一旦看到图形并且C#程序关闭,它就会返回到C ++应用程序。 编辑:谢谢马修,我得到了它的工作。 关于我的CreateProcess lpCommandLine变量的另一个查询:(下面是代码) CString sFolderPath = “C:\Documents and Settings\…”; int nStrBuffer = sFolderPath.GetLength() + 50; LPTSTR szParam = _tcsdup(sFolderPath.GetBuffer(nStrBuffer)); nRet = ::CreateProcess(szCmdline,// pointer to name of executable module szParam,// pointer to command line string NULL,// pointer to process security attributes NULL,// pointer to thread security attributes FALSE,// handle inheritance flag […]

如何在Windows窗体应用程序中显示MFC控件?

我想创建一个Windows窗体控件,它显示一个MFC控件,如CIPAddressCtrl ,带有一个工作的Text属性和TextChanged事件。 如何在Windows窗体应用程序中显示MFC控件? 如果有必要,我很高兴使用C ++ / CLI。 注意:我不是在问如何创建一个全新的Windows窗体控件; 我想在Windows窗体应用程序中托管旧版控件。

将HWND转换为IntPtr(CLI)

我的C ++ MFC代码中有一个HWND,我想将这个HWND传递给C#控件并将其作为IntPtr。 我的代码有什么问题,我该怎么做才能正确? (我认为这是使用CLI指针的错误,因为我得到一个错误,它无法从System :: IntPtr ^转换为System :: IntPtr。但我不知道如何让它完全正常工作。 ..) 我的C ++ MFC代码: HWND myHandle= this->GetSafeHwnd(); m_CLIDialog->UpdateHandle(myHandle); 我的C#代码: public void UpdateHandle(IntPtr mHandle) { …… } 我的CLI代码: void CLIDialog::UpdateHandle(HWND hWnd) { System::IntPtr^ managedhWnd = gcnew System::IntPtr(); HWND phWnd; // object on the native heap try { phWnd = (HWND)managedhWnd->ToPointer(); *phWnd = *hWnd; //Deep-Copy the Native […]

.NET(或MFC)的高速图形控制?

我需要编写一个数字示波器类型的应用程序。 那里有很多很棒的静态图形控件,但是我需要一些可以绘制16条轨迹的东西,每秒处理4000个样本。 有谁知道.NET的高速图形控件? 我甚至会使用MFC,因为它可以包装到.NET控件中。 谢谢您的帮助!

C# – 捕获来自特定应用程序的Windows消息

我正在编写一个C#应用程序,它需要拦截另一个应用程序发出的Window Messages 。 编写我正在监控的应用程序的公司给我发了一些示例代码,但它是用C ++编写的,我真的不知道。 在C ++示例代码中,我得到了他们使用以下代码: UINT uMsg = RegisterWindowMessage(SHOCK_MESSAGE_BROADCAST); ON_REGISTERED_MESSAGE(WM_SHOCK_BROADCAST_MESSAGE, OnShockStatusMessage) LRESULT OnShockStatusMessage(WPARAM wParam, LPARAM lParam); 据我了解,这将从Windows中检索我们想要侦听的特定消息的Id。 然后我们要求C ++在拦截与Id匹配的消息时调用OnShockStatusMessage 。 经过一番研究后,我在C#中整理了以下内容 [DllImport(“user32.dll”, SetLastError = true)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport(“user32.dll”, SetLastError = true, CharSet = CharSet.Auto)] static extern uint RegisterWindowMessage(string lpString); private IntPtr _hWnd; // APS-50 class reference private […]