Archivlink: javarea.de Forum > Talk Talk > [C++] WinAPI RichEdit
Vollständigen Link anzeigen: javarea.de Forum > Talk Talk > [C++] WinAPI RichEdit

Pages: [1]

geschrieben von Danny am 31.10.2003 - 20:45
Hi ich hab mal ne WinAPI frage

bisher hab ich nur edit boxen benutzt doch da ich auch einzelne wörter einfärber möchte brauch ich jetzt eine richeditbox... doch ich bekomme es nich richtig hin eine zu erstellen...

wäre nett wenn mir einer eine schritt für schritt erklärung geben könnte



Danny

geschrieben von Klaush am 01.11.2003 - 12:09
1. Frage:
- welche Entwicklungsumgebung benutzt du

2. Frage:
- hast du dir eine eigene Klasse geschrieben oder benutzt du die Objekte

geschrieben von Danny am 01.11.2003 - 12:15
hi ich benutze MS visual C++ 6.0

mein editfled hab ich bisher immer so erstellt



HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
// weiterer Code

case WM_CREATE:

hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,
						 "Edit",
						 "",
						 WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE |ES_AUTOVSCROLL|ES_NOHIDESEL,
						 0,
						 0,
						 0,
						 0,
						 hwnd,
						 (HMENU) EDITID,
						 ((LPCREATESTRUCT) lParam) -> hInstance,
						 NULL);

// weiterer Code


nur anstatt dem Edit Feld brauch ich nun das richedit feld... in der MSDN haben die geschrieben das ich die Richedit20.dll einlesen soll doch wie mach ich das ?



thx 4 help ;)

geschrieben von Martin am 01.11.2003 - 15:13
Ave,

ich kann mich zwar nicht entsinnen die richedit20.dll jemal benutzt zu haben aber zu dieser dll gibt es mindestens auch eine *.h include Datei und eine *.lib link libarie. Ansonsten bring dir die *.dll allein nicht. Die fehlen nähmlich dann die Auflösung der externen Funktions-ID's.

Aber um einzelne Wörter einzufärben brauch man nicht unbedingt ein RichText Feld ich glaub mich zu entsinnen das man normalen Text auch über die gdi einfärben kann.

Aber es hängt natürlich davon ab, was du machen willst.

mfg martin

geschrieben von Danny am 01.11.2003 - 15:59
hi es ist für ein syntaxhighliting... im normalen editfeld kann man zwar färben aber nur den ganzen text das gleiche auch bei fonts...


naja wenn jemand noch nen codebeispiel hat um ne richedit box einzufügen wäre es nett...

geschrieben von evilinvader am 11.01.2005 - 23:59
Hallo!
mein vorläufiger Versuch sieht so aus:
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
#include <richedit.h>
...
void CreateRichText(HWND hwndParent)
{
	RECT rcClient;
	GetClientRect(hwndParent, &rcClient);
	
	//-- RichEdit dll laden
	LoadLibrary("riched32.dll");

	//-- Steuerelement erzeugen
	hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,
		"RichEdit",
		"",
		WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE |ES_AUTOVSCROLL|ES_NOHIDESEL|ES_READONLY,
		0,
		0,
		rcClient.right,
		rcClient.bottom,
		hwndParent,
		(HMENU) IDC_EDIT,
		hInst,
		NULL);

	//-- formatieren Text einfügen
	CHARFORMAT cf = {0};
	cf.cbSize = sizeof(CHARFORMAT);
	cf.dwMask = CFM_COLOR | CFM_FACE | CFM_SIZE | CFM_BOLD;
	cf.crTextColor = RGB(255,0,0);
	cf.dwEffects = 0L;
	cf.yHeight = 180;
	strcpy(cf.szFaceName, "Arial");
	SendMessage(hEdit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf);
	SendMessage(hEdit, EM_REPLACESEL, (WPARAM)0, (LPARAM)"Hallo! Dies ist ein Richtext-Steuerelement");

Vielleicht geht das Einfügen des Texts auch einfacher. Der Text wird immer an die Stelle des Cursors eingefügt und eine evtl. vom Benutzer vorgenommene Markierung von Text geht verloren.
Kennt jemand noch eine besser Methode Text in ein RichEdit einzufügen?

geschrieben von Danny am 12.01.2005 - 14:17
hihi danke
nur das der Thread 1 1/2 Jahre alt ist .. vieleicht werde ich es mal wieder versuchen aber derzeit habe ich nicht die richtige Lust C++ en


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.