私はCを使用していくつかのプロジェクトに取り組んでおり、Win32APIを使用しています。別の言語を使用するか、MFC、GTK、QTなどの他のライブラリを使用することはできません。
私は次のようなWindowsメッセージ/シグナル/イベントを処理するための良い方法を探しています:
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
switch(msg) {
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_COMMAND:
switch(wparam) {
case ID_OK_BUTTON:
DoSomething(hwnd);
break;
case ID_FOO_BUTTON:
DoFoo(hwnd);
break;
/*
....
It's only getting more complex
....
*/
case ID_BAR_BUTTON:
DoBar(hwnd);
break;
case ID_EXIT_BUTTON:
SendMessage(hwnd, WM_CLOSE, wparam, lparam);
break;
case ID_OPEN_BUTTON:
OpenFile(hwnd);
break;
}
break;
default:
return DefWindowProc(hwnd, msg, wparam, lparam);
}
return 0;
}
この部分はますます複雑で醜いものになっています。それを単純化する方法を知っていますか、おそらく私が多くのGUIライブラリでいつも見ている方法のようなものです:
some_magic(some_object, message, callback);
簡単なアドバイスは大いに役立ちます。