用纯API的形式,有关状态栏和工具栏的相关函数有哪些呢?功能是什么?是纯API的,不是MFC里面的哈~~
3个回答
展开全部
不好意思啊, 我刚刚才看你您的问题...
首先要说明的是, 我并没有使用API来写过状态栏和工具栏, 我都是用MFC来做的. 而且在我看来, Windows并没有提供专门的API来处理这两种控件, 而是把它们作为一种特殊的窗口来实现的. 只需要在创建时添加一些特殊的flag即可. 而且在MFC中, 由其派生关系: CToolBar/CStatusBar --> CCnotrolBar --> CWnd也可以看出这种关系.
下面以工具栏为例, 状态栏有什么问题再讨论吧.
1. 首先要创建工具栏, 有两个函数CreateToolbarEx或者CreateWindowEx. 后者是创建所有窗口都要用的函数, 所以需要指定其窗口类是TOOLBARCLASSNAME. 前都则是专门用来创建工具条的, 具体参数比较条, 你可以去网上搜一下, 函数中指定了位图, 按钮等等. 我觉得用后者更好一些, 该函数功能更强大一些.
2. 对于工具栏的操作是通过发送消息来实现的, 可能需要了解一下SendMessage函数:
LRESULT SendMessage(HWND, UINT, WPARAM, LPARAM);
下是几个常用的操作, 可能需要用到的:
1.给工具条添加按钮使用TB_ADDBUTTONS消息, 插入按钮用TB_INSERTBUTTON消息
2. 响应函数. 工具栏中的每个按钮都有一个消息id与之关联, 当用户按下按钮时系统会给父窗口发送WM_COMMAND或者WM_NOTIFY消息, 可以通过该id来识别更个按钮, 进而进行响应.
3. 使用ToolTipControl. 当把鼠标停留在工具栏上时, 一般会弹出一个小窗口, 表明该按钮的功能(就是MFC中的CToolTipControl). 欲使用该功能, 在创建工具栏时要含有TBSTYLE_TOOLTIPS标识. 要使用该功能, 需要处理TTN_GETDISPINFO消息.
4. 给按钮指定image. 这是通过给控件发送TB_ADDBITMAP消息来实现的.
这些都是些皮毛, 要是真用起来的话, 肯定会有很多很多的细节问题. 要是有问题的话, 可以再讨论
首先要说明的是, 我并没有使用API来写过状态栏和工具栏, 我都是用MFC来做的. 而且在我看来, Windows并没有提供专门的API来处理这两种控件, 而是把它们作为一种特殊的窗口来实现的. 只需要在创建时添加一些特殊的flag即可. 而且在MFC中, 由其派生关系: CToolBar/CStatusBar --> CCnotrolBar --> CWnd也可以看出这种关系.
下面以工具栏为例, 状态栏有什么问题再讨论吧.
1. 首先要创建工具栏, 有两个函数CreateToolbarEx或者CreateWindowEx. 后者是创建所有窗口都要用的函数, 所以需要指定其窗口类是TOOLBARCLASSNAME. 前都则是专门用来创建工具条的, 具体参数比较条, 你可以去网上搜一下, 函数中指定了位图, 按钮等等. 我觉得用后者更好一些, 该函数功能更强大一些.
2. 对于工具栏的操作是通过发送消息来实现的, 可能需要了解一下SendMessage函数:
LRESULT SendMessage(HWND, UINT, WPARAM, LPARAM);
下是几个常用的操作, 可能需要用到的:
1.给工具条添加按钮使用TB_ADDBUTTONS消息, 插入按钮用TB_INSERTBUTTON消息
2. 响应函数. 工具栏中的每个按钮都有一个消息id与之关联, 当用户按下按钮时系统会给父窗口发送WM_COMMAND或者WM_NOTIFY消息, 可以通过该id来识别更个按钮, 进而进行响应.
3. 使用ToolTipControl. 当把鼠标停留在工具栏上时, 一般会弹出一个小窗口, 表明该按钮的功能(就是MFC中的CToolTipControl). 欲使用该功能, 在创建工具栏时要含有TBSTYLE_TOOLTIPS标识. 要使用该功能, 需要处理TTN_GETDISPINFO消息.
4. 给按钮指定image. 这是通过给控件发送TB_ADDBITMAP消息来实现的.
这些都是些皮毛, 要是真用起来的话, 肯定会有很多很多的细节问题. 要是有问题的话, 可以再讨论
展开全部
创建它可以用CreateStatusWindow,也可以用CreateWindow(Ex)。
但是前提都要#include <CommCtrl.h>,并#pragma comment(lib, "comctl32.lib")。
CreateWindow时,要用STATUSCLASSNAME指定lpClassName,长宽位置都为零。
其他还有很多函数,不清楚的话可以去看看msdn。
操作它主要像楼上一样,用SendMessage。
但是前提都要#include <CommCtrl.h>,并#pragma comment(lib, "comctl32.lib")。
CreateWindow时,要用STATUSCLASSNAME指定lpClassName,长宽位置都为零。
其他还有很多函数,不清楚的话可以去看看msdn。
操作它主要像楼上一样,用SendMessage。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你坚持用google工具栏的话 推荐重设 或者等它下载完再说
如果你找不到或者不想用我劝你马上卸掉
如果你找不到或者不想用我劝你马上卸掉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询