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... :)