コンソールアプリケーションを持っていれば、そのように設定できます。C++:コンソールアプリケーション用に新しいwndProcを設定するには?
HWND hWnd = GetConsoleWindow();
次に、新しいwndProcをウィンドウに設定するにはどうすればよいですか?
は私がconProcが
LRESULT CALLBACK conProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_NCHITTEST:
return HTCAPTION;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
のように定義されている状態で
SetWindowLong(hWnd, GWL_WNDPROC, (LONG)conProc);
を使用してみました。しかし、それは仕事と言っていません "エラーコード:5 - アクセスが拒否されました" 私は理解してGetLastError()
にcsrss.exeアプリケーションなので、このようなコンソールアプリケーションを変更するのはかなり難しいですが、私はまだ試してみたいと思います。 ありがとうございました。すべてのSetWindowLong関数の第一は、SetWindowLongPtrに取って代わられる
は、[コンソールプロジェクト](HTTPを見つけることができます.net/projects/console /)が便利です。 –
興味深いのは、あなたがそれに関連する 'WNDCLASSEX'をつかんで、自分のウィンドウをそれに基づいて作ることができると言いたいからですが、' WNDCLASSEX'をつかむことはちょっと難しいです。 'GetClassInfoEx'はモジュールハンドルを必要とし、そのハンドルを取得するのは面倒です。 'CreateToolhelp32Snapshot'でさえ、csrss.exeでそれを使うことができないことがはっきりと述べられています。 – chris