我最近開始使用本教程學習的Win32 API:問題初始化的全局變量
http://www.winprog.org/tutorial/(雖然我使用C++,不C作爲教程) 我目前與「編輯框中實驗「 - 我試圖將編輯框中寫入的文本與另一行字符進行比較。 代碼:
#define IDC_MAIN_EDIT 101
代碼:
case WM_CREATE:
{
HFONT hfDefault;
HWND hEdit;
hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",
WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL,
0, 0, 100, 100, hwnd, (HMENU)IDC_MAIN_EDIT, GetModuleHandle(NULL), NULL);
if(hEdit == NULL)
MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);
hfDefault = GetStockObject(DEFAULT_GUI_FONT);
SendMessage(hEdit, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0));
}
break;
case WM_SIZE:
{
HWND hEdit;
RECT rcClient;
GetClientRect(hwnd, &rcClient);
hEdit = GetDlgItem(hwnd, IDC_MAIN_EDIT);
SetWindowPos(hEdit, NULL, 0, 0, rcClient.right, rcClient.bottom, SWP_NOZORDER);
}
break;
代碼:
bool comparison (HWND hEdit) {
LPWSTR pszText;
DWORD dwTextLength;
DWORD dwBufferSize;
dwTextLength = GetWindowTextLength(hEdit);
dwBufferSize = dwTextLength + 1;
GetWindowText(hEdit, pszText, dwBufferSize);
if(pszText == TEXT("3")) {
return true;
}
else {
return false;
}
}
當我所說的 「比較」 - 函數是pszText和hEdit沒有初始化的問題。我得到爲什麼pszText不是,我已經嘗試使用新的/刪除來解決它,但我不明白它的工作。我不知道hEdit。我可能使用GetWindowText函數錯誤? 警告 代碼:
警告C4700:未初始化的局部變量「pszText」使用 警告C4700:未初始化的局部變量「hEdit」使用
運行時檢查失敗(當我使用的功能出現,這只是其中之一) 代碼:
運行時檢查失敗#3 - 變量「hEdit」被而不initializ
你是怎麼調用'compare'函數的? – Naveen
在C++中,除非有初始值,否則不要聲明變量。例如。 'HFONT hfDefault = GetStockObject(...'。這會阻止你在初始化它之前使用一個變量,這是C中的一個常見bug。 – MSalters