Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: uchwyt okna
anonim




Typ: Nie zarejestrowany
uchwyt okna

w jaki sposób (mając uchwyt okna) ustawic je jako aktywne???

np. zeby zadziałało jak metoda SetFocus

        frmForm.SetFocus

?????????????

20-10-2004 19:36
  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

A co to za okno - FORMA ??

Zajrzyj do API albo poczytaj o Subclassingu - podaj więcej szczegółów.

Czy to okno jest tworzone jako wirtualne ??


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

20-10-2004 20:34
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
Chudy
[TLHW]Wiktor



Typ: moderator
Postów: 574
Zarejestrowany: Aug 2002

Niewiem czy to zadziała, ale znalazłem wśród stałych Windowsa stałą WM_SETFOCUS, a po jej nazwie można się spodziewać że umożliwia wykonanie to na co odpowiedzi szukasz. Tak więc najpierw użyj tych deklaracji:
Const WM_SETFOCUS = 7
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long

a następnie spróbuj wykonać takie polecenie:
SendMessage <jakiś hWnd>, WM_SETFOCUS, -1, ByVal CStr(0)
Podmieniając fragment zaznaczony na zielono na odpowieni uchwyt oczywiście.


_____________________________________________
Projekt "Thunder Cannons" nadchodzi...

20-10-2004 21:30
Pokaż profil Chudy  Wyślij email do Chudy   Odwiedź stronę Chudy       1220895
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Anonim:
W WinAPI jest funkcja BringWindowToTop:
Deklaracja:
Public Declare Function BringWindowToTop Lib "user32" Alias "BringWindowToTop" (ByVal hwnd As Long) As Long

Jako parametr hWnd podajesz uchwyt do okna.

DJK:
Będę dzisiaj złośliwy i zadam pytanie:
Co to jest ten subclassing, o którym ostatnio tak często wspominasz? i co to jest okno wirtualne?

[Post edytowany dnia 21-10-2004 12:57 przez marcin_an]


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

21-10-2004 12:57
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Po polsku
http://www.vbzone.kylos.pl/show.php?id=articles/windows.htm - od tytułu "Subclassing" w dół

http://www.thescarms.com/vbasic/subclassform.asp -Trap Windows Messages by Subclassing your Form

Do ściągnięcia ze strony http://www.ftponline.com/archives/premier/mgznarch/vbpj/2001/11nov01/qa0111/qa0111.asp
ciekawy artykuł (format pdf) - "Subclass Forms to Create New Events" -  Francesco Balena.
 
Francesco Balena publikuje wiele artykułów związanych w tym tematem (Google  - subclass Francesco Balena)


_____________________________________________
Karolina

21-10-2004 15:46
Pokaż profil karolinavb  Wyślij email do karolinavb   
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Hmmm - a ja myślałem, że wiesz

Chodzi o okno, które jest tworzone w momencie ładowania programu i tworzone funkcją CreateWindow lub CreateWindowEx.

Ja używam takiego określenia bo moim zdaniem jest ono odpowiednie.

A Subclassing polega na przechwytywaniu Notyfikacji, wiadomości wysyłanych przez jakieś okno . Umożliwia ci to pełną kontrolę na kontrolką (kontrolkami).

Jasne czy nie bardzo

Pozdrawiam


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

21-10-2004 16:22
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Ja wiem...
Chciałem zobaczyć, czy ty wiesz, bo już któryś raz użyłeś tego słowa bez dodatkowych wyjasnień w miejscu gdzie nie widać jasnego związku między nim a tematem .

Widzę, ze wiesz.. wiec mam inne pytanie: jak można przy pomocy subclassingu aktywować okno?

Tak na marginesie - a znasz jakieś inne powszechnie dostępne funkcje, którymi można utworzyć okno w Windowsie?

[Post edytowany dnia 21-10-2004 16:36 przez marcin_an]


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

21-10-2004 16:32
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Jeśli już wspomnieliśmy o subclassingu i o tym, czym jest. Właśnie - czym jest? Bo moim zdaniem jest to tworzenie podklasy innej klasy. Ale i z tego, co powiedział DJK i z tekstów, do których linki podała Karolina wynika, że chyba jednak tak nie jest (albo raczej jest, ale w ograniczonym zakresie). Nie lubię żyć w błędzie... wiec jak to jest?

[Post edytowany dnia 21-10-2004 16:35 przez marcin_an]


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

21-10-2004 16:34
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Może inaczej to wyjaśnię.

Powiedzmy, że masz kontrolkę ComboBoxEx i masz w niej jakieś pozycję. Po kliknięciu na którąś pozycję chcesz by wyświetliło ci jaka to jest pozycja.

Akurat składa się tak że w momencie kliknięcia kontrolka wysyła notyfikację CBN_SELCHANGE, która zawiera informacje o tej pozycji.

I Tutaj musisz użyć Subclassingu - czyli umożliwić sobie przechwytywanie tego CBN_SELCHANGE.

To samo jest w przypadku innych kontrolek (myślę, że każda kontrolka coś wysyła).

Przykładem może być przechwytywanie zdarzenia polegającego na kliknięciu dwóch klawiszy jednocześnie.

Standardowe Zdarzenia nie umożliwiają ci tego dlatego jest przy tym trochę zabawy a dzięki Subclassing' owi wystarczy przechwicić wiadomość WM_HOTKEY i sprawdzić czy zostały kliknięte te klawisze które miały być wciśnięte

Nie zawsze muszą być to wiadomości czy notyfikacje pochodzące od kontrolki - mogą to być wiadomości systemowe.

Ogólnie : Subclassing umożliwia zwiększenie kontroli na kontrolką


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

21-10-2004 17:15
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Więc jak w takim razie nazwać inne sposoby tworzenia subklasy?


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

21-10-2004 17:19
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Nigdy nie bawiłem się w tworzenie podklas także nic na ten temat nie powiem.

Wiem, że SubClassing od razu kojarzy się z Pod (Sub) Classing (Klasa) i możliwe że w innych zastosowaniach także służy do tworzenia podklas (nie mam pojęcia). Ja tylko piszę tyle na temat Subclassingu ile mi wiadomo i raczej to co napisałem to jest to podstawowa funkcja Subclassing'u czyli kontrola kontrolki

Pozdrawiam


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

21-10-2004 17:23
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Przeszukałem trochę stron w Google i wychodzi na to, że wszyscy mamy rację .
Istnieje coś takiego jak subclassing w znaczeniu tworzenia podklasy. Istnieje jednocześnie technika subclassing, którek pełniejsza nazwa brzmi "Windows subclassing" - i polega własnie na przechwytywaniu danych z okienek . Obie opierają się na podobnym pomyśle i można powiedzieć, że Windows subclassing to jedna z odmian tego pierwszego. teraz już jest wszystko jasne. EoT .

A w tworzenie podklas się bawiłeś, tylko o tym nie wiesz .

[Post edytowany dnia 21-10-2004 17:53 przez marcin_an]


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

21-10-2004 17:52
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Nie bardzo rozumiem o co chodzi w ostatnum zdaniu


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

21-10-2004 18:27
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Ok, moze się nie bawiłeś. Ale prawdopodobnie to robiłeś. Naprawdę nigdy nie robiłeś klasy, która dziedziczyła elementy innej klasy? Sądzę, że jednak robiłeś. A gdyby tak nagiąć pojęcie obiektu i typ zmiennnych uznać za klasę, to na 100% to robiłeś .


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

21-10-2004 20:08
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Co do typów zmiennych to chyba okreslenie dziedziczenia chyba barziej pasuje do Struktury.

Zależy kto co uważa za klasę

Mi dziedziczenie to kojarzy się z C++ i może nigdy nie zastanawiałem się nad tym programując w VB

Pozdrawiam


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

22-10-2004 09:13
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Dlatego mówię o naginaniu pojęcia


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

22-10-2004 13:36
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Chudy
[TLHW]Wiktor



Typ: moderator
Postów: 574
Zarejestrowany: Aug 2002

Niewiem czy dobrze ale mi Subclassing odrazu się kojaży z SendMessage().


_____________________________________________
Projekt "Thunder Cannons" nadchodzi...

23-10-2004 21:10
Pokaż profil Chudy  Wyślij email do Chudy   Odwiedź stronę Chudy       1220895
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Jak już wyżej napisałem: chodzi o tzw. windows subclassing. Sprzeczałbym się, czy to wogóle jest tak naprawdę subclassing, czy raczej hooking, ale po przejrzeniu stron o VB zauwazyłem, ze w środowisku VB właśnie to zwykło się nazywac subclassingiem i się dostosuję. Nie zmienia to faktu, że dla mnie jest to nadal hooking.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

23-10-2004 21:33
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Do Chudego: Nie wiem czemu ci się to kojarzy z SendMessage skoro to nie ma nic wspólnego z Subcclasingiem (nie aż tak dosłownie).

Z funkcji SendMessage można korzystać w ogóle nie realizując Subclassingu i to w bardzo prosty sposób.

Ta funkcja jest bardzo przydatna.

A tak na marginesie wiele zdarzeń dostarczanych z kontrolkami (np. Click, DblClick itd.) jest właśnie realizowanych za pomocą funkcji SendMessage tylko, że w sposób niewidoczny dla użytkownika.

I aby to "zobaczyć" wykorzystujemy tzw. Subclassing

A co do znaczenia słowa SubClassing możliwe, że chodzi o "Pod" w znaczeniu "wchodzenia" do klasy czyli "podglądania" wszystkich operacji związanych z tą klasą

Pozdrawiam

[Post edytowany dnia 27-10-2004 16:44 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

27-10-2004 16:39
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
Wszystkich odpowiedzi: 18 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1