
wxWidget源码阅读
文章平均质量分 73
zero_lee
这个作者很懒,什么都没留下…
展开
-
[Effective WX] 理解wxWidget中wxGrid相关类的关系
原创 2012-08-15 10:21:49 · 1199 阅读 · 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 · 1330 阅读 · 0 评论 -
[Effective WX] 理解wxWindow与wxSizer的关系
wxWindow与wxSizer 每个wxWindow都有一个m_contaningSizer(包含这个wxWindow窗口),还有一个m_windowSizer(这个窗口所包含的顶层wxSizer)。 设置包含这个window的sizer void wxWindowBase::SetContainingSizer(wxSizer* sizer) { // adding a wind原创 2012-08-15 10:07:45 · 1321 阅读 · 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 · 2208 阅读 · 0 评论 -
[Effective WX] wx中的反射机制:DANYMIC_CLASS的实现
两个宏: DECLARE_DYNAMIC_CLASS IMPLEMENT_DYNAMIC_CLASS 当一个类想借助于wx实现的dynamic_class的机制,必须得继承于wxObject或者是它的子类。有了这个前提条件之后,在你的类中,你只需要这样操作: 1. 在类的声明中,写下: DECLARE_DYNAMIC_CLASS($your_class_name);原创 2012-11-05 14:23:14 · 1709 阅读 · 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 · 3113 阅读 · 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 · 1249 阅读 · 0 评论 -
[Effective WX] wxGTK上popup wxMenu的一个crash问题分析及解决方案
在GUI应用编程中,我们通常会提供给用户一些右键菜单选项。加入有这样的编程案例: 右键菜单是依托某个窗口,如果某个右键菜单项提供这样的功能:当用户选择它之后,GUI代码做了一些事情后,需要跳转到其它窗口,在跳转之前或之后,我们不得不销毁之前右键菜单依托的窗口类对象。 1. 问题描述: 在wxGTK版本的程序中,当跳转到另一个窗口之后,GUI程序会crash。位置为$wxsrc/gtk原创 2014-01-02 21:41:48 · 1157 阅读 · 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 · 1807 阅读 · 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 · 1281 阅读 · 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 · 3224 阅读 · 0 评论