nim_duilib之msgbox用法(23)
概述
- 本文将介绍 msgbox 的用法
- 更多用法,请参考 源码
- 改进了原有的xml样式
一个样式

xml结构
整体垂直布局

xml源码
demo源码下的msg/msg.xml文件内容 改为如下
注意: 代码中控件的关联(我这里的xml中换了新的名字)
<?xml version="1.0" encoding="UTF-8"?>
<Window size="340,180" caption="0,0,0,34" >
<VBox width="340" height="auto" bkcolor="bk_wnd_ligt_dark">
<!--标题栏 含关闭按钮-->
<HBox class="caption" >
<Label class="font_title" name="label_title" width="stretch" margin="20,6,0,0" />
<Button class="btn_wnd_close" name="closebtn" margin="20,6,10,0"/>
</HBox>
<VBox height="1">
<Control height="1" bkcolor="light_gray2" />
</VBox>
<!--中间显示的内容-->
<RichEdit class="richedit_show" name="richedit_content" width="300" margin="20,30,20,30" multiline="true" vscrollbar="false" autovscroll="false" enabled="false" rich="true"/>
<!--下面的按钮-->
<HBox height="auto" margin="0,0,20,20" childmargin="10" >
<Control />
<Button class="btn_global_blue_80x30" name="btn_yup" normaltextcolor="white"/>
<Button class="btn_global_white_80x30" name="btn_nope" normaltextcolor="darkcolor"/>
</HBox>
</VBox>
</Window>
其中, caption的定义如下:
<Class name="caption" height="34" bkcolor="bk_wnd_ligt_dark" />
richedit_show定义如下
<Class name="richedit_show" font="system_18" disabledtextcolor="color_palette10" />
控件关联
void MsgBox::InitWindow()
{
m_pRoot->AttachBubbledEvent(ui::kEventClick, nbase::Bind(&MsgBox::OnClicked, this, std::placeholders::_1));
//title_ = (Label*)FindControl(L"title");
//content_ = (RichEdit*)FindControl(L"content");
//btn_yes_ = (Button*)FindControl(L"btn_yes");
//btn_no_ = (Button*)FindControl(L"btn_no");
ui::Control* pctrl = nullptr;
// 1. 标题栏
pctrl = FindControl(L"label_title");
if (pctrl)
title_ = dynamic_cast<ui::Label*>(pctrl);
// 2. 中间显示提示内容
pctrl = FindControl(L"richedit_content");
if (pctrl)
content_ = dynamic_cast<ui::RichEdit*>(pctrl);
// 3. 按钮 确定
pctrl = FindControl(L"btn_yup");
if (pctrl)
btn_yes_ = dynamic_cast<ui::Button*>(pctrl);
// 4. 按钮 取消
pctrl = FindControl(L"btn_nope");
if (pctrl)
btn_no_ = dynamic_cast<ui::Button*>(pctrl);
}
代码中用法
需要定义一个回调,当msgbox退出后,可以在这个函数中获取当前选择的是哪一个按钮
nim_comp::MsgboxCallback mc = [](nim_comp::MsgBoxRet ret)
{
if (nim_comp::MsgBoxRet::MB_YES == ret)
{
;
}
else if (nim_comp::MsgBoxRet::MB_NO == ret)
{
;
}
else
{
;
}
};
nim_comp::ShowMsgBox(m_hWnd, mc,
L"内容", false,
L"标题", false,
L"OK", false,
L"Nope", false);
如果不需要处理返回值,直接传递一个空的闭包即可
nim_comp::ShowMsgBox(m_hWnd, nim_comp::MsgboxCallback(),
L"内容", false,
L"标题", false,
L"OK", false,
L"Nope", false);
扩展
重写父类函数 HandleMessage, 实现其对ESC的响应,当然, 你可以加上对Enter按键的响应。
LRESULT MsgBox::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_KEYDOWN && wParam == VK_ESCAPE)
{
this->Close(0);
return 0;
}
return __super::HandleMessage(uMsg, wParam, lParam);
}
nim_duilib之msgbox用法(23)的更多相关文章
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- 【VBA】MsgBox用法
MsgBox用法: Sub subMsgBox() Dim iok As Byte iok = MsgBox("是否XXX", vbYesNoCancel + vbQuestion ...
- msgbox用法
http://www.w3school.com.cn/vbscript/func_msgbox.asp VBScript MsgBox 函数 VBScript 函数参考手册 定义和用法 MsgBox ...
- nim_duilib之virtualListbox用法(22)
概述 本文将介绍virtualListbox的用法. 更多请参考源码. 一个样式 样式丑了点,勿喷. 重写函数 使用virtualListbox, 需要一个派生类(继承自基类VirtualListIn ...
- excel vba 数据分析
(Visual Basic Application) VBA(Visual Basic for Application)是Microsoft Office系列软件的内置编程语言,其语法结构与Visua ...
- selenium webdriver (python) 第一版PDF
前言 如果你是一位有python语言基础的同学,又想通过python+ selenium去实施自动化,那么你非常幸运的找到了这份文档,我也非常荣幸能为你的自动化学习之路带来一丝帮助. 其实,我在sel ...
- <老友记>学习笔记
这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...
- selenium webdriver (python)
selenium webdriver (python) 第一版PDF Posted on 2013-08-30 22:59 虫师 阅读(221) 评论(0) 编辑 收藏 前言 如果你是一位有pytho ...
- selenium webdriver (python)的基本用法一
阅在线 AIP 文档:http://selenium.googlecode.com/git/docs/api/py/index.html目录一.selenium+python 环境搭建........ ...
随机推荐
- O(1)判断两点之间是否有边
O(1)判断两点之间是否有边 问题描述 给定一张 \(n\) 个点,\(m\) 条边的有向图. 多次询问,要求每次 \(\mathcal{O}(1)\) 判断两点之间是否有边(你可以忽略输入.输出等问 ...
- 混合(Pooling)样本测序研究
目录 1.混合测序基础 2. 点突变检测 3. BSA 4. BSR 5. 混合样本GWAS分析 6. 混合样本驯化研究 7. 小结 1.混合测序基础 测序成本虽然下降了,但对于植物育种应用研究来说还 ...
- R语言与医学统计图形-【28】ggplot2扩展包ggrepel、ggsci、gganimate、ggpubr
ggplot2绘图系统--扩展包ggrepel.ggsci.gganimate.ggpubr等 部分扩展包可在CRAN直接下载,有些需借助devtools包从Github下载. 1. ggrepel包 ...
- 转-nRF5 SDK for Mesh(六) BLE MESH 的 基础概念
nRF5 SDK for Mesh(六) BLE MESH 的 基础概念 Basic Bluetooth Mesh concepts The Bluetooth Mesh is a profile s ...
- 【模板】二分图最大匹配(匈牙利算法)/洛谷P3386
题目链接 https://www.luogu.com.cn/problem/P3386 题目大意 给定一个二分图,其左部点的个数为 \(n\),右部点的个数为 \(m\),边数为 \(e\),求其最大 ...
- 2019广东工业大学新生杯决赛 I-迷途的怪物
题目:I-I-迷途的怪物_2019年广东工业大学腾讯杯新生程序设计竞赛(同步赛) (nowcoder.com) 将(p-1)^n 按照多项式定理拆开,会发现只有一项没有p,其余项都有p,可直接约掉. ...
- STM32 部分重映射和完全重映射(查看数据手册)
数据手册如何查找对应的映射: 打开官网直接搜索STM32F可以看到数据手册,里面有关于重映射的表格,输入第6页的页码,点击9.3中的9.3x可打开对应的链接. 举例说明: STM32中拥有重映射功能 ...
- 【Android】我有放入Icon到mipmap,但不显示,只显示安卓机器人Icon(Android 8.0 图标适配)
首先,放上别人写的博客,而我自己的博客,只会写大概思路,给自己留给备忘 https://blog.csdn.net/guolin_blog/article/details/79417483 其实会发生 ...
- 【STM8】SPI通讯
这篇内容有点长,如果有人想透过我的博客学习STM8的SPI,那是我的荣幸 首先我要先说大纲,这样大家心里比较有底,可以把精力都用在SPI理解上 [SPI初步介绍]:介绍SPI如何接线.名称解释.通讯注 ...
- InnoDB的行锁模式及加锁方法
MYSQL:InnoDB的行锁模式及加锁方法 共享锁:允许一个事务度一行,阻止其他事务获取相同数据集的排他锁. SELECT * FROM table_name WHERE ... LOCK IN S ...