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

[WinAPI] DEFPUSHBUTTON nie reaguje

Ostatnio zmodyfikowano 2012-04-24 15:14
Autor Wiadomość
pekfos
Temat założony przez niniejszego użytkownika
[WinAPI] DEFPUSHBUTTON nie reaguje
» 2012-04-23 19:14:37
Mam taki dialog:
DLG_CHAT DIALOG DISCARDABLE 5, 5, 250, 180
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Chat"
FONT 8, "MS Sans Serif"
{
    EDITTEXT ID_EDIT_LOG, 2, 2, 248, 164, ES_AUTOVSCROLL | ES_MULTILINE | ES_READONLY | WS_VSCROLL
    EDITTEXT ID_EDIT_MSG, 2, 168, 236, 12
    DEFPUSHBUTTON ">", ID_SEND_BUTTON, 238, 168, 10, 10
}
C/C++
HWND tmp = CreateDialog( GetModuleHandle( NULL ), MAKEINTRESOURCE( DLG_CHAT ), hwnd, ChatDlg );
ShowWindow( tmp, SW_SHOW );
Nie ma nigdzie flagi
ES_WANTRETURN
, a jednak po wpisaniu tekstu do
ID_EDIT_MSG
 i naciśnięciu Entera,
ID_SEND_BUTTON
 nie zostaje "wciśnięty".
Co tu jest nie tak?
P-55106
xevuel
» 2012-04-23 19:19:41
Z tego co mi wiadomo, "DEFPUSHBUTTON" oznacza przycisk domyślnie "wciśnięty" przy starcie dialogu. Ty przy wpisywaniu tekstu do Edita przekazujesz sterowanie editowi, więc przycisk nie ma jak zareagować. Musisz użyć subclassingu czy superclassingu i sprawdzać, czy Enter nie został naciśnięty. Nie jestem pewny na 100%, ale ja właśnie musiałem tak kombinować w swojej aplikacji.
P-55109
pekfos
Temat założony przez niniejszego użytkownika
» 2012-04-23 19:29:05
Z dokumentacji
ES_WANTRETURN
:
If you do not specify this style, pressing the ENTER key has the same effect as pressing the dialog box's default push button.
Czyli tak jak np. w dialogach pytających o hasło. Wpisuje się je i Enter :P
P-55114
DejaVu
» 2012-04-23 19:32:28
Może DEFPUSHBUTTON masz źle oprogramowany (strzelam)? Jak klikniesz DEFPUSHBUTTON to wszystko działa jak trzeba?
P-55115
xevuel
» 2012-04-23 19:32:35
W swojej innej aplikacji znalazłem coś takiego:

300 DIALOG DISCARDABLE 150, 100, 160, 120
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Połącz"
FONT 8, "MS Sans Serif"
{
     LTEXT "IP serwera: ", -1, 10, 10, 80, 10
     EDITTEXT 1001, 10, 25, 130, 13, WS_TABSTOP
     LTEXT "Twój nick: ", -1, 10, 50, 80, 10
     EDITTEXT 1002, 10, 65, 130, 13, WS_TABSTOP
     DEFPUSHBUTTON "OK", IDOK, 90, 90, 45, 17
}
I to mi działa. Może styl WS_TABSTOP?
P-55116
pekfos
Temat założony przez niniejszego użytkownika
» 2012-04-23 19:34:04
@DejaVu: Przy jawnym kliknięciu wszystko śmiga.
P-55117
DejaVu
» 2012-04-23 19:38:06
http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Podstawy /Okna-dialogowe-cz-8/191

Tu jest jakiś przykład wykorzystujący DEFPUSHBUTTON + edity :)
P-55118
pekfos
Temat założony przez niniejszego użytkownika
» 2012-04-23 19:47:31
Szukałem już pomocy przy tym przykładzie ale bez skutku.

//Dodatkowo w kontrolce
ID_EDIT_LOG
 nie działa '\n' (Jak tekst dojdzie do końca to się załamuje, ale tylko wtedy).
P-55121
« 1 » 2
  Strona 1 z 2 Następna strona