giron Opublikowano 31 Grudnia 2004 Zgłoś Opublikowano 31 Grudnia 2004 czesc, mam taki problem, pisze programik do grafiki ktory ma szybko sie uruchamiac i rownie szybko po zrobieniu swojego zamykac sie. Jednak po zamknieciu programu i zwroceniu focusa ma wpisac w to okno do ktorego wroci jakis tekst. W kazdym razie program uruchamia sie w kazdym momencie, poprzez klawisz skrotu - windowsowa opcja, dla elementow z pulpitu. Przyklad pisze sobie cos w notatniku, nagle uruchamiam program klawiszem skrotu, program robi swoje i po wyjsciu z niego, jak focus wroci do notatnika, a dokladnie jego okna Edit ma wypisac tekst. Do tej pory udalo mi sie najpierw dobrac do Notatnika, pobierajac w programie okno -> GetWindow(GW_HWNDNEXT) i nastepnie jego child -> GetWindow(GW_CHILD). I dzialalo ok, tylko ze nie kazdy program ma taka strukture okien. Inny sposob ktory uzylem: sprawdzenie wszystkich dzieci tego programu, np. notatnika. I w ten sposob udalo sie wyslac tekst do Notatnika, Visuala, czy programu UltraEdit (program typu MDI, z dokumentami). Tekst wysylam funkcja PostMessage(). najpierw robilem za pomoca WM_CHAR, teraz jako WM_KEYDOWN i WM_KEYUP, bo to pierwsze nie wszedzie hulalo. W kazdym razie nie podoba mi sie ten drugi sposob, chyba przekombinowany, i nie daje rady wszystkim programom, a pierwszy niewystarczajacy (dzialal tylko na Notatnik, z tych na ktorych testowalem). Szukam funkcji API, MFC, lub lepszego sposobu - (pisze w VisualStudio 6), ktore pozwola mi "latwo i przyjemnie" uzyskac wskaznik, dostep do tego okna (Edita) w ktorym potem bede mogl wpisac tekst, czyli okno majace ostatni focus, ale nie jako program (Notatnik) tylko konkretne okno. Czyli najlepiej jakby istniala funkcja typu pobranie okna z ktorego startowalem, np. notatnika CWnd* wnd GetWindow(GW_HWNDNEXT); <- to stosuje i cos jak: CWnd* wnd_poszukawane = wnd->GetLastActiveWindow(); <- z tym ze takiej nie ma w MFC prosze o pomoc i dzieki, pozdrawiam Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
piotrek_zet Opublikowano 16 Stycznia 2005 Zgłoś Opublikowano 16 Stycznia 2005 nie za bardzo kumam o co Ci chodzi, czy ten napis wyświetlany w oknie głównym ma być jakiś konkretny - zwiazany z wynikiem dialoga czy po prostu ma sygnalizowac tylko zakończenie pracy dialoga, z przesyłaniem informacji miedzy okienkami mozesz posłuzyc sie jakąs zmienną statyczną, lub uzyc stałej GWL_USERDATA bodajze, albo jak sie chcesz bardzo bawic to mozesz to zrobic przez schowek :lol: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...