का आकार बदलता है, मैं एक win32 एप्लिकेशन लिखता हूं। मैंने संदेश लूप को स्वयं इस तरह कार्यान्वित किया:Win32: मेरा एप्लिकेशन फ्रीज करता है जबकि उपयोगकर्ता विंडो
bool programcontinue = true;
while(programcontinue)
{
while (PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
IdleProcess();
}
मेरे आवेदन में एक आकार बदलने योग्य विंडो है। आमतौर पर, IdleProcess() प्रति सेकेंड कई बार बुलाया जाता है। जब उपयोगकर्ता किसी कोने या आकार बदलने योग्य विंडो के किनारे को पकड़ लेता है, तब तक उपयोगकर्ता को तब तक नहीं कहा जाता जब तक कि उपयोगकर्ता माउस बटन जारी नहीं करता।
यहां क्या होता है?
मैंने आंतरिक के साथ आंतरिक रूप से आदान-प्रदान करने की कोशिश की, लेकिन यह व्यवहार को नहीं बदले। ऐसा लगता है कि आकार बदलने पर शुरू होने पर, उस संदेश के हैंडलर तब तक वापस नहीं आते जब तक आकार बदल नहीं जाता है?
क्या इसे बदलने का कोई तरीका है और प्रति सेकंड कुछ बार आकार बदलने के दौरान IdleProcess() को कॉल करें?
धन्यवाद मार्क
संपादित करें:
क्या मैं भीतरी जबकि जगह के साथ करता है, तो है मतलब:
bool programcontinue = true;
while(programcontinue)
{
if (PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE)) // <<<<
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
IdleProcess();
}
मेरे खिड़की प्रोक थोड़ा लंबा है, लेकिन मैं समान व्यवहार प्राप्त एक छोटे से टेस्ट ऐप के साथ।
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
क्या आप अपनी WndProc (...) विंडो प्रक्रिया पोस्ट कर सकते हैं जो डिस्पैच मैसेज() से संदेशों को प्राप्त करेगा क्योंकि थोड़ी उत्सुकता –
पूर्ण होने के बारे में आपकी टिप्पणी के बाद + "if" के बजाय " जबकि "चीज। – marc40000
अद्यतन के आधार पर यह है कि या तो TranslateMessage या DispatchMessage तुरंत नहीं लौटा रहा है स्पष्ट है। आपका अगला कार्य यह पता लगाने के लिए है कि कौन सा, और कौन सा संदेश इसे ट्रिगर कर रहा है। –