Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

Wstawianie do edit-a - WinApi

#1
Wstawianie do edit-a - WinApi
Witam!

W moim programie znajduje się kilka kontrolek edita i buttona, w jaki sposób zrobić by po naciśnięciu w buttona wartość, jaką oferuje znalazła się w edicie, w którym aktualnie mruga kursor? Jest taka funkcja
if(wPar) SetWindowText(hEditw, "napis"); ale ona wstawia do wybranego edita. Z góry dziękuję!
Przez całe życie szukamy spokoju, a kiedy go odnajdujemy staje się nie do zniesienia.
 System operacyjny: windows_vista Przeglądarka: opera
#2
RE: Wstawianie do edit-a - WinApi
Zacząć używać google... http://msdn.microsoft.com/en-us/library/...S.85).aspx
 System operacyjny: windows_xp_2003 Przeglądarka: opera
#3
RE: Wstawianie do edit-a - WinApi
Ale jak zastosować w programie

case ID_PRZYCISK4: // dla buttona 1
// Trzeba tą funkcją sprawdzić czy kontrolka edita pierwszego jest aktywne, jeżeli tak to zwraca 1 i wpisać wartość a jeżeli nie to zwraca 0 i sprawdzić czy edit 2 jest aktywny, jeżeli tak to wstawić tam tą wartość, jeżeli nie to sprawdzić czy edit3 ... Czy oto chodzi? Może jakiś przykład użycia!
break;
Przez całe życie szukamy spokoju, a kiedy go odnajdujemy staje się nie do zniesienia.
 System operacyjny: windows_vista Przeglądarka: opera
#4
RE: Wstawianie do edit-a - WinApi
/wiesniak wali głową w ścianę...
Cytat:The return value is the handle to the window with the keyboard focus. If the calling thread's message queue does not have an associated window with the keyboard focus, the return value is NULL.
Ustalmy sobie jedno: znasz angielski na tyle, by zrozumieć powyższy cytat?
Funkcja zwraca Ci uchwyt na kontrolkę, w której aktualnie mruga kursor. Jeśli takiej nie ma, to zwraca NULL.
Skoro masz uchwyt, to wystarczy go użyć w SetWindowText().
 System operacyjny: windows_xp_2003 Przeglądarka: opera
#5
RE: Wstawianie do edit-a - WinApi
Cytat:The return value is the handle to the window with the keyboard focus. If the calling thread's message queue does not have an associated window with the keyboard focus, the return value is NULL.

Nie znam angielskiego na tyle by zrozumieć powyższy cytat. To, co napisałeś jest zrozumiałe, ale nie wiem jak to zapisać.

Kod:
case ID_PRZYCISK4: // dla buttona 1
           HWND GetFocus(VOID);
           if(wPar) SetWindowText(..., "1.0");
break;

Nie jestem do końca przekonany, co do tego zapisu i nie wiem, co wstawić zamiast tych 3 kropek. Na pewno uchwyt, który zwraca funkcja HWND GetFocus(VOID); Czyli co: hwnd? Nie, bo nie działa.
Przez całe życie szukamy spokoju, a kiedy go odnajdujemy staje się nie do zniesienia.
 System operacyjny: windows_vista Przeglądarka: opera
#6
RE: Wstawianie do edit-a - WinApi
Ok, to będę brał na to poprawkę i tłumaczył. Natomiast Tobie radziłbym ćwiczyć, bo bez znajomości angielskiego na tyle, by zrozumieć opis będzie Ci ciężko w przyszłości. Tym bardziej, że polskie strony są raczej biedne w treść porównując to stron anglojęzycznych (choćby codeguru.com).

Na stronie masz opisaną składnię funkcji, jej prototyp. Tak więc HWND to tylko informacja o zwracanym typie.
Skoro funkcja coś zwraca, to wypadałoby to gdzieś sobie zapisać, nie? :-)
Kod:
HWND przyciskZfocusem = GetFocus();
if(przyciskZfocusem!=NULL)
     SetWindowText(przyciskZfocusem,"1.0");
else
     // akcja gdy żadna kontrolka nie jest akrywna
 System operacyjny: windows_xp_2003 Przeglądarka: opera
#7
RE: Wstawianie do edit-a - WinApi
Hmm, ten kod co napisałem powoduje zmiane wyświetlanego napisu na buttonie.

Kod:
case ID_PRZYCISK4: // dla buttona 1
           HWND przyciskZfocusem = GetFocus();
           if(przyciskZfocusem!=NULL)
                   SetWindowText(przyciskZfocusem,"1.0");
           else
           // akcja gdy żadna kontrolka nie jest akrywna
      break;

Ja to rozumiem tak: (if) jeżeli przyciskZfocusem jest równy null to wykonaj SetWindowText(przyciskZfocusem,"1.0"); null - czyli nie ma kontrolki, w której mruga kursor. (nie wiem)
Przez całe życie szukamy spokoju, a kiedy go odnajdujemy staje się nie do zniesienia.
 System operacyjny: windows_vista Przeglądarka: opera
#8
RE: Wstawianie do edit-a - WinApi
!=

Różny, a nie równy.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#9
RE: Wstawianie do edit-a - WinApi
Aha, kurde nadziałbym sie na != ale i tak wyświetla na buttonie a nie w kontrolce.
Przez całe życie szukamy spokoju, a kiedy go odnajdujemy staje się nie do zniesienia.
 System operacyjny: windows_vista Przeglądarka: opera
#10
RE: Wstawianie do edit-a - WinApi
Heh, no tak... Przyciśnięcie buttona zmienia aktywną kontrolkę.
Przychodzi mi do głowy takie rozwiązanie: robisz sobie zmienną typu HWND i inicjalizujesz ją wartością NULL.
Kiedy wybierzesz kontrolkę, staje się ona aktywna. Kiedy klikasz na inną, to poprzedniej idzie komunikat WM_KILLFOCUS. Robisz sobie nasłuch na ten komunikat, a gdy się pojawi, do swojej zmiennej zapisujesz uchwyt kontrolki która straciła aktywność. Teraz po kliknięciu w przycisk, w Twojej zmiennej będzie uchwyt na ostatnio użytą kontrolkę.
Uwagi:
1. Robiąc przypisanie do zmiennej, sprawdzać trzeba, czy aktywność traci jakaś kontrolka typu edit (czyli o określonym, znanym uchwycie). Jeśli tego nie zrobisz, to możesz mieć sytuację, że klikniesz na jakiś przycisk, później na ten właściwy i w efekcie dostaniesz uchwyt na pierwszy przycisk. Jeśli masz jeden przycisk i brak innych kontrolek, to to raczej można pominąć.
2. Uchwyt kontrolki, która traci aktywność, jest w zmiennej wParam.

===

Przyszedł mi do głowy inny sposób: Łapiesz komunikat WM_ACTIVATE
Jest on wysyłany do kontrolki która traci aktywność oraz do tej, która zyskuje.
Musiałbyś sprawdzić, czy aktywowana kontrolka to Twój przycisk, a jeśli tak, to deaktywowana kontrolka będzie Twoim polem tekstowym (chyba że jak poprzednio w uwadze #1).
 System operacyjny: windows_xp_2003 Przeglądarka: opera
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
c++ winapi edit aktywnywinapi jak sprawdzić czy edit w innym programie jest aktywnywinapi uchwyt do edit

Podobne wątki (Wstawianie do edit-a - WinApi)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  MFC c++ jak dodać coś do listboxa z edit control poprzez button Mordrak 0 6064 13.01.2015, 15:57
Ostatni post: Mordrak
  [C++ WinAPI] Kompresja bitmapy kikiw 0 5287 25.12.2014, 16:15
Ostatni post: kikiw
  [c,winapi]-Access voliation reading location i problem z BITMAPFILEHEADER sfx 3 3570 12.08.2014, 16:11
Ostatni post: Darekg11

Skocz do:


Wybrane wątki (Wstawianie do edit-a - WinApi)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  VBA excel dmjs 6 10696 17.04.2019 10:20
Ostatni post: ptrick
  C++ - sens pogłębiania nauki gbr 5 10380 25.03.2019 12:53
Ostatni post: koneton
  Klasa wewnętrzna w C++ Physicist 4 10034 23.03.2019 18:28
Ostatni post: Physicist
  Ruby on Rails - tutoriale luciussulla 0 9139 23.03.2019 16:49
Ostatni post: luciussulla
Big Grin Czy dostane sie technikum informatycznego klaudiusz20046 6 12780 21.03.2019 01:28
Ostatni post: UnableToSee
  [C#] Program do moderacji czatów gier wiktrom12 0 9633 07.03.2019 15:33
Ostatni post: wiktrom12
  Mój pierwszy projekt - Pomoc rafal12999 1 10068 07.02.2019 22:01
Ostatni post: Szachista
  pomoc projekt scilab piesel18 2 11545 04.02.2019 09:03
Ostatni post: piesel18
  Szkoła Informatyczna Zikinan 1 10371 02.02.2019 17:59
Ostatni post: wojownikhaha
  [Java] Strona z zadaniami do rozwiązania i odpowiedziami rafal12999 2 11172 27.01.2019 13:44
Ostatni post: rafal12999
  kompilacja biblioteki Agui - cmake jurek2 0 10398 10.01.2019 13:12
Ostatni post: jurek2
  Zamiana całego zestawu znaków wg przyporządkowania BarHorab 5 11106 19.12.2018 16:45
Ostatni post: Szachista
  Sumowanie licz excel - problem OxyGenE 2 13792 19.12.2018 16:29
Ostatni post: Szachista
  Jaki kod pod pewne zdarzenia visualbasic 2010 aktywny27 4 11562 07.11.2018 13:41
Ostatni post: Ajgor
Scared Ipad Pro programowanie? NissmoOne 4 12683 06.10.2018 12:22
Ostatni post: NissmoOne