Pot trimite un string prin WM_CHAR ?

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
Post Reply
mesajflaviu
Membru++
Membru++
Posts: 689
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Pot trimite un string prin WM_CHAR ?

Post by mesajflaviu » 27 Dec 2010, 15:18

Am trimis prin WM_CHAR , la un view bazat pe CEditView , unul sau mai multe caractere :

Code: Select all

PostMessage(WM_CHAR,(WPARAM)'A',0);
PostMessage(WM_CHAR,(WPARAM)'XYZ',0);
PostMessage(WM_CHAR,(WPARAM)VK_RETURN,0);
as putea trimite un CString prin WM_CHAR ? Nu stiu daca pot face corespondenta intre un caracter din CString si codul (caracterului) pe tastatura ... sau exista alta solutie ?



neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: Pot trimite un string prin WM_CHAR ?

Post by neagu_laurentiu » 27 Dec 2010, 15:36

Tu de fapt trimiti un numar in WPARAM sau LPARAM. Ca acel numar e o adresa de memorie, e treaba ta. Si tot treaba ta e la receptie sa te asiguri ca va fi valida adresa.

mesajflaviu
Membru++
Membru++
Posts: 689
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Re: Pot trimite un string prin WM_CHAR ?

Post by mesajflaviu » 27 Dec 2010, 15:45

neagu_laurentiu wrote:Tu de fapt trimiti un numar in WPARAM sau LPARAM. Ca acel numar e o adresa de memorie, e treaba ta. Si tot treaba ta e la receptie sa te asiguri ca va fi valida adresa.
Sa inteleg ca nu pot sa trimit un string prin WM_CHAR fara sa modific CMyView::OnChar(...) ?

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: Pot trimite un string prin WM_CHAR ?

Post by neagu_laurentiu » 27 Dec 2010, 15:55

Ba poti trimite orice. Intelege mecanismul care l-am descris mai sus.

Viorel
Microsoft MVP
Microsoft MVP
Posts: 291
Joined: 13 Jul 2007, 12:26

Re: Pot trimite un string prin WM_CHAR ?

Post by Viorel » 27 Dec 2010, 18:30

Încearcă şi mesajul EM_REPLACESEL sau funcţia GetEditCtrl()->ReplaceSel(....).

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Pot trimite un string prin WM_CHAR ?

Post by Ovidiu Cucu » 27 Dec 2010, 22:12

WM_CHAR este un mesaj proiectat de la mama lui ca si raspuns la o actiune a utilizatorului.
Asa ca, din start, nu este deloc o idee inginereasca sa trimiti WM_CHAR din aplicatie, lasand deoparte alte discutii despre giumbuslucuri cu parametri.
Citeste cu atentie WM_KEYDOWN, TranslateMessage si WM_CHAR in MSDN.

Probabil, asa cum a intuit si Viorel, vrei sa adaugi un string la un edit.
Daca da, vezi acest FAQ: Cum adaug text la un edit control?
Daca nu, te rog detaliaza ce anume vrei sa obtii.

User avatar
Andreas
Membru
Membru
Posts: 117
Joined: 09 Nov 2008, 12:13
Judet: Timiş
Location: Timisoara

Re: Pot trimite un string prin WM_CHAR ?

Post by Andreas » 29 Dec 2010, 00:35

de exemplu citeste aici
iar folosirea lui CString::GetBuffer este evidenta, pentru a parcurge char cu char stringul...practic mesajul WM_CHAR va contine codul ASCII al char-ului transmis...
sper sa nu gresesc... ;)

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: Pot trimite un string prin WM_CHAR ?

Post by cristianamarie » 29 Dec 2010, 12:21

WM_CHAR e mesaj Windows pentru chars. Daca vrei sa trimiti de la ceva la ceva (HWND), inventeaza un mesaj, fie WM_USER + 1, sau cu RegisterWindowsMessage (practic iti creezi "protocolul" tau) si trimiti cu SendMessage.
Nuclear launch detected

mesajflaviu
Membru++
Membru++
Posts: 689
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Re: Pot trimite un string prin WM_CHAR ?

Post by mesajflaviu » 30 Dec 2010, 13:21

Andreas wrote:de exemplu citeste aici
iar folosirea lui CString::GetBuffer este evidenta, pentru a parcurge char cu char stringul...practic mesajul WM_CHAR va contine codul ASCII al char-ului transmis...
sper sa nu gresesc... ;)
Interesanta ideea , am incercat-o si functioneaza frumos , desi sant convins ca e mai bine sa folosesc EM_REPLACESEL .

Post Reply