私のアプリケーションでは、 を使用SetCursor(NULL)してカーソルを非表示にし、Windows がカーソルの状態をリセットしないようにするためWM_SETCURSORに、WndProcメソッドで処理しました。
ただし、C++ の msdn ドキュメントでは、処理するWM_SETCURSORにはreturn TRUE. しかし、C# の WndProc では void メソッドなので値を返すことができません。
では、C# でその return ステートメントを実現するにはどうすればよいでしょうか?
C++ バリアント:
static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,
{        
    case WM_SETCURSOR:
        if (LOWORD(lParam) == HTCLIENT)
        {
            SetCursor(hCursor);
            return TRUE;
        }
        break;
}