2012-02-18 13 views

Odpowiedz

0

trzeba przeznaczyć bufor siebie:

WCHAR txtbuff[50]; 
GetDlgItemText(hwnd, IDC_EDIT1, txtbuff, 50); 
/* or... */ 
GetDlgItemText(hwnd, IDC_EDIT1, txtbuff, sizeof(textbuff)/sizeof(textbuff[0])); 
MessageBox(NULL, txtbuff, L"Error message", MB_OK); 

Prosty LPWSTR zmienna jest wskaźnikiem, w przykładzie, masz wskaźnik, ale nigdzie jeszcze nie wskazuje. Tworząc bufor jawnie, określasz rozmiar i możesz go dostarczyć do GetDlgItem.

+0

Problem polega na określeniu znaków, ponieważ nie znam ich numeru, gdy użytkownik wprowadzi wartość. –

+1

@Lion King może nie rozumiesz, że pamięć musi być przydzielona wcześniej. Jeśli potrzebujesz znać długość wprowadzania danych przez użytkownika, użyj GetWindowTextLength – rkosegi

0

Można użyć sizeof tak:

TCHAR txtbuff[50]; 
GetDlgItemText(hwnd, IDC_EDIT1, txtbuff, sizeof(txtbuff) * sizeof(TCHAR)); 
+0

W swoim kodzie dodałeś konkretny numer [50] i nie wiem, co to jest liczba znaków –

+0

Niestety, musisz znać maksymalną długość bufora z góry, aby móc go używać z GetDlgItemText.W twoim kodzie użyjesz LPWSTR, który jest wskaźnikiem do WCHAR, więc pamięć musi być wcześniej przydzielona. – rkosegi

+1

Nieprawda. Możesz zapytać, jak duży musi być bufor, aby zmieścić cały tekst. –

Powiązane problemy