Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[winApi][C++] Pobieranie wartości textboxa do zmiennej

Ostatnio zmodyfikowano 2014-01-10 17:21
Autor Wiadomość
mikson
Temat założony przez niniejszego użytkownika
[winApi][C++] Pobieranie wartości textboxa do zmiennej
» 2014-01-08 16:12:37
Witam.

Jak pobrać wartość textboxa do zmiennej typu
int
?
Dodam, iż próbowałem zrobić to sposobem z lekcji w kursach, ale nie działa.
Próbowałem również zrobić to sposobem:
C/C++
int r_b = GetWindowTextLength( hText );
TCHAR * bufor_na_tekst = new TCHAR[ r_b ];
GetWindowText( hText, bufor_na_tekst, r_b );
ale również nie działa, bo program wypisuje jakieś dziwne liczby typu
7477000
.

Co tu robić?

Z góry dziękuję za pomoc i pozdrawiam.
P-101600
alixir
» 2014-01-08 17:08:08
Może są lepsze/bezpieczniejsze metody, ale ta też działa:

C/C++
HWND editID = GetDlgItem( hwnd, ID_EDIT );
_TCHAR buff[ 20 ];
GetWindowText( editID, buff, 20 );
int liczba = _tstoi( buff );
P-101604
mikson
Temat założony przez niniejszego użytkownika
» 2014-01-08 18:19:44
C:\Users\admin\Documents\C++\Zliczarka\main.cpp In function `LRESULT WindowProcedure(HWND__*, UINT, WPARAM, LPARAM)':
174 C:\Users\admin\Documents\C++\Zliczarka\main.cpp `ID_EDIT' undeclared (first use this function)
  (Each undeclared identifier is reported only once for each function it appears in.)
177 C:\Users\admin\Documents\C++\Zliczarka\main.cpp `_tstoi' undeclared (first use this function)
 C:\Users\admin\Documents\C++\Zliczarka\Makefile.win [Build Error]  [main.o] Error 1
P-101609
alixir
» 2014-01-08 19:19:08
Po 1: Znów to co poprzednim razem :)
#include <tchar.h>

Po 2: Kontrolki EDIT i BUTTON w moim przypadku miały nadane ID:

C/C++
#define ID_EDIT 501
#define ID_PRZYCISK 502
...
HWND hText = CreateWindowEx( WS_EX_CLIENTEDGE, _T( "EDIT" ), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 10, 150, 20, hwnd,( HMENU ) ID_EDIT, hInstance, NULL );
HWND g_hPrzycisk = CreateWindowEx( 0, _T( "BUTTON" ), _T( "Przycisk" ), WS_CHILD | WS_VISIBLE, 40, 40, 150, 30, hwnd,( HMENU ) ID_PRZYCISK, hInstance, NULL );
...
case WM_COMMAND:
switch( wParam )
{
case ID_PRZYCISK:
   
    HWND editID = GetDlgItem( hwnd, ID_EDIT );
    _TCHAR buff[ 20 ];
    GetWindowText( editID, buff, 20 );
    int liczba = _tstoi( buff );
   
    _TCHAR szBuffer[ 20 ];
    _stprintf( szBuffer, _T( "%i + 15 = %i" ), liczba, liczba + 15 );
    MessageBox( NULL, szBuffer, _T( "Liczba w oknie" ), MB_OK );
    break;
}
break;
P-101618
mikson
Temat założony przez niniejszego użytkownika
» 2014-01-08 19:27:42
Bibliotekę miałem zaimportowaną, ale ID nie nadałem :)

Teraz jest już tylko błąd:
179 C:\Users\admin\Documents\C++\Zliczarka\main.cpp `_tstoi' undeclared (first use this function)
P-101619
alixir
» 2014-01-08 19:38:05
Wygląda na brak biblioteki. U mnie na VC++ 2008 Express działa.
P-101621
alixir
» 2014-01-08 19:41:25
A spróbuj zamiast _tstoi użyć _wtoi
P-101622
mikson
Temat założony przez niniejszego użytkownika
» 2014-01-08 19:42:54
U mnie na DEVcpp nie działa i jak tak w necie poszperałem to tam pisali że to powinno być
_ttoi
.
Wstawiłem to na miejsce tego
_tstoi
 i nie narzeka, ale znowu nie wypisuje liczby z textboxa. Przesyłam fragmet kodu.

C/C++
HWND editID = GetDlgItem( hwnd, ID_EDIT );
_TCHAR buff[ 20 ];
GetWindowText( editID, buff, 20 );
int liczba = _ttoi( buff );

_TCHAR szBuffer[ 100 ];
_stprintf( szBuffer, _T( "Liczba: %i pkt." ), liczba );
MessageBox( NULL, szBuffer, "Wniki skomplikowanych obliczeń", MB_ICONINFORMATION ); }
P-101623
« 1 » 2 3
  Strona 1 z 3 Następna strona