親ウィンドウにコンソールウィンドウを表示する小さなクラスを作成しようとしています。
異なるインスタントにはメッセージ配列や親ウィンドウなどのさまざまなプライベート変数があるので、Windowsイベントのコールバックとして非静的メソッドを使用する必要があります(この場合、チャットやデバッグ情報は表示されません)。
私は実際のクラスインスタンスを静的コールバック関数に渡してから適切なメソッドを呼び出す方法を考えましたが、winAPIではすべてがTranslateMessage
とDispatchMessage
を使用して実行され、私の引数自分の。
私はここにいくつかのコードを見つけました:Class method as winAPI callbackしかし、私はそれを理解していない、と私はそれが私が必要とするものではないと思う。そうであれば、提供されたコードについてさらに説明してください。
エラー私が手:オブジェクトメソッドをWinApiとして使用するWndProcコールバック
エラー:型の引数を '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;
}
999999999 dupes – Puppy
まあ、それらのどれも私を助けてくれません。私は長い間、この問題に関する多くのトピックを検索してきましたが、わかりませんでした。 –
user16100 ...の回答とmsdn-articleへのリンクを見てください... – Incubbus