投稿者 よねKEN  (社会人) 投稿日時 2010/7/30 14:48:22
>    Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As IntPtr, _
>        ByVal hObject As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean

上記の定義も間違っています。Windows APIの定義は以下のようになっています。

http://msdn.microsoft.com/ja-jp/library/cc410576.aspx

HGDIOBJ SelectObject(
  HDC hdc,          // デバイスコンテキストのハンドル
  HGDIOBJ hgdiobj   // オブジェクトのハンドル
);

SelectObjectの第二引数と戻り値はどちらも同じ型でGDIオブジェクトのハンドルですので、
以下のようにIntPtrで扱うのがよいでしょう。

Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As IntPtr, _
       ByVal hObject As IntPtr) As IntPtr

> Dim hNewBrush As Integer
> Dim hOldBrush As Integer

それに合わせて上記もIntegerの代わりにIntPtrを使うとよいでしょう。