Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Struktura NMMOUSE (tagNMMOUSE)
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004
Struktura NMMOUSE (tagNMMOUSE)

Witam

Czy mógłby mi ktoś napisać coś więcej na temat struktury NMMOUSE (tagNMMOUSE) a dokładnie chodzi mi o zmienną DwHitInfo i pt (POINT).

W MSDN napisali, że struktura POINT przechowuje koordynaty myszki w momencie kliknięcia ale jakoś mi zawsze pokazuje wartości 0. Kombinowałem już z ScreenToClient i odwrotnie ale zawsze jest to samo.

Czekam na porady. Pozdrawiam


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

20-10-2004 18:34
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Powinieneś napisać ten post w dziale API, ale skoro już tu jesteś...

Struktura POINT jest przez Ciebie niezainicjowana. Musisz ją zainicjować za pomocą polecenia GetCursorPos()
Więcej na: http://www.mentalis.org/apilist/apilist.php


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

20-10-2004 19:19
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
DJK



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

Miałem zamiar napisać to w API ale nie jestem pewien czy wszyscy tam zaglądają a jak wiadomo ten dział jest najczęściej odwiedzany

Co do POINT to jest taka struktura jak NMMOUSE lub tag NMMOUSE, która "współpracuje" z ComboBoxEx. W MSDN jest napisane, że w momencie klikniecia myszką na Combo struktura POINT posiada juz koordynaty także niepotrzebna jest funkcja GetCursorPos z tym, ze u mnie cały czas jest zero. Gdy wykorzystam funkcję ScreenToClient to wart. X i Y przyjmują dziwne wartości (ujemne) i na dodatek cały czas są jednakowe mimo iż ruszam myszką

O co chodzi.

Pomocy !!!!!!

Nie mogę sobie z tym poradzić (COMBOBOXEX i kliknięcie na okno Edit).


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

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




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

Napisałeś, że pt zawsze zwraca ci 0.. 0, czy parę [0,0] ? Bo jeśli to pierwsze, to przede wszystkim sprawdź, czy dobrze zadeklarowałeś ten typ danych. Tam nie ma być wartość liczbowa, lecz struktura POINT.

Sprawa druga: co ma ci wypełniać tą strukturę? Bo jeśli gdzieś jest błąd, to sądzę, że może procedura za to odpowiedzialna coś robi nie tak lub wogóle nic nie robi.

Sprawa trzecia: co masz w DwHitInfo? Jakie wartości?


_____________________________________________
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:47
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



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

Czyli tak jeżeli chodzi o 0 to miałem na myśli zmienne X,Y jeżeli chodzi o DwHitInfo to
HiWord(dwHitInfo) zwraca mi wartość 513 gdy myszka
jest DOWN a 514 gdy jest UP (odpowiada to stałym MN_LBUTTONDOWN i NM_LBUTTONUP).Gdy tylko przesuwam myszką to jest to wartość 512 - wszystko niby się zgadza ale tylko wtedy gdy klikam na EditBoxa w ComboBox a gdy już kliknę na DropDown i myszka jest DOWN lista rozwija się i chowa ??

W MSDN napisali, że POINT zwraca koordynaty myszki w momencie kliknięcia na ComboBox'a (nie zawsze bo wiadomo w innych przypadkach używamy ScreenToClient) ale tak napisali (no chyba, że nie znam angielskiego ) ---> "when click occured"

Combo ma poprostu reagować na MouseDown (raz się rozwija raz zwija) bez względu na to czy klikamy na EditBox czy na DROPDOWN.

P.S. Chiałem spróbować przechwycić okno "DropDown" mojego CBOEX ale FindeWindowEx ani GetWindow nie działają - przypominam że kontrolka jest utworzona jako wirtualna.

Jak to zrobić bo męczę się z tym już od tygodni

Pozdrawiam


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

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




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

Ok. Ale skąd dostajesz NMMOUSE? Czy razem z którąś wiadomością, czy też używasz funkcji do jej pobrania? Jeśli tak, to którą?


_____________________________________________
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:44
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



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

z wiadomością NM_SETCURSOR


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

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




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

Sprawdź, czy przy kopiowaniu zwróconych danych nie kopiujesz zbyt mało bajtów. Możliwe, ze poprostu podajesz za małą długość kopiowanego obszaru (np. o 8 lub więcej bajtów za mało) i dlatego ci tak wychodzi.


_____________________________________________
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:13
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



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

No robię coś takiego:

CopyMemory NMMOUSE, ByVal lParam, Len(NMMOUSE)

No chyba dobrze (raczej)

Chyba, że tobie o co innego chodzi.


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

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




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

Hmm.. tak, dokładnie o to mi chodziło.

Spróbuj podać długość NMMOUSE bezpośrednio, tzn. wpisz tam 28 (bo chyba tyle wynosi jej długość).

Nic więcej do głowy mi nie przychodzi, ale dziwią mnie troszkę wartości, które otrzymujesz w dwHitInfo. Tam powinny się znaleźc dane określajace na co teraz wskazuje kursor, nie informacja o tym, co się dzieje z klawiszami myszy.


_____________________________________________
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:42
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



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

DwHitInfo - nazwa zmiennej sama mówi coś o zdarzeniach kliknięcia "Hit" - może błąd jest po stronie opisu MSDN - dlaczego tam jest napisane, że struktura POINT wskazuje miejsce kliknięcia ??

Pozdrawiam


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

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




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

Wg. MSDN dwHitInfo informuje o tym gdzie nastapiło kliknięcie i jest to całkiem sensowne. Chodzi o obszar - client area, titlebar, ramka, narożnik itp.
Natomiast nie widze innego kandydata na zmienną przechowującą dane punktu kliknięcia niż pt.

Przyszedł mi do głowy jeszcze jeden pomysł - może coś w definicji typu NMMOUSE jest źle? Może nie ta kolejność zmiennych, może któraś ma niewłaściwą długość? Jakiego typu zmienne masz w NMMOUSE i NMHDR? Interesuje mnie szczególnie to drugie.


_____________________________________________
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:05
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



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

Public Type NMHDR
  hwndFrom As Long
  idFrom As Long
  Code  As Long
End Type

Type tagNMMOUSE
    hdr As NMHDR
    dwItemSpec As Long
    dwItemData As Long
    pt As POINT
    dwHitInfo As Long
End Type


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

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




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

No to w takim razie nie wiem...
Wszystko wydaje się być w porządku także tutaj...


_____________________________________________
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 22:25
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Wszystkich odpowiedzi: 13 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1