這是一個初學者,試圖理解爲什麼GUI會在幾秒鐘後凍結的原因。 嘗試運行它,看看我的意思。 它不應該繼續打印Hello1 Hello2 Hello3 Hello4和Hello5永遠不會? 要清楚:它是停止執行作業的SetWindowText(),所以它是凍結的GUI。 我的意思是,應用程序繼續運行,它只是「顯示文本」部分,即崩潰。 我知道這一點,因爲我發佈之前調試它。 那麼我錯過了什麼?爲什麼會凍結? 你知道嗎? 在此先感謝在這個基於對話框的應用程序中,幾秒鐘後GUI會凍結。
下面是main.cpp中:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "resource.h"
using namespace std;
HINSTANCE hInst;
void sayHello(HWND handle)
{
BOOL working = true;
while (working)
{
SetWindowText(handle, "Hello1");
SetWindowText(handle, "Hello2");
SetWindowText(handle, "Hello3");
SetWindowText(handle, "Hello4");
SetWindowText(handle, "Hello5");
}
}
BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
return TRUE;
case WM_CLOSE:
EndDialog(hwndDlg, 0);
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_BTN_QUIT:
EndDialog(hwndDlg, 0);
return TRUE;
case IDC_BTN_TEST:
HWND handle = GetDlgItem(hwndDlg, 1003);
sayHello(handle);
return TRUE;
}
}
return FALSE;
}
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
hInst = hInstance;
return DialogBox(hInstance, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)DialogProc);
}
這裏是RESOURCE.H:
#include <windows.h>
#define DLG_MAIN 101
#define IDC_BTN_TEST 1001
#define IDC_BTN_QUIT 1002
#define ID_CONTROLSTATIC 1003
這裏是RESOURCE.RC:
#include "resource.h"
DLG_MAIN DIALOGEX 6, 5, 194, 106
CAPTION "Test Application"
BEGIN
CONTROL "&Test", IDC_BTN_TEST, "Button", 0x10010000, 138, 5, 46, 15
CONTROL "TEXT HERE", ID_CONTROLSTATIC, "Static", 0x10010000, 35, 35, 50, 8
CONTROL "&Quit", IDC_BTN_QUIT, "Button", 0x10010000, 138, 29, 46, 15
END
你有一個無限循環... – leppie 2012-07-14 08:05:31
這並不能解釋它掛起的原因。可以? – 2012-07-14 08:46:34