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结构的指针,该结构含有创建公共对话框时指定的值。
返回值:如果挂钩函数返回零值,缺省对话框函数处理消息。如果挂钩函数返回一个非零值,缺省对话框函数忽略消息。
三、样例:
函数功能:该函数创建一个使用户选择逻辑字体属性的对话框,这些属性包括字体名称、字体风格(如粗体、斜体或正常体)、字号、效果(如强调线,下划线或字体颜色)和手写体(或字符集)。
函数原型: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; }
相关文章推荐
- 在数组中放入十个不同的随机数
- Loadrunner使用键盘快捷键
- MySQL 5.6 for Windows 解压缩版配置安装
- Activity的四种启动加载模式(launchMode)
- [ahk]复制当前文件,并以当前文件夹名称命名
- 整理Android各种框架文档
- 3.2 ACM输入输出--多组测试用例--C、C++
- JavaScript中的类和原型的理解
- windows的exe、lib文件跟c运行时库怎么关联的
- 移动端多行文本溢出省略
- 非常实用的12个jquery代码片段
- Facebook分享报错:应用程序配置禁止了给定网址
- java网络编程——Socket和ServerSocket,套接字编程——简单聊天室
- 去掉"为了有利于保护安全性,Internet Explorer 已限制此网页运行可以访问计算机的脚本或ActiveX控件"的提示
- opencv2中IplImage和Mat的相互转化
- Javascript定义类(class)的三种方法
- ajaxfileupload 始终不执行success 只执行error方法;SyntaxError: expected expression, got '<
- JS 页面加载触发事件 document.ready和onload的区别(转)
- jQuery+CSS3折叠卡片式下拉列表框实现效果
- java中AWT和SWing的区别与联系