是否可以在MSVC2010中的MFC应用程序中链接C#(首选)或vc ++中的窗体?

时间:2012-03-23 19:57:30

标签: winforms visual-studio-2010 visual-c++ mfc

我正在进行文本重新定位(在Urdu中)应用程序,并希望在我的MFC应用程序中输入Urdu中的文本。现在,我无法本地化我的MFC对话框,但Windows窗体具有从键盘本地化语言的选项(因此我可以使用不同的字体在乌尔都语中输入文本)。我在c#(文本到图像转换)的窗体上做了这个..它工作得很好。现在我需要通过点击按钮将它与我的旧应用程序(使用MFC库制作)集成。 简而言之,我想要的是能够从我的MFC应用程序中的文本框中获取Urdu文本。 谢谢大家,非常感谢快速回复。

1 个答案:

答案 0 :(得分:0)

如果您知道文本框(CEdit?)控件的ID,并且您知道MFC对话框的标题,则可能的解决方案可能是:

使用FindWindow获取MFC对话框的窗口句柄:

HWND hMFCDialog = FindWindow(0, <your dialog title>);

使用此句柄通过调用:

枚举其所有子窗口
EnumChildWindows(hMFCDialog, EnumChildProc, 0);

内部枚举函数使用GetDlgCtrlID获取每个控件的控件ID,并将其与文本框的ID进行比较。找到正确的ID后,使用窗口句柄获取文本:

BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam) 
{
   int ID = GetDlgCtrlId(hwnd);
   if (ID == myTextBoxID)
   {
       GetWindowText(hwnd, textbuffer, textbufferlength);
   }
}