Setting Font : Is this a right way ...
Hello,
Here I got a dialog based app... it has a Edit control on it....what I'm
trying to do is let user change it's font... for this I'm doing...
***********************
//globals...
HWND hwndEdit = NULL;
HFONT newFont = NULL;
HBRUSH newBrush = NULL;
COLORREF newColor = NULL;
LOGFONT lf;
void ShowFontDlg(HWND owner)
{
CHOOSEFONT cf;
ZeroMemory(&cf, sizeof(cf));
cf.lStructSize = sizeof (cf);
cf.hwndOwner = owner;
cf.lpLogFont = &lf;
cf.rgbColors = newColor;
cf.Flags = CF_SCREENFONTS|CF_EFFECTS|CF_INITTOLOGFONTSTRUCT;
if(ChooseFont(&cf) == TRUE)
{
newColor = cf.rgbColors;
newFont = CreateFontIndirect(&lf);
SendMessage(hwndEdit, WM_SETFONT, (WPARAM)newFont, MAKELPARAM(TRUE, 0));
}
}
void InitLogFont()
{
//HFONT oldFont;
newFont = (HFONT)SendMessage(hwndEdit, WM_GETFONT, 0, 0);
GetObject(newFont, sizeof(lf), &lf);
//DeleteObject(oldFont);
}
BOOL CALLBACK DialogProc(HWND hwnd, UINT msg,
WPARAM wparam, LPARAM lparam)
{
switch(msg)
{
case WM_INITDIALOG:
SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)mIcon);
SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)mIcon);
//save the edit control handle..
hwndEdit = GetDlgItem(hwnd, IDC_EDIT1);
//get the default font..
InitLogFont();
return TRUE;
break;
case WM_CTLCOLOREDIT:
if(newColor != NULL)
{
newBrush = (HBRUSH)DefWindowProc(hwnd, msg, wparam, lparam);
SetTextColor((HDC)wparam, newColor);
return (BOOL)newBrush;
}
return FALSE;
break;
.....
.....etc. and here is what main() looks like :-
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
mIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON2));
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
DeleteObject(newFont);
DeleteObject(newBrush);
return 0;
}
***********************
pre-thanks for any input... :)