wxWidgets界面开发库
wxWidgets是开源的第3方界面库,跨平台,对商业友好,比起qt具有具有体积小的优点,学习成本低。基于本地界面api的封装,具有本地界面风格。如著名的c++ ide Code::Blocks,开源filezilla FTP工具。http://wxwidgets.org
Peter(阿斯拉达)
关注系统界面开发技术,安全,语言特性,网络,图形,AI,硬件,并发,研发流程管理.
展开
-
[wxWidgets]_[初级]_[不常见但实用的类wxStandardPaths]
场景:1.wxStandardPaths 用来获取各种系统路径,可以用于存放app的配置数据。比如文档目录,appData等。原创 2014-10-31 23:31:49 · 2327 阅读 · 0 评论 -
[wxWidgets]_[初级]_[不常见但实用的类wxCmdLineParser]
1. 有时候需要构造命令行字符串传递給函数调用,比如CreateProcess,如果参数是动态的,那么就得使用类似std::vector<string>添加单个参数,之后拼接为一个string.wx有给这类处理类,就是wxCmdLineParser ,它既能拼接为字符串,又可以把字符串分解为一个参数数组。原创 2014-10-31 22:37:28 · 2572 阅读 · 0 评论 -
[wxWidgets]_[初级]_[常见更新进度条的方案]
场景:1. 很多程序需要根据处理业务的进度来更新进度条,进度条的目的是让用户能知道业务处理的进度,有进度条的程序更友好,让用户知道程序在运行,而不是没有响应。2. 现在更新进度条的见过两种方法,一种是通过事件(信号,队列)的发送让主线程按照发送的顺序来更新进度条,一种是设置一个全局整形变量,通过运行定时器的方式来更新进度条。第一种不适合在更新频率比较高的地方,比如一秒钟发送了20个事件,这样会造成主线程忙于处理事件界面出现假死状态。所以最好的办法就是使用第2种通过定时器更新进度条,设置一个合原创 2014-10-31 15:12:45 · 4536 阅读 · 0 评论 -
[wxWidgets]_[初级]_[配置codeblock+wxWidgets3.0.1开发环境]
很多开发wxWidgets的童鞋不会配置wxWidgets+codeblock的项目,还经常问,看着烦了写一篇step by step的文章,还不懂得话真要怪自己人品了。!!原创 2014-07-21 17:58:55 · 7460 阅读 · 3 评论 -
[wxWidgets]_[初级]_[反转wxString字符串]
场景:1. string的反转可以用reverse,原创 2014-05-06 23:29:24 · 1895 阅读 · 0 评论 -
[wxWidgets]_[初级]_[Debug Assertion Failure: BLOCK_TYPE_IS_VALID(pHead->nBlockUse) ]
场景:1.在使用wxWidgets原创 2014-04-29 14:01:58 · 1677 阅读 · 0 评论 -
[wxWidgets]_[初级]_[监听wxListCtrl和wxGrid的滚动条事件]
场景:1.在加载原创 2014-04-21 17:54:46 · 4647 阅读 · 0 评论 -
[wxWidgets]_[初级]_[使用wxFormBuilder设计XRC文件快速开发界面]
场景:1.wxWidgets是一个优秀的界面库,它的xrc界面布局格式也是很优秀的,可以使用类似mfc的所见即所得的设计方式,我发现它和xcode的interface builder的理念如初一则。都是界面与业务分离,界面与业务动态绑定。2.快速开发小软件时,使用wxFormBuilder来设计好界面,生成XRC文件,之后程序载入界面再绑定行为很优雅和高效。3.博客导出下载工具 就是用wxFormBuilder来设计界面的,xrc文件本身不应该手动编辑,因为它的结构化信息比较多,用软件代为生原创 2014-03-04 00:09:12 · 10261 阅读 · 1 评论 -
[wxWidgets]_[初级]_[wxWidgets-2.9.2编译参数]
1.使用MinGW的g++ 4.4.0 http://www.mingw.org/-- 也可以用vs编译,有vs项目文件.这个没试过.2.wxWidgets跨平台界面库的官网: http://www.wxwidgets.org/-- wxWidgets也能在Mac OS X下使用,使用和windows同样的界面编程模型,基本上不需要修改就可以直接用。-- 有在工作上用原创 2013-02-18 10:43:42 · 2332 阅读 · 0 评论 -
[wxWidgets]_[初级]_[发送异步事件的注意项之字符串深浅复制]
1.在工作线程和主线程进行通讯时,一般是通过发送事件来同步数据,而工作线程只能发送异步事件,基本不能发送界面绘制相关的同步事件。通讯数据时大多情况下需要传递字符串数值,这时候就需要先使用wxEvent的SetString方法,再使用QueueEvent.这里注意了,异步事件是对wxString有所有权的.以下摘录wx.chm文档里的api说明.QueueEvent() can be原创 2013-04-28 01:02:39 · 2208 阅读 · 0 评论 -
[wxWidgets]_[初级]_[简单应用看wx的核心原理]
1.wx的核心原理和MFC差不多,其中的一部分是menu,event,thread,dc,control.2.以下是使用和wx这些功能的例子,在MinGW(g++),msys(make)下编译.g++ 4.4,我用的eclipse CDT建的工程,单是编译的话直接用make就行了,不需要eclipse.3.用的wxWidgets-2.9.2,核心的dll只需要3个,由于是编译了基本上全原创 2013-05-31 10:43:08 · 6386 阅读 · 0 评论 -
[wxWidgets]_[中级]_[使用wxRendererNative画的原生图片生成带alpha透明区域的wxBitmap]
wx生成的原生checkbox图片: 场景:1.如果要开发自定义的checkBox和radiobutton,原生的控件背景色是无法替换为父控件的背景的,这种情况只能开发自己的自定义radiobutton.如果是自定义的radiobutton,那么少不了radiobutton的图片,这时候最简单的当然是要美工制作再贴图啦,但是也有办法不需要美工制作图片,因为wx的wxRend原创 2013-06-01 17:48:14 · 2974 阅读 · 0 评论 -
[wxWidgets]_[初级]_[不以界面程序的方式使用wx库]
场景:1.有时候需要单独使用wx里的某个dll或对wx项目的逻辑部分进行单元测试,这时候就需要wx代码能在命令行下运行,因为这样测试会更快。能看懂吧?呵呵。int main(int argc, char **argv) { setbuf(stdout,(char*)NULL); setbuf(stderr,(char*)NULL); gArgc = argc;原创 2013-06-02 22:22:11 · 2453 阅读 · 0 评论 -
[wxWidgets]_[初级]_[wxThread使用简单介绍]
场景:1.wx里自带了wxThread线程,使用起来比较方便,但是wx的线程使用时必须创建一个wxThread子类,这样会造成文件数量的增多,编译时间增长。2.可以使用函数指针来解决这个问题。当然如果有类似Java那种的匿名子类最好了。文件1: task_thread.h#ifndef TASK_THREAD_H#define TASK_THREAD_H#in原创 2013-07-30 11:34:57 · 3794 阅读 · 0 评论 -
[wxWidgets]_[初级]_[自定义按钮]
场景: 1.现在的软件上的按钮都不是标准的按钮了,因为基本上是贴图上去的,正常情况下一种图片,鼠标移上去之后按钮显示另一种效果,按下去之后又是另一种效果。2.wx的做法其实和mfc的按钮原理是一样的,就是给按钮贴图和重绘背景。以下是源文件.dh_bitmap_button.h/* * File: dh_bitmap_button.h * Author原创 2013-09-01 16:49:56 · 4717 阅读 · 4 评论 -
[wxWidgets]_[中级]_[移动窗口]
场景:1.比如自定义Dialog窗口时,需要单击标题栏按下拖动窗口.2.目前并没有实现类似QQ播放器那种拖动显示边框的,只能连窗口内容一起移动.关键代码:void DhWindowMove::CallOnLeftDown2(wxWindow* top_window, wxWindow* response_window, const wxMouseEvent& event原创 2013-09-01 17:16:10 · 1995 阅读 · 1 评论 -
[wxWidgets]_[初级]_[正则表达式]
场景:1.wxWidgets的正则表达式还是比较方便使用的,也不需要引入boost库,boost库的正则真不好理解。用法和Java比较类似。bool StringUtil::CheckEmail(const wxString& text){ wxRegEx check; check.Compile("^[^@]+@.+\\.[^.]+$"); if(che原创 2013-09-01 17:33:49 · 1910 阅读 · 0 评论 -
[wxWidgets]_[中级]_[合并图片-平铺图片-使用小图绘制大图]
场景:1.有时候绘制控件的背景时,控件的大小是不定的,即可以最大化最小化,这样使用固定大小的图片就不合适了。2.解决办法之一就是使用平铺小图片的方式合并成大的背景图.方法1:使用图形的Brush..static void DrawWordBitmap(wxBitmap* dest, wxBitmap* source){ wxMemoryDC dc; dc.SelectO原创 2013-09-01 22:58:31 · 2152 阅读 · 0 评论 -
[wxWidgets]_[中级]_[阻止窗口闪烁的方法]
场景:1. 4种情况.66.阻止闪烁的办法。1.冻结多次重绘一般 闪烁是因为多次update ui,造成视觉上不连续的现象。方法1:This tiny class prevents redrawing of a wxWindow during its lifetime by using wxWindow::Freeze() and wxWindow::Thaw()原创 2013-10-21 10:25:21 · 3463 阅读 · 0 评论 -
[wxWidgets]_[初级]_[自绘窗口最小化点击任务栏图标还原的办法]
场景:1.wxWidgets的自绘窗口,就是去掉title和菜单的顶级窗口默认最小化后再次点击任务栏的图标是不能还原的.2.解决办法.wx的自绘制窗口的最小化点击还原的办法只在固定大小的界面里成功.1.frame创建时:wxDEFAULT_FRAME_STYLE | wxFRAME_SHAPED2.在frame的Create返回前调用Frame的Fit();原创 2013-10-21 10:37:50 · 3745 阅读 · 6 评论 -
[wxWidgets]_[中级]_[自定义wxStaticText控件支持图片背景(透明背景)]
场景:1.在贴图的情况中,wxStaticText并不能支持有背景的父控件,这样文字背景就有一个灰黄色的默认背景。即使写子类继承wxStaticText加入EVT_ERASE_BACKGROUND也不能让背景色消失。这时候可以参考mfc的实现,返回一个透明BRUSH给wxStaticText做绘制默认背景色用.不过这里就需要重载DoMSWControlColor方法,这个是基于本地的实现。原创 2013-12-11 11:06:46 · 5615 阅读 · 3 评论 -
[wxWidgets]_[中级]_[常用的wxGrid的总结]
场景:1. wxGrid是比较好用的可定制的table,支持单元格显示效果定制,合并,隐藏,局部刷新等等。总体来说,还是比较实用的控件。总结:1. 初始化grid->CreateGrid(0, 0); grid->EnableGridLines(true); grid->SetRowLabelSize(32); grid->SetDefaultRowSize(14原创 2013-12-11 11:38:04 · 7677 阅读 · 2 评论 -
[wxWidgets]_[初级]_[Mac OS X下添加输入框的右键菜单]
场景:1.在Mac OS X 下,输入文本框wxTextCtrl默认是没有默认右键菜单的,这样对使用鼠标惯的用户来说是不清楚还能按Command+V的,还有粘帖,复制等操作.可通过以下操作添加右键菜单:text_->Connect(wxEVT_CONTEXT_MENU,wxContextMenuEventHandler(RegisterDialog::OnContextMenu原创 2013-12-11 13:50:24 · 2470 阅读 · 0 评论