RichEdit2 Contol => Change Notification ?
-
Kann das evt. an daran liegen, dass ich die Abfrage in der DlgProc ausführe ?
Oder muss ich die Msg in der RichEditProc abfangen ?
-
he parent window of the edit control receives this notification message through a WM_COMMAND message.
-
Du bist lustig. Lesen kann ich auch. Das funtzt einfach nicht !!
.. case WM_COMMAND: { if(HIWORD (wp) == EN_CHANGE ) { MessageBox(0, "1", "", MB_OK ); return 0; }break; if( (wp) == EN_CHANGE ) { MessageBox(0, "2", "", MB_OK ); return 0; }break; ...Muss ich evt. besondere Eigenschaften setzten ?
-
Was für eine Rich Edit Verision verwendest du denn?
-
Ich verwender RichEdit2 (VC++.Net)
-
Ich sehe es jetzt erst - du verwendest EN_CHANGE und nicht EN_UPDATE. Hab es bei mir gerade getestet und EN_UPDATE bekomme ich

Zu EN_CHANGE:
Supported in Microsoft Rich Edit 1.0 and later. To receive EN_CHANGE notifications, specify ENM_CHANGE in the mask sent with the EM_SETEVENTMASK message.
[...]
The EN_CHANGE notification is not sent when the ES_MULTILINE style is used and the text is sent through WM_SETTEXT.
-
flenders schrieb:
Ich sehe es jetzt erst - du verwendest EN_CHANGE und nicht EN_UPDATE. Hab es bei mir gerade getestet und EN_UPDATE bekomme ich

Zu EN_CHANGE:
Supported in Microsoft Rich Edit 1.0 and later. To receive EN_CHANGE notifications, specify ENM_CHANGE in the mask sent with the EM_SETEVENTMASK message.
[...]
The EN_CHANGE notification is not sent when the ES_MULTILINE style is used and the text is sent through WM_SETTEXT.Ist bei mir nicht der Fall gewesen, und hatte davor auch beides ausprobiert!

Naja, sonst funktioniert das ganze immernoch nicht. Dürfte eig. nicht sein

-
Hi,
funtzt doch wunderbar..
hatte einen code-fehler.
Sry & THx

Cu
-
Pass auf, dass du bei EM_SETEVENTMASK ENM_CHANGE angibst sonst funzt das nicht. I hab einmal 3 Tage gebraucht um den Fehler zu finden!
@flenders EN_CHANGE funzt bei mir, bei Rich Edit 1.0 und Rich Edit 2.0
-
OK Danke!!
Naja komischerwise kann ich auch nicht den Text auslesen ...
Die Länge des Textes kann ich aber auslesen !![cpp]
char buf[150];
GetWindowText( GetDlgItem( hdlg,IDC_RICH_ENG), buf, 140 );
MessageBox(0, buf, "", MB_OK );
{/cpp]
-
Hm,...
Also wenn ich mit SETTEXT den text einfüge kann ich den text nicht mit GETTEXT auslesen, nur wenn ich ihn dann komplett neu (per KEYBOARD) eingeben wird er mir ausgegeben...
woran liegt das ?
-
Hat Sich wieder alles erledigt

-
Hi,
muss euch doch nochmal stören. Hab hier noch ein Problem mit dem Style.
Wenn ich jetzt die Funktion "SetStyledText" zb. 3 mal hintereinander verwende, wird jeder folgende Text im Style vom ersten hinzugefügt. D.h. wenn der erste Text BOLD,UNDERLINE war so ist jeder Text, welchen ich mit dieser FUnktion adde ebenfalls mit den gleichen style-einsteöllungen zu sehen.
Ich Setz jedoch IMMER das alte Format!!
Hab in der MSN nachgelesen und müsste stimmen ...
Hat da evt. jemand eine Idee warum das so ist ?
KEINE ANGST VOR DEM CODE: ISt SEHR EINFACH !!!

CRichEdit::CRichEdit( HWND hWnd, COLORREF color, DWORD dwId ) { m_hWnd = hWnd; m_TextColor = color; m_dwId = dwId; memset( &m_cfBase, 0, sizeof(CHARFORMAT) ); m_cfBase.cbSize = sizeof(CHARFORMAT); m_cfBase.dwMask = CFM_COLOR; m_cfBase.crTextColor = m_TextColor; // get edit handle HWND hREdit = NULL; hREdit = GetDlgItem( m_hWnd, m_dwId ); if( hREdit != NULL ) { SendMessage(hREdit, EM_SETCHARFORMAT, SCF_WORD | SCF_SELECTION, (LPARAM)&m_cfBase); } } ..... .. //------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------ int CRichEdit::SetStyledText( char *text, DWORD style, COLORREF color, int size, char *szFace ) { CHARFORMAT cf; SETTEXTEX ste; HWND hREdit = NULL; // get edit handle hREdit = GetDlgItem( m_hWnd, m_dwId ); if( hREdit != NULL ) { int txt_lngth = (int)GetCharCount(); // zero mem memset( &cf, 0, sizeof(CHARFORMAT) ); cf.cbSize = sizeof(CHARFORMAT); ste.flags = ST_SELECTION; ste.codepage = 0; //--------------------- // underlined ? //--------------------- if( style & RESTYLE_UNDERLINE ) { cf.dwMask |= CFM_UNDERLINE; cf.dwEffects |= CFE_UNDERLINE; } //--------------------- // italic ? //--------------------- if( style & RESTYLE_ITALIC ) { cf.dwMask |= CFM_ITALIC; cf.dwEffects |= CFE_ITALIC; } //--------------------- // strikeout ? //--------------------- if( style & RESTYLE_STRIKEOUT ) { cf.dwMask |= CFM_STRIKEOUT; cf.dwEffects |= CFE_STRIKEOUT; } //--------------------- // bold ? //--------------------- if( style & RESTYLE_BOLD ) { cf.dwMask |= CFM_BOLD; cf.dwEffects |= CFE_BOLD; } //--------------------- // size ? //--------------------- if( style & RESTYLE_SIZE ) { cf.dwMask |= CFM_SIZE; cf.yHeight = size; } //--------------------- // color ? //--------------------- if( style & RESTYLE_COLOR ) { cf.dwMask |= CFM_COLOR; cf.crTextColor = color; } //--------------------- // is protected text ? //--------------------- if( style & RESTYLE_PROTECTED ) { cf.dwMask |= CFM_PROTECTED; cf.dwEffects |= CFE_PROTECTED; SendMessage(hREdit, EM_SETEVENTMASK, 0, ENM_PROTECTED ); } //--------------------- // face name ? //--------------------- if( style & RESTYLE_FACENAME ) { strcpy( cf.szFaceName, szFace ); } // set new charformat SendMessage(hREdit, EM_SETCHARFORMAT, SCF_WORD | SCF_SELECTION, (LPARAM)&cf); SendMessage(hREdit, EM_SETTEXTEX, (WPARAM)&ste, (LPARAM)text); // set old char format SendMessage(hREdit, EM_SETCHARFORMAT , SCF_WORD | SCF_SELECTION, (LPARAM)&m_cfBase); return 1; } return 0; }
-
Hi all,
hatte das Problem auch. Hab es leider nicht hinbekommen.
Würde mich auch interessieren!

Ciao