如何在单文档中添加一个按钮

如何在单文档中添加一个按钮,第1张

在单文档视图(SDI)结构中,视图一般用来显示数据。但是,有时也希望在视图中显示按钮或其他的控件,以满足用户的需要。VC6.0没有直接给出在视图中添加按钮的向导(或许有,我没找到)。下面我将给出一个手动添加按钮并使按钮具有响应事件 的功能。

第一步:添加一个按钮

1、首先在**View.h中定义一个按钮标识

#define ID_BUTTON 100

2、 其次给C**View类添加一个成员变量

CButton m_myButton //这条语句写在**View.h的类的定义中,要声明为PUBLIC类型

3、然后创建按钮实例

m_myButton.Create(_T("示例按钮"), //按钮的caption属性,按钮的显示

WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_ICON, // 按钮也是一种窗体,同样有窗体风格,这些常量通过或运算使按钮达到一定的效果,这些常量的含义可以参考MSDN。

CRect(20,320,50,340), //这个参数指出按钮在视图中的位置和按钮的大小。

this, //这个指针指向按钮这个窗体的父窗体

ID_BUTTON) //这是刚才为按钮定义的常量,按钮的控制ID

4、然后调用函数m_MyButton.ShowWindow(SW_HIDE)这个函数根据参数的样式显示按钮,此时的参数表示隐藏按钮,如果要显示按钮,可以以SW_SHOW作为参数,这样,就是在想用到按钮的时候调用函数m_MyButton.ShowWindow(SW_SHOW)显示出按钮。

说明:按钮在C**View::OnCreate()函数中初始化。这个函数是当窗体被创建的时候调用的一个初始化函数。像按钮这样的对象在这个时候初始化是比较合适的。

int C**View::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CView::OnCreate(lpCreateStruct) == -1)

return -1

m_MyButton.Create(_T("示例按钮"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_ICON,

CRect(20,320,50,340), this, ID_BUTTON)

m_MyButton.SetIcon(AfxGetApp()->LoadIcon(ICON_SAVE)) //给按钮加载一个图标

m_MyButton.ShowWindow(SW_HIDE)

return 0

}

第二步:消息函数

此时的按钮是不能响应任何消息的。下面我们手动添加按钮的消息。

1、声明函数原型

在C**View类的声明中声明一个protected类型的函数

//{{AFX_MSG(CSoftView)

afx_msg void OnMyButton()

//}}AFX_MSG

通常的做法,也是VC6.0向导的做法,会将消息处理函数声明在//{{AFX_MSG(CSoftView)~~~ //}}AFX_MSG标记中,当然,在VS.NET 2003中,我们将看不到这个标记。真正起作用的是afx_msg,它表明随后的函数是一个消息处理函数。

2、函数的实现

下面实现函数,显然,这个函数也是C**View类的一个成员函数,所以在**View.cpp中实现

void C**View::OnMyButton()

{

MessageBox("你点击了我")

}

3、如果这个时候你就运行程序的话,按钮依然不会响应任何事件。因为事件的产生的消息是交给视图的,所以我们需要把消息从视图传给按钮,实现起来很简单,在**View.cpp中找到如下的标记:

BEGIN_MESSAGE_MAP(C**View, CView)

END_MESSAGE_MAP()

在这个标记中写入如下代码:ON_BN_CLICKED(ID_BUTTON, OnMybutton)

这句代码是说,让ID_BUTTON所指的对象响应单击(ON_BN_CLICKED)事件,事件的处理函数是OnMybutton。这是MFC的消息映射机制。对于这个机制,在此不多说,待后续。

到此,一个可以响应单击事件的按钮就创建好了。如果要响应其他事件,可以按照这个方式创建,只需要改动这个过程中的第3步,将ON_BN_CLICKED改成希望响应的消息类型就可以了。

创建按钮 data-role=button

给HTML元素添加 data-role="button" 属性。jQuery Moble就会给此元素增强为按钮样式。 Jquery

Mobile框架包含了一组最常用的移动应用程序所需的图标,为了减少下载的大小,Jquery

Mobile包含的是的白色的图标sprite图片,并自动在图标后添加一个半透明的黑圈以确保在任何背景色下图片都能够清晰显示。

样式链接按钮

在一个网页的主要内容块,你可以样式的任何锚链接为按钮添加 data-role="button"

属性。该框架将加强与标记和类的链接方式链接按钮。例如,这个标记:

图标样式列表

jQuery Mobile 自带很多按钮小图标,如下图所示:

左箭头:data-icon="arrow-l"

右箭头:data-icon="arrow-r"

上箭头:data-icon="arrow-u"

下箭头:data-icon="arrow-d"

删除:data-icon="delete"

添加:data-icon="Plus"

减少:data-icon="minus"

检查:data-icon="Check"

齿轮:data-icon="gear"

前进:data-icon="Forward"

后退:data-icon="Back"

网格:data-icon="Grid"

五角:data-icon="Star"

警告:data-icon="Alert"

信息:data-icon="info"

首页:data-icon="home"

默认情况下,所有的图标都放在按钮的按钮文本左。此默认可以覆盖使用 data-iconpos

属性来设置图标的右上方(top)、底部(bottom)、右侧(right)、左侧(left)的文本。例如,标记:

隐藏图片上的文字 data-iconpos="notext"

你也可以创建一个图标按钮,设置

data-iconpos="notext"。按钮插件将隐藏的文字在屏幕上,但把它作为给屏幕阅读器和设备支持工具提示上下文链接标题属性。例如,data-iconpos="right",data-iconpos="notext":

使用自定义图标,需要指定 data-icon 值。Jquery Mobile的button插件会将生成一个CSS类,它的前缀是ui-icon-

,后面的是data-icon值。假如:有一个按钮 data-icon 属性的值为 myapp-email,即 data-icon=“

myapp-email”。那么生产的CSS类是:ui-icon-myapp-email。

然后你可以在你的样式表写一个CSS规则来定义

ui-icon-myapp-email。然后在css中指定这个类的背景图片地址。为了保持与其他图标的视觉上的一致性,请创建一个白色18x18像素的PNG-8图标,并且保存为Alpha透明度。

这将创建标准分辨率的图标,但许多设备都有非常高的分辨率的显示器,就像iPhone

4的视网膜显示器。添加一个高清图标,创建一个图标,36X36像素(18像素大小完全相同的两倍),并添加第二个规则使用WebKit分钟装置像素比例:2。媒体查询到目标的规则只有以高分辨率显示器。指定背景图片高清图标文件和设置背景像素大小18x18将安装36个像素图标到同一个18像素的空间。传媒查询块可以用多个图标规则:

Windows 窗体程序是基于消息机制的,所有控件,它的本质都是一个窗体,都是使用 CreateWindows 函数来创建,不过类名,则需要指定为系统预先注册的控件类,比如,你要创建一个按钮控件,就要这样子 CreateWindows( "BUTTON", "按钮标题" ),CreateWindows 这个函数你应该用了不少了吧,其余的参数可以参考 MSDN,但是类名我们指定了 “BUTTON”,说明我们要创建一个按钮,每个按钮都有一个唯一的 ID,通过你的消息处理函数,可以知道哪个按钮发生了什么事件,详细讲的话,非常多,你可以参考 MSDN,或者《Windows 程序设计》这本书 。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11641449.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存