1

ネイティブの c++-mfc アプリケーションでカスタム コントロールにアクセスする必要があります。コントロールの内容を読み取る必要があります。コントロールは、2 つのボタンとボタン間のラベルで構成されます。ラベルには月と年が含まれており、ボタンを使用して 1 か月前または将来に移動できます。このコントロールのテキストを読み、2 つのボタンにアクセスする方法はありますか?

コントロールがあるウィンドウに既にアクセスできます。そのため、会社が提供するフレームワークを使用しています。しかし、このフレームワークでは、前述のコントロールのテキストとボタンを取得することはできません。

4

2 に答える 2

0

win32 API(pinvokeから)FindWindowを使用する必要があります。GetWindowText

FindWindow

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

キャプションのみでウィンドウを検索します。IntPtr.Zero最初のパラメータとして渡す必要があることに注意してください。

[DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);

FindWindow(default(string), lpWindowName)または電話することもできますFindWindow((string)null, lpWindowName)

およびGetWindowText

(msdnから)指定されたウィンドウのタイトルバー(ある場合)のテキストをバッファーにコピーします。指定されたウィンドウがコントロールの場合、コントロールのテキストがコピーされます

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
于 2012-10-24T08:14:58.220 に答える
0

ウィンドウハンドルでコントロールにアクセスする必要があります。そのため、ネイティブ アプリケーションのウィンドウのウィンドウ ハンドルを取得してから、ラベルとボタンのウィンドウ ハンドルを検索する必要があります ( FindWindowWinAPI 関数)。次に、それぞれのウィンドウ メッセージをウィンドウに送信して、テキストを取得するか、ボタンを「押す」ことができます。

于 2012-10-24T08:09:27.527 に答える