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

[WinAPI] Polecenie CONTROL - tekst ze zmiennej we własnym oknie dialogowym

Ostatnio zmodyfikowano 2014-03-25 05:29
Autor Wiadomość
McAffey
Temat założony przez niniejszego użytkownika
[WinAPI] Polecenie CONTROL - tekst ze zmiennej we własnym oknie dialogowym
» 2014-03-16 15:42:00
Witajcie. Tworzę własne okno dialogowe, w którym używam polecenia CONTRL do wpisywania tekstu i chciałbym żeby po uruchomieniu znajdowała się tam wartość ze zmiennej, jednak nie wiem jak to uzyskać.

Schemat polecenia CONTRL wygląda tak :
CONTROL text, id, klasa, style, x, y, szerokosc, wysokosc [, style-rozszerzone]


u mnie to konkretnie wygląda tak :
CONTROL "100", IDC_MAX_NUMBER_OF_LINES, "Edit", WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 22, 20, 14

tylko nie wiem jak zastąpić stałą dosłowną "100" wartością ze zmiennej (np. pobranej z pliku). Pierwszy raz się z tym spotykam i nie udało mi się tego wydedukować z materiałów które znalazłem na internecie, więc będę wdzięczny za wytłumaczenie jak to zrobić :)
P-106560
Admixior
» 2014-03-17 02:24:16
Z tego co widzę to to okno dialogowe nie jest tworzone w C++ tylko poprzez zasoby aplikacji (np. rozszerzenie *.rc)

Tutaj nie da rady dodać ładowania z pliku ze względu na to że ten kod jest przetwarzany w procesie linkowania (lub kompilacji). I zasoby jako tako nie wykonują się same, są one tylko danymi które nasz program będzie potrzebować.

Zmianę tekstu musisz zrealizować w kodzie c++, np. tuż po otwarciu okna za pomocą funkcji "GetDlgItem" pobierasz uchwyt, po czym ustawiasz tekst np. za pomocą funkcji SetWindowText.
P-106615
McAffey
Temat założony przez niniejszego użytkownika
» 2014-03-18 03:54:52
Hmm, wciąż nie rozwiązałem.

W
case WM_COMMAND:
, po naciśnięciu przycisku
if(( HWND ) lPar == SettingsButton )
 tworzę dialog w ten sposób
DialogBox( GetModuleHandle( NULL ), MAKEINTRESOURCE( 666 ), hwnd, SettingsDialogProcedure );
 a w następnej linijce próbuję zmienić wartość np. tak :
C/C++
HWND hDlg = FindWindow( NULL, "Settings" );
HWND DlgItem = GetDlgItem( hDlg, IDC_MAX_NUMBER_OF_LINES );

SetDlgItemText( DlgItem, IDC_MAX_NUMBER_OF_LINES, "test" );
SetWindowText( DlgItem, "test2" );

ale to nie działa. Co robię źle ?
P-106681
Adik80
» 2014-03-18 13:22:51
DialogBox tworzy okienko modalne, czyli program stoi na tej funkcji az do zamkniecia dialogu, czyli szukanie controlki robisz na zniszczonym oknie. Zamaist DialogBox mozesz sprobowac uzyc CreateDialog, potem pozmieniac parametry i wywoalc ShowWindow
P-106684
McAffey
Temat założony przez niniejszego użytkownika
» 2014-03-25 05:29:53
Sorki że dopiero teraz piszę odpowiedź, zrobiłem tak jak pisałeś i dokładnie o to chodziło, dzięki :)
P-107161
« 1 »
  Strona 1 z 1