Šta je novo?

LRESULT

VUCKO-91

Slavan
Učlanjen(a)
21.08.2008
Poruke
330
Poena
319
ucim da koristim windows api messaging, al imam problem..
U jednom objektu pozivam LRESULT SendMessage (NekaKlasa,WM_TEXT, waparam,lapram). U drugom objektu imam LRESULT OnMessage(WM_TEXT , Text()) , a Text() izgleda ovako :
LRESULT Text() { return std::string text;}
Meni treba da mi povratna vrednost u celoj prici bude string. Tj kad pozovem SendMessage da mi se na tom mestu umesto tog LRESULT vrati string.
Mentor mi je rekao da je to izvodivo, jer bukvalno sve moze da se smesti u taj LRESULT , ali na neki nacin moram da konvertujem podatke iz njega u string.
Kako se to radi ?

Text = (std::string) LRESULT ?
 
Poslednja izmena:
Da ne mislis na WM_GETTEXT?
http://msdn.microsoft.com/en-us/library/windows/desktop/ms632627(v=vs.85).aspx

Ako je WM_TEXT neki tvoj interni message, moze slicno da ide, ali mozda nije skroz isto kao gore.
wParam i lParam su specificni za svaki message, i za WM_GETTEXT se string buffer nalazi u lParam-u.

Mozes da vratis i u LRESULT-u, ali ako saljes poruku nekom drugom procesu, ne samo da trebas znati Window WinAPI (API za same UI kontrole), vec ces morati da naucis i IPC (Inter-Process Communication), sto je mozda najtezi deo WinAPI-a 😀

Ajde prvo da odredimo sta je WM_TEXT?
 
Prvo, hvala na odgovoru. 🙂
WM_TEXT je moj interni message.
Malo sam gledao sad po netu, ako sam ja dobro razumeo u lParam moze da se smesti pokazivac na string buffer?
 
Poslednja izmena:
Jesu u istom procesu/aplikaciji ta dva objekta?
Onda je otprilike dovoljno to sto si rekao:
- u OnMessage vratis (LRESULT)string
- u pozivu za SendMessage uradis (string)SendMessage()
namerno pisem "string", jer mozes da koristis efektivno bilo sta - LRESULT je u stvari int vrednost samo, i moze da stavi int, pointer, class (object) pointer, string pointer, Delphi string pointer itd. Samo treba da se uradi tacan typecasting i da se vodi racuna da ako se vraca pointer ili objekat/klasa/string da se memorija za isti ne oslobodi dok se koristi u SendMessage slanju.

Ako objekti nisu u istom procesu - mnogo je komplikovanije!
 
Objekti su u istoj aplikaciji.
Znaci , LRESULT je int, a mogu da uradim typecast LRESULT i da ga koristim kao string pointer i onda u njega smestim pokazivac na tekst koji hocu da uzmem iz drugog objekta?
Nece se osloboditi memorija dok se koristi SendMessage.
Imam jos jedno pitanje, kako mogu da iskoristim wParam i lParam? Da li mogu i za njih da uradim neki typecast pa da ih posaljem, jer bi mi koristili na mestu primanja poruke, kao dodatne informacije?
 
Poslednja izmena:
wParam i lParam se bas i koriste kao dodatne informacije u DefWindowProc (kod tebe OnMessage). Naravno, pod pretpostavkom da tvoj OnMessage je u stvari bas handler koji prima poruku za taj objekat kome se salje SendMessage.
Da bi to bio slucaj, taj objekat koji prima poruku MORA da ima Window handle, jer samo takvim objektima moze da se salje poruka. (window ne mora biti vizuelni objekat, samo mora imati neki "window" handle, a svaka UI kontrola to recimo ima, a imaju ga i mnoge druge)

Sta je u stvari ono sto zelis da ostvaris? 😀
 
alfaunits , problem je bio u tome sto moji objekti nisu imali Window handle, izvini zbog dezinformacija, ja to tek sad sve proucavam , pa nisam znao tacno da objasnim situaciju.
Praksa mi se zavrsila, tako da nema vise potrebe da resavamo problem. hvala ti puno na odgovorima! pozdrav
 
Nazad
Vrh Dno