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

[WinAPI] Zamykanie określonego okienka

Ostatnio zmodyfikowano 2013-12-01 17:16
Autor Wiadomość
pawellek1995
Temat założony przez niniejszego użytkownika
» 2013-11-30 20:45:34
C/C++
if( hwnd == okienka[ 0 ] )
     PostQuitMessage( 0 );

zamiast
C/C++
if(( HWND ) lParam == SetFocus( okienka[ 0 ] ) )
     PostQuitMessage( 0 );

Dlatego podałem ci kod mój co zmieniłem już.
P-97952
pekfos
» 2013-11-30 20:53:54
Twój sposób nie działa. WM_DESTROY nie gwarantuje niczego sensownego w lParam, a SetFocus() zwraca poprzednią wartość. Jeśli będziesz miał focusa na oknie głównym i zamkniesz inne okno, to program się wyłączy.
P-97955
pawellek1995
Temat założony przez niniejszego użytkownika
» 2013-11-30 20:56:42
Mój program działa o dziwo, wklej sobie w kompilator i zobacz, testowałem na trzech oknach. Tylko jak zostaje jedno okno to wygląda jak by było odznaczone czyli focus jest gdzieś indziej. Jak to można wytłumaczyć?
P-97956
pekfos
» 2013-11-30 21:15:20
Mój program działa o dziwo
To zrób tak: Utwórz wiele okien, uaktywnij główne okno i zamknij jedne z nieaktywnych mniejszych okien. Jak dobrze trafisz, to już teraz program się wyłączy. Jeśli nie, to okienko zamknie się poprawnie i inne (z małych) dostanie focusa. Zamknij je, wtedy wszystkie będą nieaktywne. Nieważne, na który X naciśniesz, okno nie zareaguje na pierwsze naciśniecie, a za drugim cały program się wyłączy. (A przynajmniej u mnie tak to działa, co już jest wystarczającym argumentem, że rozwiązanie jest nieprawidłowe)

Nie wiem, co Ci nie działało w moim rozwiązaniu. Pewnie to, że, mimo tego co tu piszesz, zamknięcia całego programu oczekujesz tylko po zamknięciu okna głównego. Wtedy faktycznie, nie działa, bo trzeba porównywać pierwszy argument procedury okna z uchwytem okna głównego, a nie z innym.
P-97957
pawellek1995
Temat założony przez niniejszego użytkownika
» 2013-12-01 16:22:24
Chciałem żeby konkretne okno się zamykało. Czyli jak bym kilknął na X w jakimś tam 10 oknie to te 10 okno się tylko i wyłącznie zamykało. A twój if nie działał ;/. Zrobiłem wszystko tak jak powiedziałeś ;/
P-98026
pekfos
» 2013-12-01 16:27:15
Zrobiłem wszystko tak jak powiedziałeś ;/
Rly?
C/C++
if( pierwszyArgumentProceduryOkna == uchwytOknaGlownego )
     PostQuitMessage( 0 );
Tak zrobiłeś? Jeśli tak myślisz i nie działa, to podaj kod.
P-98027
pawellek1995
Temat założony przez niniejszego użytkownika
» 2013-12-01 16:47:46
(pierwszyArgumentProceduryOkna)WndProc? Czyli HWND == (uchwytOknaGlownego)to hwnd ?
P-98033
pekfos
» 2013-12-01 17:16:53
P-98036
1 2 3 « 4 »
Poprzednia strona Strona 4 z 4