Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Jak usunąć migajacy kursor ??
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004
Jak usunąć migajacy kursor ??

Witam

Jak usunąć migajacy kursor z TextBox'a a dokładnie z Edit Box w COMBOBOXEX ??

Pozdrawiam


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

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




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

Funkcją HideCaret.

Deklaracja:
Declare Function HideCaret Lib "user32" Alias "HideCaret" (ByVal hwnd As Long) As Long


Parametry:
hWnd - uchwyt do okna, które ma karetkę.


_____________________________________________
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

10-10-2004 22:59
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

A nie możesz poprostu sobie sprawdzić? -_-

Tak, będzie można.


_____________________________________________
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

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



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

Kurcze czemu ta funkcja nie działa mi z ComboBoxEx, ani po ustawieniu Fokusa, ani po WM_PAINT ??

P.S. A co do zmiany Tekstu po ukryciu Kursora to da się zmieniać - testowałem to na TextBox'ie.

Pozdrawiam

[Post edytowany dnia 12-10-2004 16:22 przez DJK]


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

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




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

Nie znam ComboBoxEx, więc nie wiem, ale pewnie dlatego, że on wogóle nie używa karetki (tzn. ma swoją), albo wysyłasz nie do tego okna co trzeba. Byćmoże ComboBoxEx ma w sobie np. TextBox'a i to do niego trzeba wysłać tą wiadomośc, a nie do samego ComboBoxEx.


_____________________________________________
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

12-10-2004 16:28
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

Musze się przyznać że tej funkcji API nie znałem. Zaciekawiła mnie tym bardziej gdy zobaczyłem sampel w API-Guide który ukrywa migotanie w scrollbarach. Bardzo dawno temu szukałem na to sposobu i używałem przekazywanie focusu pictureboxowi który jest poza formą.


_____________________________________________
Projekt "Thunder Cannons" nadchodzi...

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




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

Więc może zaciekawią cię jeszcze te funkcje, też związane z karetkami:

CreateCaret - tworzenie karetki na podstawie dowolnej bitmapy
DestroyCaret - usuwa karetkę (całkowicie). Działa tylko w zakresie twojego programu.
GetCaretBlinkTime/SetCaretBlinkTime - pobiera/ustawia prędkość migania
GetCaretPos/SetCaretPos - pobiera/ustawia pozycję (przydatne dla tych, którzy kiedyś pytlali, jak pobrać pozycję kursora w okienku)
ShowCaret - odwraca efekt działania HideCaret.


_____________________________________________
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

13-10-2004 05:27
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

Obejżałem funkcje w dziale "Caret" w API-Guide i dla zabawy napisałem programik z textboxami które mają animowaną karetkę. Dla zainteresowanych źródło tego bajeru znajduje się tutaj:
http://vvictor.freeserverhost.com/CoolTxtBox.frm
http://vvictor.freeserverhost.com/CoolTxtBox.frx
(należy ściągnąć oba pliki i odpalić CoolTxtBox.frm)


_____________________________________________
Projekt "Thunder Cannons" nadchodzi...

13-10-2004 15:26
Pokaż profil Chudy  Wyślij email do Chudy   Odwiedź stronę Chudy       1220895
DJK



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

Szkoda tylko, że funkcje te za bardzo chcą działać z ComboBoxEx


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

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




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

Już wyjasniałem dlaczego - albo ComboBoxEx nie używa karetki, albo podajesz złe okno.


_____________________________________________
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

13-10-2004 18:43
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



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

ComboBoxEx zostało utworzone funkcją CreateWindowEx, która zwraca uchwyt

Skoro wpisuję HideCaret(mój uchwyt) to co w takim razie jest nie tak bo kursor dalej miga

Pozdrawiam.


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

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




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

Ehh.. -_-
Ale ComboBoxEx może składać się z wielu okien. Ty tworzyłeś tylko okno główne, ale klasa mogła utworzyć wiele okien podrzędnych i to któreś z nich może mieć karetkę. Ty masz tylko uchwyt tego najwyżeszego okna ComboBoxEx. Jest też mozliwe, że ComboBoxEx wogóle nie używa karetki, tylko sam sobie rysuje kursor i wtedy niewiele możesz zrobić...


_____________________________________________
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

13-10-2004 20:05
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

Tak, sprawdziłem. ComboBoxEx używa klasy ComboBox i to prawdopodobnie ona ma karetkę.


_____________________________________________
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

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



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

Hmmm - dodałem do formy zwykłego ComboBox'a i też nie da sie usunąć Kursora.


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

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




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

Zgadza się. To dlatego, że ComboBox używa Edita, a on dopiero ma karetkę . Musisz usunąć karetkę z Edita. Np. w taki sposób:
Const GW_CHILD = 5&

Declare Function HideCaret Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long

'.
'.
'.

Sub HCICB(hWnd_ThunderComboBox As Long)
    Dim hWnd_Edit As Long
   
    hWnd_Edit = GetWindow(hWnd_ThunderComboBox, GW_CHILD)
    HideCaret hWnd_Edit
End Sub


Ten przykład jest pisany "pod" ThunderComboBox, więc jego działanie mogę zapewnić tylko dla tej klasy. Ale wydaje mi się, że zwykły Windowsowy ComboBox niewiele się różni jeśli chodzi o użycie okienek. Zresztą ty chyba potrzebujesz właśnie dla tej pierwszej, więc nie powinno być problemu .


_____________________________________________
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

14-10-2004 10:56
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



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

Sprawdziłem ze zwykłym Combo i działa zarówno dla GW_CHILD jak i GW_OWNER ale nadal nie działa z moim ComboBoxem

Public Function CreateComboBoxEx() As Long
Dim cExHwnd As Long
Dim icex As InitCommonControlsExType

icex.dwSize = Len(icex)
icex.dwICC = ICC_USEREX_CLASSES
       
InitCommonControlsEx icex

CreateComboBoxEx = CreateWindowEx(0, "ComboBoxEx32", "", CBS_DROPDOWN Or WS_BORDER Or WS_VISIBLE Or WS_CHILD, 8, 20, 250, 500, Form1.hwnd, ByVal 0&, App.hInstance, ByVal 0&

End Function

Tak została utworzona ta kontrolka

Może czegoś brakuje ??

Pozdrawiam


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

14-10-2004 12:41
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
DJK



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

Okazało się ze działa ale nie dla GW_CHILD tylko dla

GW_OWNER i tylko wtedy gdy kontrolka wysyła

CBN_SELCHANGE - hmmm

Pozdrawiam

[Post edytowany dnia 14-10-2004 23:46 przez DJK]


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

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