親ウィンドウにコンソールウィンドウを表示する小さなクラスを作成しようとしています。(チャットまたはデバッグ情報がそこに表示されることを想像できます)
ここで、異なるインスタンスには異なるプライベート変数(メッセージ配列や親ウィンドウなど)があるため、Windowsイベントのコールバックとして非静的メソッドを使用する必要があります。
実際のクラスインスタンスを静的コールバック関数に渡してから適切なメソッドを呼び出す方法を考えましたが、winAPIでは、すべてが使用され、自分の引数を使用する機会がありませんTranslateMessage
。
ここでいくつかのコードを見つけました:winAPIコールバックとしてのクラスメソッドですが、私はそれを理解していません、そしてそれは私が必要としているものではないと思います。もしそうなら、提供されたコードの詳細な説明を教えてください。DispatchMessage
私が得るエラー:
エラー:タイプ'LRESULT(
WindowConsole::
)(HWND__ 、UINT、WPARAM、LPARAM)'の引数が'LRESULT( ) (HWND__、UINT、WPARAM 、LPARAM)'と一致しません*
括弧内の星が何を意味するのかわかりませんが、これは一致しません。
そしてコード:
class WindowConsole {
char messages[255][255];
HWND mainWindow;
public:
int width;
int height;
inline HWND create(HWND parent);
inline bool update();
inline LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
};
HWND WindowConsole::create(HWND parent) {
HINSTANCE inst = GetModuleHandle (0);
WNDCLASSEX wincl;
/* The Window structure */
wincl.hInstance = inst;
wincl.lpszClassName = "ConsoleClass";
wincl.lpfnWndProc = this->WndProc; /* This function is called by windows */
/* more WNDCLASSEX crap...*/
mainWindow = CreateWindow (
/*PARAMS*/
);
ShowWindow(mainWindow,1);
return mainWindow;
}
bool WindowConsole::update() {
return true;
}
LRESULT CALLBACK WindowConsole::WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) /* handle the messages */
{
/*EVENT crap*/
}
return 0;
}