找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 477|回复: 1
收起左侧

sfLib类库的使用

[复制链接]
ID:155811 发表于 2025-10-19 14:13 | 显示全部楼层 |阅读模式
   
   sfLib类库指南
   
    你是否厌烦了mfc 的过度封装,想修改增加功能很繁琐。可是直接用winapi   编程,只能使用c语言,而且要熟悉winapi 的底层函数,消息封装等等。selfLib 类库恰好解决了你的烦恼,sfLib 类库直接简单的用c++封装了winapi 。
   用sfCracker.h文件提供windows消息的参数 转换成c++数据的类型。
在sfWnd.h文件中,CWnd 类把全局的windows消息处理函数移到 你派生的 CWnd子类。
在窗口消息处理函数 sfWndMsgProc 中把消息处理 转移到CWnd 类的 OnWndMsg函数,你需要在OnWndMsg函数中由自己决定,把哪些消息传送给你的CWnd子类。传送消息时,可以根据 sfCracker.h 中的宏定义,转换函数参数。
  
sfWndMsgProc 窗口消息处理函数的工作过程如下:
在函数中,定义了一个映射表 CSimpleMap,函数正在处理的窗口句柄与CWnd 类指针的映射表。 还定义了 static CWnd* s_pCWndRcv 保存当前处理的 CWnd 类。

    使用CWnd 类的 Create 函数时,先把CWnd 的this 指针传给 sfWndMsgProc 函数中的静态变量s_pCWndRcv, 然后在接受到第一个窗口句柄(hWnd)不是null的消息时,以hWnd 为关键字 加入s_HWNDMap 映射表,在接收到后续的窗口消息都用该消息的窗口句柄(hWnd),在s_HWNDMap 映射表中查询,得到 CWnd 类指针 pWnd,再调用 pWnd->OnWndMsg(),完成在 CWnd 子类中处理窗口消息。

   使用sfLib 类库的CWnd 创建窗口,首先建立你的窗口类(如 CMainWnd),派生于 CWnd 类,添加你需要的变量、函数,比如在 Create 函数在定义自己窗口的类型,标题,样式等等,然后在OnWndMsg 函数在接受窗口消息,并且分发到各自的处理函数。

     vs2008 (及以上版本 )中使用sfLib
  
一,创建一个 hello world 程序

1.启动 vs2008,新建 clr 空项目
2,项目名 helloworld,保存在 d:\mydoc\vs28proj\hellwd 文件夹
3,复制 sfLib\sample\helloworld 文件夹的 mainWnd.h 和 main.cpp 两个文件,
    粘贴到 项目文件夹 d:\mydoc\vs28proj\hellwd。
4.项目中添加文件,vs 菜单 项目-> 添加现有项,
   弹出的浏览窗口,选择刚才粘贴的 mainWnd.h 和 main.cpp 两个文件,点击 添加。
5,项目 设置 附加包含目录,点击vs菜单 项目->属性,在属性页 左边 点击 配置属性,
   在右边的 附加包含目录 设置成 sfLib 所在的目录,如 d:\sfLib
6, 生成 exe 文件,运行 则可出现一个 窗口,中央有 hello world! 文字。

  vs 中 查看mainWnd.h, 可以看到 从 sfLib 的CWnd 类,派生了 CMainWnd 类,类内
Create 方法,调用 create 可以 注册创建一个窗口,标题 是 mainwnd,
  OnWndMsg 函数 接收 windows 消息,但是只 分发了 WM_PAINT  WM_CREATE 两个消息,分别 由 OnPaint OnCreate 方法处理。你可以 添加分发windows 消息, 形式 CASE_MSG( WM_XXXX,函数名)
  mainWnd.h 中 OnCreate 方法 什么都没做,直接返回 1,你可以在OnCreate 中创建窗口。
  在 OnPaint中 画 hello world! 文字。
   
  查看main.cpp ,在 程序一启动就执行的主函数 wWinMain ,定义了一个 CMainWnd 类的
实例,并调用 Create 方法,还用 windows 标准做法,接收分发 windows 消息。

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:155811 发表于 2025-10-19 14:15 | 显示全部楼层
附件 sfLib 类库

sflib.rar

191.46 KB, 下载次数: 0, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表