나는 최근이 튜토리얼을 사용하여 Win32 API를 학습 시작했다 : 나는 현재 "편집 상자 실험있어 (나는 ++ 튜토리얼로하지 C를 C를 사용하고 있지만)문제 초기화 전역 변수
http://www.winprog.org/tutorial/을 "-function 여기서 편집 상자에 쓰여진 텍스트를 다른 줄의 문자와 비교하려고합니다. 코드 :
#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가'
을 사용런타임 검사 실패 (I이 기능을 사용하고있을 때, 표시 및 이것은 단지 그들 중 하나)이다 코드 :
확인 실패 # 3 런타임 - 변수 'hEdit이'범위의 매우 중요한 개념으로
어떻게 '비교'기능을 호출합니까? – Naveen
C++에서는 초기 값을 가질 때까지 변수를 선언하지 않습니다. 예 : 'HFONT hfDefault = GetStockObject (...'.) 이것은 초기화하기 전에 변수를 사용할 수 없게하는데, 이는 C의 일반적인 버그입니다. – MSalters