WEB开发网
开发学院软件开发C++ GUI库:使本机应用程序具备Windows窗体的简易性 阅读

GUI库:使本机应用程序具备Windows窗体的简易性

 2010-10-15 09:07:42 来源:Web开发网   
核心提示:此处您是响应字符按下事件;如果您喜欢使用 Win32 API,则是响应 WM_CHAR 消息,GUI库:使本机应用程序具备Windows窗体的简易性(6),请记住,对于 on_my_event 事件处理程序函数,当您在“USD”框输入值并键入内容时,“EUR”框会更新,事

此处您是响应字符按下事件;如果您喜欢使用 Win32 API,则是响应 WM_CHAR 消息。

请记住,对于 on_my_event 事件处理程序函数,事件参数始终为 ev::my_event 类型。您的类可以处理的所有事件都是 ev:: 结构。只需键入 ev::,代码补全功能便会向您显示您的类可以处理的所有事件(参见图 7)。请注意,查找事件信息的最简便方法是键入 e.,从而使代码补全功能显示所有与此事件有关的数据(参见图 8)。

图 7 代码补全显示事件

图 8 获得事件信息

您可以通过浏览文档来查看控件的事件:只需在选择该控件后选择其 ev 类,就会看到它的所有事件。此库可以将同一事件发送到多个事件处理程序(例如,将通知发送到控件,然后发送到此控件的父级)。

所有事件都具有 .sender 属性;它代表发送事件的控件(此属性对于通知很有用,尤其是在查找通知的发送人方面)。所有事件都具有 .handled 属性;此属性可能具有两个值:handled_partially(默认)和 handled_fully。通过将此属性设置为 handled_fully,您可以停止事件处理;即使有更多事件处理程序,也不会调用它们。例如,如果您正在扩展编辑类,并希望阻止通知父级文本更改,您应编写以下代码:

struct independent_edit : edit {
           void on_change(ev::change &e) {
           e.handled = handled_fully;
           }
           };

我在上面介绍过,扩展控件很简单。不过,在窗体上处理通知也应该很简单。当处理通知时,您需要知道发送方 (e.sender)。除此之外,您还需要能够从特定控件处理通知。因此,事件处理程序函数另有一个额外参数:控件名称,后面加下划线 (_)。例如,要查找用户在用户名编辑框键入的内容,应运行以下代码:

void login::on_change(
edit::ev::change &e, username_) {
cout << "name=" << e.sender->text;
}

例如,假设您希望在美元和欧元之间转换货币。当您在“EUR”框输入值并键入内容时,“USD”框会更新。当您在“USD”框输入值并键入内容时,“EUR”框会更新,如图 9 所示。以下是执行此操作的代码:

struct convert : form, form_resource::convert {
double rate;
convert() : rate(1.5) {}
int mul_str(const string& a, double b) { ... }
void on_change(edit::ev::change&, eur_) {
usd->text = mul_str ( eur->text, rate); }
void on_change(edit::ev::change&, usd_) {
eur->text = mul_str ( usd->text, 1/rate); }
};

图 9 货币交换器

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:GUI 本机 应用程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接