wxWidget源码阅读
文章平均质量分 73
zero_lee
这个作者很懒,什么都没留下…
展开
-
[Effective WX] 理解wxWidget中wxGrid相关类的关系
原创 2012-08-15 10:21:49 · 1164 阅读 · 0 评论 -
[Effective WX] wx的UI UnitTest explained
在wx2.9.4中,wx支持了UI UnitTest。我们完全可以利用这个framework来实现我们自己的UI UnitTest机制。1. wxUIActionSimulator类wxUIActionSimulator类利用不同平台的API(windows:win32api, linux: X11)实现了基本事件发送机制。1. 鼠标相关事件, 2. 键盘按键相原创 2013-11-05 16:36:46 · 1285 阅读 · 0 评论 -
[Effective WX] 理解wxWindow与wxSizer的关系
wxWindow与wxSizer每个wxWindow都有一个m_contaningSizer(包含这个wxWindow窗口),还有一个m_windowSizer(这个窗口所包含的顶层wxSizer)。设置包含这个window的sizervoid wxWindowBase::SetContainingSizer(wxSizer* sizer){// adding a wind原创 2012-08-15 10:07:45 · 1237 阅读 · 0 评论 -
[Effective WX] 理解wxWindow中增加和去除/销毁子窗口的过程
wxWindow中增加和去除/销毁子窗口的过程:a) 增加一个子窗口void wxWindowBase::AddChild(wxWindowBase *child){ wxCHECK_RET( child, wxT("can't add a NULL child") ); // this should never happen and it will lead to原创 2012-08-15 10:02:12 · 2116 阅读 · 0 评论 -
[Effective WX] wx中的反射机制:DANYMIC_CLASS的实现
两个宏:DECLARE_DYNAMIC_CLASSIMPLEMENT_DYNAMIC_CLASS当一个类想借助于wx实现的dynamic_class的机制,必须得继承于wxObject或者是它的子类。有了这个前提条件之后,在你的类中,你只需要这样操作:1. 在类的声明中,写下:DECLARE_DYNAMIC_CLASS($your_class_name);原创 2012-11-05 14:23:14 · 1663 阅读 · 0 评论 -
[Effective WX] 理解wxWindow中的各种size
在wxWidget中,wxWindow有相当多的size,每种size有各种不同的用途,特别是与wxSize联系起来时,就特别容易混淆。这里从代码的角度来理清各种size。那几种size就是size, min size, max size, best size, virtual size首先我们来看wxWindowBase类中几个size的数据成员:min size/max s原创 2012-08-16 22:31:30 · 3033 阅读 · 0 评论 -
[Effective WX] wxPropertyGrid遇上wxWS_EX_VALIDATE_RECURSIVELY产生的BUG
对于wxWidget的第三方库wxPropertyGrid,客户端代码实例化一个wxPropertyGrid时有时会发生CRASH。简单的说,就是下面的代码行在某种情况下会CRASH:wxPropertyGrid* pPG = new wxPropertyGrid(pParentWin, wxID_ANY);那么到底是在哪种情况下呢?编写了一个简单的测试代码,跟踪调试发现,C原创 2013-06-30 23:43:26 · 1212 阅读 · 0 评论 -
[Effective WX] wxGTK上popup wxMenu的一个crash问题分析及解决方案
在GUI应用编程中,我们通常会提供给用户一些右键菜单选项。加入有这样的编程案例:右键菜单是依托某个窗口,如果某个右键菜单项提供这样的功能:当用户选择它之后,GUI代码做了一些事情后,需要跳转到其它窗口,在跳转之前或之后,我们不得不销毁之前右键菜单依托的窗口类对象。1. 问题描述:在wxGTK版本的程序中,当跳转到另一个窗口之后,GUI程序会crash。位置为$wxsrc/gtk原创 2014-01-02 21:41:48 · 1101 阅读 · 0 评论 -
[Effective WX] wxEvtHandler类相关
push一个evtHandler到一个窗口的evtHandler chain中void wxWindowBase::PushEventHandler(wxEvtHandler *handler){ wxEvtHandler *handlerOld = GetEventHandler(); handler->SetNextHandler(handlerOld);原创 2012-08-15 10:04:49 · 1729 阅读 · 0 评论 -
[Effective WX] 理解wxWidget跨平台的实现方法
wxWidget为了做到跨平台,对于那么与平台相关的类,比如wxWindow,大都会先定义一个平台无关的基类$(class)Base,通常定义在include/wx/xxx.h文件中,实现则放在了src/common/yyy.cpp文件。请注意头文件和实现文件的文件名通常是不同的,不过也有规律可循,譬如wxWindowBase类声明在window.h中,定义在src/common/wincmn.c原创 2012-08-15 10:08:51 · 1234 阅读 · 0 评论 -
[Effective WX] 理解wxWidget中event相关的宏
wxWidget中的事件响应的方式,是基于事件表的方式,而不是采用虚函数的方式。假如针对一个wxWindow类型的窗口,想要响应这个窗口的一些事件,通常我们会这样写:MyWindow.h文件class MyWindow : public wxWindow{... DECLARE_EVENT_TABLE()};MyWindow.cpp文件:#in原创 2012-08-15 10:15:36 · 3149 阅读 · 0 评论