2012-03-23 10 views
0

私はテキストの再配置(ウルドゥー語)アプリケーションで、私のMFCアプリケーションでウルドゥー語にテキストを入力したいと思っています。今、私はMFCダイアログをローカライズすることはできませんが、Windowsフォームにはキーボードから言語をローカライズするオプションがあります(ウルドゥー語で別のフォントでテキストを入力できるようになりました)。私はこれをC#(テキスト変換から画像変換)のWindowsフォームで行いました。うまくいきました。今すぐボタンをクリックするだけで、古いアプリケーション(MFCライブラリを使って作成されたもの)と統合する必要があります。 要するに、私が望むのは、私のMFCアプリケーションのテキストボックスからウルドゥー語のテキストを取得できることだけです。 ありがとう、素早い返信が高く評価されています。MSVC2010のMFCアプリケーションでWindowsフォームをC#(推奨)またはvC++にリンクすることは可能ですか?

+0

*「私は私のMFCダイアログをローカライズすることはできません」*これは間違っている/いない理由は? –

答えて

0

あなたのテキストボックス(CEditの?)コントロールのIDを知っている、とあなたはMFCダイアログのタイトルを知っている場合は、可能な解決策は次のようになります。

利用のFindWindowあなたのMFCダイアログのウィンドウハンドルを取得するには:呼び出すことによって、これはそのすべての子ウィンドウを列挙扱う使用

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

EnumChildWindows(hMFCDialog, EnumChildProc, 0); 

機能の使用を列挙内部が続き、それぞれのコントロールIDを取得するためにGetDlgCtrlIDあなたのテキストボックスのIDと比較してください。正しいIDが見つかった場合は、テキストを取得するためにウィンドウハンドルを使用します。

BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam) 
{ 
    int ID = GetDlgCtrlId(hwnd); 
    if (ID == myTextBoxID) 
    { 
     GetWindowText(hwnd, textbuffer, textbufferlength); 
    } 
} 
関連する問題