Tôi đang cố gắng tạo một lớp nhỏ hiển thị cửa sổ bảng điều khiển trong cửa sổ chính. Bây giờ, vì các instane khác nhau có các biến riêng tư khác nhau (như mảng tin nhắn hoặc cửa sổ cha), tôi cần sử dụng phương thức không tĩnh làm gọi lại cho các sự kiện Windows.
Tôi đã nghĩ về các cách, ở đây tôi chuyển thể hiện lớp thực tế đến hàm gọi lại tĩnh và sau đó gọi phương thức thích hợp trên đó, nhưng trong winAPI, mọi thứ được thực hiện bằng cách sử dụng TranslateMessage
và DispatchMessage
. sở hữu.
Tôi tìm thấy một số mã ở đây: Class method as winAPI callback, nhưng tôi không hiểu nó, và tôi nghĩ rằng nó không phải là chính xác những gì tôi cần. Nếu có, xin vui lòng cho tôi giải thích thêm về mã được cung cấp.
Lỗi tôi nhận được:Sử dụng phương thức đối tượng như gọi lại WinApi WndProc
lỗi: đối số kiểu 'LRESULT (
WindowConsole::
) (HWND__ , UINT, WPARAM, LPARAM)' không phù hợp 'LRESULT (*
) (HWND__, UINT, WPARAM, LPARAM) '
Tôi không biết ngôi sao đó trong ngoặc có nghĩa là gì, nhưng đây là những gì không khớp.
Và mã:
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
Vâng, không ai trong số họ đã giúp tôi. Tôi đã tìm kiếm một thời gian dài và tìm thấy khá nhiều chủ đề về vấn đề này, nhưng tôi chỉ đơn giản là không hiểu. –
có xem xét câu trả lời của user16100 ... và liên kết đến bài viết msdn ... – Incubbus