QA@IT

ウィンドウハンドルで、タブの前後関係を取得したい

2795 PV

別に起動しているアプリに値を渡したいのですが、
タブコントロールがあり、2つのタブ(例えばAとB)が表示されています。

フォームとしては、1つのタブコントロールですが、
データの増減によりタブも変化します。

ウィンドウハンドルでタグコントロールを取得すると
1つしか取れません。

例えば、Aのタブ内にあるテキストに値を渡したいのですが
今、AとBのどちらのタブが前面なのか分かりません。

タブの前後関係は判断できないのでしょうか?

開発環境:
Window7
Microsoft Visual Studio 2010 C#

回答

どこまでコントロールしたいのかわかりませんが、ある程度複雑になってきた場合はコントロールしたい元のアプリケーションも変更してプロセス間通信などを考えた方がいいように思います。

ひとまず Windows Handle経由で実装する場合はその機能の元となってると思われるコントロールのメッセージを探してみてください。ただし将来 .NETでラップしているコントロールが変わった場合はその限りではないことは気を付けてください(すぐに変わることはないと思いますけど)。

今回で言えば TCM_GETCURSEL メッセージで現在選択中のタブのインデックスは取得できるんじゃないかとは思います(試してはいません)。

const int TCM_FIRST = 0x1300;
const int TCM_GETCURSEL = (TCM_FIRST + 11);
int tabIndex = SendMessage(hWnd, TCM_GETCURSEL, IntPtr.Zero, IntPtr.Zero);
編集 履歴 (0)
  • ありがとうございます。
    TCM_GETCURSELを使用してい、選択されているタブの
    番号を取得できました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。