スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[.NEF Framework] コンボボックスのWinProcイベントを捕捉する


class myComboBox : System.Windows.Forms.ComboBox
{
private struct ComboBoxInfo
{
public int Size;
public Rectangle RectItem;
public Rectangle RectButton;
public int ButtonState;
public IntPtr ComboBoxHandle;
public IntPtr EditBoxHandle;
public IntPtr ListBoxHandle;
}

private class myEditBox : System.Windows.Forms.NativeWindow
{
public myEditBox(ComboBox parentComboBox)
{
parentComboBox.HandleDestroyed += new EventHandler(this.OnHandleDestroyed);
}

private void OnHandleDestroyed(object sender, EventArgs e)
{
this.ReleaseHandle();
}

protected override void WndProc(ref Message m)
{
const int WM_PASTE = 0x0302;// ペーストの時

if (m.Msg == WM_PASTE)
{
MessageBox.Show("ペースト");
return;
}

base.WndProc(ref m);
}
}

protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);

ComboBoxInfo tComboBoxInfo = new ComboBoxInfo();
tComboBoxInfo.Size = System.Runtime.InteropServices.Marshal.SizeOf(tComboBoxInfo);

if (!GetComboBoxInfo(this.Handle, ref tComboBoxInfo)) return;

if(tComboBoxInfo.EditBoxHandle.Equals(IntPtr.Zero)) return;

myEditBox hEditBox = new myEditBox(this);
hEditBox.AssignHandle(tComboBoxInfo.EditBoxHandle);
}

[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool GetComboBoxInfo(IntPtr comboBoxHandle, ref ComboBoxInfo pComboBoxInfo);
}
関連記事
スポンサーサイト

Pagination

Trackback

Trackback URL

http://morado106.blog106.fc2.com/tb.php/39-de4661e6

Comment

Post Your Comment

コメント登録フォーム
公開設定

Utility

プロフィール

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。