说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何改变字体对话框的位置

编辑:说三道四文库 发布时间:2018-05-23 11:21
HTML文档下载 WORD文档下载 PDF文档下载
用API函数ChooseFont(LPCHOOSEFONT lpcf)弹出字体选择对话框时,如何改变对话框的显示位置呢?
你要提供一个对话框挂勾过程,在响应WM_INITDIALOG时使用MoveWindow改变窗体位置
显示字体对话框:

CHOOSEFONT cf;
LOGFONT lf={0};
lf.lfWeight=700;
lf.lfHeight=60;
_stprintf(lf.lfFaceName,_T("宋体"));
lf.lfWidth=40;
lf.lfItalic=1;
lf.lfStrikeOut=1;
lf.lfUnderline=1;
lf.lfCharSet=GB2312_CHARSET;
lf.lfClipPrecision=CLIP_DEFAULT_PRECIS;
lf.lfOutPrecision=OUT_DEFAULT_PRECIS;
lf.lfPitchAndFamily=DEFAULT_PITCH;
lf.lfEscapement=200;

       
ZeroMemory(&cf,sizeof(CHOOSEFONT));
cf.lStructSize=sizeof(CHOOSEFONT);
cf.hDC=GetDC(hWnd);
cf.hwndOwner=hWnd;
cf.Flags=CF_BOTH|CF_SHOWHELP|CF_EFFECTS|CF_APPLY|CF_INITTOLOGFONTSTRUCT
|CF_ENABLEHOOK|CF_USESTYLE|CF_LIMITSIZE|CF_WYSIWYG|CF_SCALABLEONLY;
cf.rgbColors=RGB(255,0,0);
cf.lpLogFont=&lf;
cf.lCustData=12;
cf.nSizeMax=50;
cf.nSizeMin=20;
cf.lpfnHook=(LPCFHOOKPROC)FontDlgProc;
cf.lpszStyle=_T("Italic");
if(ChooseFont(&cf))  //用户点击了确定按钮
{
         //获取用户选择字体

}
else     //用户点击取消按钮或错误发生
{
DWORD dwError=CommDlgExtendedError();
if(dwError)
MessageBox(NULL,_T("创建字体对话框失败"),_T("消息"),MB_OK);
}

挂勾过程:

INT_PTR CALLBACK FontDlgProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{

RECT rect;
switch(message)
{
case WM_INITDIALOG:
::GetClientRect(hWnd,&rect);
::MoveWindow(hWnd,0,0,rect.right-rect.left,rect.bottom-rect.top,TRUE);
return TRUE;

}
return FALSE;
}
mark
非常感谢!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘