Salve, sto creando un'applicazione in Borland C++ (BDS 2006) simile a WordPad senza l'uso delle VCL, e quindi soltanto con le WinAPI.
Per il campo di testo ho usato la classe RICHEDIT_CLASS, definita in richedit.h delle WinAPI e ho importato la libreria "riched20.dll".

La funzione per il cambio del colore del font da dialogo (ChooseColor) del testo selezionato funziona:

codice:
BOOL cambiaFontColor(HWND hwnd)
{
	CHOOSECOLOR cc;
	CHARFORMAT cf;
	DWORD colori[16];

	memset(&cc,0,sizeof(CHOOSECOLOR));
	cc.lStructSize = sizeof(CHOOSECOLOR);
	cc.hwndOwner = hwnd;
	cc.rgbResult = coloreTesto;
	cc.lpCustColors = colori;
	cc.Flags =CC_RGBINIT;

	if(!ChooseColor( &cc )) return( FALSE );

	coloreTesto = cc.rgbResult;

	memset(&cf,0,sizeof(CHARFORMAT));
	cf.cbSize = sizeof(CHARFORMAT);
	cf.dwMask = CFM_COLOR;
	cf.crTextColor = coloreTesto;

	SendMessage(hwnd, EM_SETCHARFORMAT,SCF_SELECTION,(LPARAM)&cf);

	return(true);
}
Va anche la funzione per il cambio di un font predefinito:
codice:
void cambiaFontTextStd(HWND hwnd)
{
	// QUESTA FUNZIONA BENE
	CHARFORMAT cf;
	memset(&cf,0,sizeof(CHARFORMAT));

	cf.cbSize = sizeof(CHARFORMAT);             //  Initialize RichEdit
	cf.dwMask = CFM_COLOR | CFM_FACE | CFM_SIZE;  //  control structure
	cf.crTextColor = 0x0000FF22;
	cf.yHeight = 32;
	strcpy( cf.szFaceName, "Courier" );

	SendMessage(hwnd,EM_SETCHARFORMAT,SCF_SELECTION, (LPARAM)&cf );
}
Mentre la funzione per il cambio di font da dialogo (ChooseFont) non va...

codice:
BOOL cambiaFontText(HWND hwnd)
{
	//CHARFORMAT cf;
	CHOOSEFONT cf;
	LOGFONT lf;

	memset(&cf,0,sizeof(CHARFORMAT));
	memset(&lf,0,sizeof(LOGFONT));

	GetObject(hfFont, sizeof(LOGFONT), &lf);

	cf.lStructSize = sizeof(CHOOSEFONT);
	cf.Flags = CF_EFFECTS | CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS;
	cf.hwndOwner = hwnd;
	cf.lpLogFont = &lf;
	cf.rgbColors = coloreTesto;

	if(!ChooseFont(&cf)) return false;

//	HFONT hf = CreateFontIndirect(&lf);
//	if(hf)
//		{
//		hfFont = hf;
//		}
//	else
//		{
//		MessageBox(hwnd, "Font creation failed!", "Error", MB_OK | MB_ICONEXCLAMATION);
//		}

	SendMessage(hwnd,EM_SETCHARFORMAT,SCF_SELECTION, (LPARAM)&cf );

	return true;
}
Mi sapreste aiutare?
Grazie!