ので、私は答えを見つけた:
ここでは、コンボボックスに両方のハンドルを持っている:
/// <summary>
/// Gets a handle to the combobox
/// </summary>
private IntPtr HwndCombo
{
get
{
COMBOBOXINFO pcbi = new COMBOBOXINFO();
pcbi.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(pcbi);
NativeMethods.GetComboBoxInfo(this.Handle, ref pcbi);
return pcbi.hwndCombo;
}
}
そしてコンボボックスのドロップダウンリストに:
今
/// <summary>
/// Gets a handle to the combo's drop-down list
/// </summary>
private IntPtr HwndDropDown
{
get
{
COMBOBOXINFO pcbi = new COMBOBOXINFO();
pcbi.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(pcbi);
NativeMethods.GetComboBoxInfo(this.Handle, ref pcbi);
return pcbi.hwndList;
}
}
ハンドルから長方形を得ることができます:
RECT comboBoxRectangle;
NativeMethods.GetWindowRect((IntPtr)this.HwndCombo, out comboBoxRectangle);
と
// get coordinates of combo's drop down list
RECT dropDownListRectangle;
NativeMethods.GetWindowRect((IntPtr)this.HwndDropDown, out dropDownListRectangle);
今、私たちは確認することができます。
if (comboBoxRectangle.Top > dropDownListRectangle.Top)
{
....
}
をあなたはそれがどこにあるかを見つけるために)(GetWindowRectをも必要となります。 –
はい私は答えを見つけましたが、少なくとも100ポイント持っていないので、投稿するのに8時間待つ必要があります:)すぐにコンボとドロップダウンにハンドルを取得し、それらから矩形を取得し、両方を比較します。 – jotbek