Remember (do not reset) font size and style parameters in the initial

dialog and when another font is selected.
This commit is contained in:
Rein Klazes 2003-11-28 23:40:12 +00:00 committed by Alexandre Julliard
parent c9197aad4f
commit e94dad187a
1 changed files with 60 additions and 19 deletions

View File

@ -546,6 +546,47 @@ INT AddFontStyle(const LOGFONTA *lplf, UINT nFontType,
return 1 ; return 1 ;
} }
static INT CFn_FitFontSize( HWND hDlg, int points)
{
int i,n;
int ret = 0;
/* look for fitting font size in combobox3 */
n=SendDlgItemMessageA(hDlg, cmb3, CB_GETCOUNT, 0, 0);
for (i=0;i<n;i++)
{
if (points == (int)SendDlgItemMessageA
(hDlg,cmb3, CB_GETITEMDATA,i,0))
{
SendDlgItemMessageA(hDlg,cmb3,CB_SETCURSEL,i,0);
SendMessageA(hDlg, WM_COMMAND,
MAKEWPARAM(cmb3, CBN_SELCHANGE),
(LPARAM)GetDlgItem(hDlg,cmb3));
ret = 1;
break;
}
}
return ret;
}
static INT CFn_FitFontStyle( HWND hDlg, LONG packedstyle )
{
LONG id;
int i, ret = 0;
/* look for fitting font style in combobox2 */
for (i=0;i<TEXT_EXTRAS;i++)
{
id =SendDlgItemMessageA(hDlg, cmb2, CB_GETITEMDATA, i, 0);
if (packedstyle == id)
{
SendDlgItemMessageA(hDlg, cmb2, CB_SETCURSEL, i, 0);
SendMessageA(hDlg, WM_COMMAND, MAKEWPARAM(cmb2, CBN_SELCHANGE),
(LPARAM)GetDlgItem(hDlg,cmb2));
ret = 1;
break;
}
}
return ret;
}
/*********************************************************************** /***********************************************************************
* FontStyleEnumProc32 [internal] * FontStyleEnumProc32 [internal]
@ -569,7 +610,7 @@ LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam,
{ {
HDC hdc; HDC hdc;
int i,j,init=0; int i,j,init=0;
long l; long pstyle;
LPLOGFONTA lpxx; LPLOGFONTA lpxx;
HCURSOR hcursor=SetCursor(LoadCursorA(0,(LPSTR)IDC_WAIT)); HCURSOR hcursor=SetCursor(LoadCursorA(0,(LPSTR)IDC_WAIT));
@ -649,25 +690,16 @@ LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam,
j=SendDlgItemMessageA(hDlg,cmb1,CB_FINDSTRING,-1,(LONG)lpxx->lfFaceName); j=SendDlgItemMessageA(hDlg,cmb1,CB_FINDSTRING,-1,(LONG)lpxx->lfFaceName);
if (j!=CB_ERR) if (j!=CB_ERR)
{ {
INT height = (lpcf->iPointSize + 5) / 10;
pstyle=MAKELONG(lpxx->lfWeight > FW_MEDIUM ? FW_BOLD:FW_NORMAL,lpxx->lfItalic !=0);
SendDlgItemMessageA(hDlg, cmb1, CB_SETCURSEL, j, 0); SendDlgItemMessageA(hDlg, cmb1, CB_SETCURSEL, j, 0);
SendMessageA(hDlg, WM_COMMAND, MAKEWPARAM(cmb1, CBN_SELCHANGE), SendMessageA(hDlg, WM_COMMAND, MAKEWPARAM(cmb1, CBN_SELCHANGE),
(LPARAM)GetDlgItem(hDlg,cmb1)); (LPARAM)GetDlgItem(hDlg,cmb1));
init=1; init=1;
/* look for fitting font style in combobox2 */ /* look for fitting font style in combobox2 */
l=MAKELONG(lpxx->lfWeight > FW_MEDIUM ? FW_BOLD:FW_NORMAL,lpxx->lfItalic !=0); CFn_FitFontStyle(hDlg, pstyle);
for (i=0;i<TEXT_EXTRAS;i++)
{
if (l==SendDlgItemMessageA(hDlg, cmb2, CB_GETITEMDATA, i, 0))
SendDlgItemMessageA(hDlg, cmb2, CB_SETCURSEL, i, 0);
}
/* look for fitting font size in combobox3 */ /* look for fitting font size in combobox3 */
j=SendDlgItemMessageA(hDlg, cmb3, CB_GETCOUNT, 0, 0); CFn_FitFontSize(hDlg, height);
for (i=0;i<j;i++)
{
if (lpxx->lfHeight==(int)SendDlgItemMessageA(hDlg,cmb3, CB_GETITEMDATA,i,0))
SendDlgItemMessageA(hDlg,cmb3,CB_SETCURSEL,i,0);
}
} }
} }
if (!init) if (!init)
@ -843,9 +875,18 @@ LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam,
hdc=((lpcf->Flags & CF_PRINTERFONTS) && lpcf->hDC) ? lpcf->hDC : GetDC(hDlg); hdc=((lpcf->Flags & CF_PRINTERFONTS) && lpcf->hDC) ? lpcf->hDC : GetDC(hDlg);
if (hdc) if (hdc)
{ {
SendDlgItemMessageA(hDlg, cmb2, CB_RESETCONTENT16, 0, 0); INT pointsize; /* save current pointsize */
SendDlgItemMessageA(hDlg, cmb3, CB_RESETCONTENT16, 0, 0); LONG pstyle; /* save current style */
i=SendDlgItemMessageA(hDlg, cmb1, CB_GETCURSEL16, 0, 0); int idx2, idx3;
idx3 = SendDlgItemMessageA(hDlg, cmb3, CB_GETCURSEL, 0, 0);
pointsize = (int)SendDlgItemMessageA( hDlg, cmb3, CB_GETITEMDATA,
idx3, 0);
idx2 = SendDlgItemMessageA(hDlg, cmb2, CB_GETCURSEL, 0, 0);
pstyle = SendDlgItemMessageA(hDlg, cmb2, CB_GETITEMDATA, idx2, 0);
SendDlgItemMessageA(hDlg, cmb2, CB_RESETCONTENT, 0, 0);
SendDlgItemMessageA(hDlg, cmb3, CB_RESETCONTENT, 0, 0);
i=SendDlgItemMessageA(hDlg, cmb1, CB_GETCURSEL, 0, 0);
if (i!=CB_ERR) if (i!=CB_ERR)
{ {
HCURSOR hcursor=SetCursor(LoadCursorA(0,(LPSTR)IDC_WAIT)); HCURSOR hcursor=SetCursor(LoadCursorA(0,(LPSTR)IDC_WAIT));
@ -858,8 +899,8 @@ LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam,
s.hWnd2=GetDlgItem(hDlg, cmb3); s.hWnd2=GetDlgItem(hDlg, cmb3);
s.lpcf32a=lpcf; s.lpcf32a=lpcf;
EnumFontFamiliesA(hdc, str, FontStyleEnumProc, (LPARAM)&s); EnumFontFamiliesA(hdc, str, FontStyleEnumProc, (LPARAM)&s);
SendDlgItemMessageA(hDlg,cmb2, CB_SETCURSEL, 0, 0); CFn_FitFontStyle(hDlg, pstyle);
SendDlgItemMessageA(hDlg,cmb3, CB_SETCURSEL, 0, 0); CFn_FitFontSize(hDlg, pointsize);
SetCursor(hcursor); SetCursor(hcursor);
} }
if (!((lpcf->Flags & CF_PRINTERFONTS) && lpcf->hDC)) if (!((lpcf->Flags & CF_PRINTERFONTS) && lpcf->hDC))