您的位置:首页 > 其它

WinAPI:ChooseFont 和 CFHookProc

2015-11-02 11:35 330 查看
一、ChooseFont

函数功能:该函数创建一个使用户选择逻辑字体属性的对话框,这些属性包括字体名称、字体风格(如粗体、斜体或正常体)、字号、效果(如强调线,下划线或字体颜色)和手写体(或字符集)。

函数原型:BOOL ChooseFont(LPCHOOSEFONT Ipcf);

参数:

Ipcf:指向一个含有初始化对话框信息的CHOOSEFONT结构。当返回ChooseFont函数时,此结构含有用户对字体选择的信息。

返回值:如果用户点击对话框的OK按钮,返回值为非零值,CHOOSEFONT结构中的成员表明用户的选择。如果用户取消或关闭Font对话框或出现错误信息,返回值为零。

二、CFHookProc

函数功能:该挂钩函数是一个应用程序定义的或库定义的回调函数,此回调函数与ChooseFont函数一起使用。挂钩函数接收用于Font公共对话框的缺省对话框函数的消息和通告。

LPCFHOOKPROC类型定义了一个指向这种回调函数的指针。CFHOOKProc是一个由应用程序定义的函数名的位置占有者。

函数原型:UINT CALLBACK CFHookProc(HWND hdlg,UINT uiMsg,WPARAM wParam,LPARAM IParam);

参数:

hdlg:指向消息所指的Font对话框窗口的句柄。

uiMsg:指定存放的消息。

wParam:指定有关消息的其他信息。精确的意义根据uiMsg参数的值来决定。

IParam:指定有关消息的其他信息。精确的意义根据uiMSg参数的值来决定。如果uiMsg参数表明WM_INITDIALOG消息,则IParam是一个指向CHOOSEFONT结构的指针,该结构含有创建公共对话框时指定的值。

返回值:如果挂钩函数返回零值,缺省对话框函数处理消息。如果挂钩函数返回一个非零值,缺省对话框函数忽略消息。

三、样例:

UINT_PTR CALLBACK  ChooseFontHook (HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam)
{
switch(uiMessage)
{
case WM_INITDIALOG:
{
int a = 3;
}

break;
default:
break;
}
return 0;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_COMMAND:
wmId    = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case ID_TEST:
{
CHOOSEFONT cf = {sizeof(CHOOSEFONT)};
cf.Flags =CF_EFFECTS|CF_INITTOLOGFONTSTRUCT |CF_ENABLEHOOK;
//cf.lpLogFont = &m_LogFont;   字体样式
cf.rgbColors  = RGB(0xFF,0,0);
cf.hwndOwner  = hWnd;
cf.lpfnHook = ChooseFontHook;
if (ChooseFont(&cf) == 0) {
MessageBox(hWnd, TEXT("关闭或者取消选择窗口"),TEXT("提示"),MB_OK);
}
}

break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: