के रूप में करें, मैं एक छोटी कक्षा बनाने की कोशिश कर रहा हूं जो मूल विंडो में कंसोल विंडो प्रदर्शित करता है। (आप कल्पना कर सकते हैं कि वहां चैट या डीबग जानकारी प्रदर्शित की जा रही है)
अब, क्योंकि अलग-अलग इंस्टेंस के पास अलग-अलग निजी चर होते हैं (जैसे संदेश सरणी या पैरेंट विंडो), मुझे विंडोज़ ईवेंट के लिए कॉलबैक के रूप में गैर स्थैतिक विधि का उपयोग करने की आवश्यकता है।
मैंने तरीकों के बारे में सोचा है, जहां मैं वास्तविक कॉलबैक फ़ंक्शन को वास्तविक कॉलबैक फ़ंक्शन पर पास कर दूंगा और फिर उस पर उचित विधि कहूंगा, लेकिन WinAPI में, सब कुछ TranslateMessage
और DispatchMessage
का उपयोग करके किया जाता है, जिससे मुझे मेरे तर्कों का उपयोग करने का कोई मौका नहीं मिलता है खुद।
मुझे कुछ कोड यहां मिला: Class method as winAPI callback, लेकिन मुझे यह समझ में नहीं आता है, और मुझे लगता है कि यह बिल्कुल वैसा ही नहीं है जो मुझे चाहिए। यदि ऐसा है, तो कृपया मुझे दिए गए कोड का और स्पष्टीकरण दें। 'LRESULT (WindowConsole::
) (HWND__ , uint, wParam, lParam)' प्रकार के तर्क 'LRESULT (*
) (HWND__, uint, से मेल नहीं खाता:
त्रुटि मैं:ऑब्जेक्ट विधि का उपयोग WinApi WndProc कॉलबैक
त्रुटि 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 ड्यूप्स – Puppy
ठीक है, उनमें से कोई भी मुझे मदद की। मैंने लंबे समय तक खोज की है और इस समस्या पर बहुत अधिक विषय खोजे हैं, लेकिन मुझे बस समझ में नहीं आया। –
उपयोगकर्ता 16100 ... के उत्तर और msdn-article के लिंक पर एक नज़र डालें ... – Incubbus