怎么用wps做收支明细表怎么做表

wxWidgets类列表
wxWidgets类列表
发布时间: 21:34:18
编辑:www.fx114.net
本篇文章主要介绍了"wxWidgets类列表",主要涉及到wxWidgets类列表方面的内容,对于wxWidgets类列表感兴趣的同学可以参考一下。
管理窗口这里有若干直接由窗口管理器(例如:MS Windows或Motif Window Manager)操纵的窗口类型。在wxWidgets中,frames和dialogs是相似的,但是只有dialogs可能是模式的。wxTopLevelWindow任意的顶层窗口,dialog或framewxDialog对话框wxFrame通用的framewxMDIChildFrameMDI(多文档界面)child framewxMDIParentFrameMDI parent framewxMiniFrame带有瘦标题栏的framewxSplashScreen飞溅屏幕类wxPropertySheetDialog属性表对话框wxTipWindow在一个小窗口中显示文本wxWizard向导对话框参见 公共对话框其它窗口这里有由wxWindow派生的各种类。wxPanel跟随当前用户设置而改变颜色的窗口wxScrolledWindow自动管理滚动条的窗口wxGrid表格窗口wxSplitterWindow可以被拆分为水平或垂直的窗口wxStatusBar在frame上实现状态栏wxToolBar工具栏类wxNotebook笔记本类wxListbook类似于笔记本,但使用列表控件wxChoicebook类似于笔记本,但使用选择控件wxSashWindow包含四个可拖拽框格的窗口wxSashLayoutWindowwxVScrolledWindow与wxScrolledWindow一样,但支持可变高度的行wxWizardPage向导对话框中页面的基类wxWizardPageSimple向导对话框中的页面公共对话框公共对话框是在应用程序中被频繁使用的现成的对话框类。wxDialog公共对话框的基类wxColourDialog颜色选择对话框wxDirDialog目录选择对话框wxFileDialog文件选择对话框wxFindReplaceDialog文本搜索/替换对话框wxMultiChoiceDialog从列表获得一个或多个选择的对话框wxSingleChoiceDialog从列表中获得一个选择的对话框,并且返回一个字符串wxTextEntryDialog从用户那里获得一行文本的对话框wxPasswordEntryDialog从用户那里获得一个密码的对话框wxFontDialog字体选择对话框wxPageSetupDialog标准页面设置对话框wxPrintDialog标准打印对话框wxProcessDialog进程指示对话框wxMessageDialog简单的消息对话框wxWizard向导对话框控件典型的,提供与用户之间交互的小窗口。控件不是静态的,它们能够具有与之关联的validators。wxControl控件的基类wxButton按钮控件,显示文本wxBitmapButton按钮控件,显示一张位图wxToggleButton一个按钮,当用户单击时保持按下(状态)wxCalendarCtrl显示一个完整的月历的控件wxCheckBox检查框控件wxCheckBoxwxCheckListBox每个条目左边都有一个检查框的列表框wxChoice选择控件(一个没有可编辑区的组合框)wxComboBox包含一个可编辑区的选择框wxDatePickerCtrl简单的日期选择控件wxGauge显示一个变化数量的控件,如剩余时间wxGenericDirCtrl显示一个目录树的控件wxHtmlListBox显示HTML内容的列表框wxStaticBox一个静态的或将相关控件在视觉上组合在一起的方框wxListBox单选或多选的字符串列表wxListCtrl显示字符串列表,和/或图标,加上一个多列报表视图wxListView一个简单的界面(wxListCtrl的报表视图外观)wxTextCtrl单行或多行文本编辑控件wxTreeCtrl树(层次)控件wxScrollBar滚动条控件wxSpinButton一个旋转或&up-down&控件wxSpinCtrl一个旋转控件 例如:旋转按钮和文本控件wxStaticText一行或多行的不可编辑文本wxStaticBitmap显示一张位图的控件wxRadioBox一个单选按钮的组合wxRadioButton以相互排斥的方式和其它圆形按钮一起使用的圆形按钮wxSlider用户可拖拽的滑块wxVListBox支持可变行高的列表框菜单wxMenu显示连续的菜单条目以供选择wxMenuBar包含连续菜单以一个frame的方式以供使用wxMenuItem表示单个菜单条目窗口布局有两种不同的窗口(特别是对话框)布局系统。一个是基于号称sizer的,它需要少量的定位,思考和计算,并且在所有平台下产生看起来一样的对话框。另一个是基于所谓的约束的,虽然它仍然可用,但是已经被废弃了。Sizer概述 描述基于sizer的布局这些类是有关基于sizer布局的wxSizer抽象基类wxGridSizer在所有单元有着相同大小的网格中布局窗口的sizerwFlexGridSizer在一个可变网格中布局窗口的sizerwxGridBagSizer另一个网格sizer,让你指定一个条目的单元,且条目可以跨越行和/或列wxBoxSizer在一行或一列中布局窗口的sizerwxStaticBoxSizer与wxBoxSizer相同,但是包含一个静态框的边框约束概述 描述基于约束的布局这些类是有关基于约束的窗口布局wxIndividualLayoutConstraint描述单个约束尺寸wxLayoutConstraints描述一个窗口类的约束设备环境概述设备环境是一个能够在上面绘图的界面,并且提供一个允许传递不同的设备环境给你的绘图代码参数的抽象。wxBufferedDC双缓冲绘图的设备环境助手wxBufferedPaintDCOnPaint内部的双缓冲绘图设备环境助手wxClientDC在OnPaint事件之外访问客户区的设备环境wxPaintDC在OnPaint事件内部访问客户区的设备环境wxWindowDC访问非客户区的设备环境wxScreenDC访问整个屏幕的设备环境wxDC设备环境基类wxMemoryDC在位图上绘图的设备环境wxMetafileDC在元文件上绘图的设备环境wxMirrorDC允许简单映射的代理设备环境wxPostScriptDC在PostScript文件上绘图的设备环境wxPrinterDC在打印机上绘图的设备环境图形设备接口位图概述这里是在设备环境和窗口上绘图的相关类。wxColour描绘红,蓝和绿的颜色元素wxDCClipper包装设置操作并销毁剪切区域wxBitmap描绘一张位图wxBrush用于在设备环境上填充区域wxBrushList预定义刷子的列表wxCursor一个小的透明的描绘光标的位图wxFont描述字体wxFontList预定义字体的列表wxIcon一个小的透明的指派给帧的在设备环境上绘制位图,wxImage一个平台独立的图像类wxImageList一个图像列表,用于某些控件wxMask描绘一个掩码用于透明地绘制位图wxPen用于在设备环境上画线wxPenList预定义的画笔列表wxPalette描绘一个RGB值的索引表wxRegion描绘一个窗口或设备环境中简单或复杂的区域wxRendererNative抽象高水平的绘图原语事件概述一个事件对象包含具体事件的信息。事件处理器(通常为成员函数)有一个单独的事件参数。wxActivateEvent一个窗口或应用程序的激活事件wxCalendarEvent用于wxCalendarCtrlwxCalculateLayoutEvent用于计算窗口布局wxCloseEvent一个关闭窗口或结束会话事件wxCommandEvent来自各种标准控件的事件wxContextMenuEvent当用户发出一个索引菜单命令时产生该事件wxDateEvent用于wxDatePickerCtrlwxDialUpEvent由wxDialUpManager发出的事件wxDropFilesEvent一个撤销文件事件wxEraseEvent一个擦除背景事件wxEvent事件基类wxFindDialogEvent由wxFindReplaceDialog发出的事件wxFocusEvent一个窗口聚焦事件wxKeyEvent一次击键事件wxIconizeEvent一个图标化/还原事件wxIdleEvent一个空闲事件wxInitDialogEvent一个对话框初始化事件wxJoystickEvent一个操纵杆事件wxListEvent一个列表控件事件wxMaximizeEvent一个最大化事件wxMenuEvent菜单事件wxMouseCaptureChangedEvent一个鼠标捕获变化事件wxMouseEvent鼠标事件wxMoveEvent移动事件wxNotebookEvent一个记事本控件事件wxNotifyEvent一个可以被禁止的通知事件wxPaintEvent绘画事件wxProcessEvent进程结束事件wxQueryLayoutInfoEvent用于查询布局信息wxScrollEvent来自滑块,独立的滚动条和旋转按钮的卷动事件wxScrollWinEvent来自滚动窗口的卷动事件wxSizeEvent一个大小化事件wxSocketEvent一个socket事件wxSpinEvent来自wxSpinButton的事件wxSplitterEvent来自wxSplitterWindow的事件wxSysColourChangedEvent一个系统颜色变化事件wxTimerEvent一个定时器到期事件wxTreeEvent树控件事件wxUpdateUIEvent用户界面更新事件wxWindowCreateEvent一个窗口建立事件wxWindowDestroyEvent一个窗口销毁事件wxWizardEvent一个向导事件校验器概述这些窗口校验器用于过滤和校验用户输入。wxValidator基本的检验器类wxTextValidator文本控件检验器类wxGenericValidator通用控件检验器类数据结构这些是wxWidgets支持的数据结构类。wxCmdLineParser命令行分析器类wxDateSpan一个合理的时间间隔wxDateTime操纵日期/时间的类wxArray一个动态数组的实现wxArrayString一个保存wxString对象的高效容器wxHaskMap一个简单的哈希map的实现wxHashSet一个简单的哈希集合的实现wxHaskTable一个简单的哈希表的实现(不建议使用,建议使用wxHaskMap)wxList一个简单的链表实现wxLongLong一种可移植的64位整型wxNode表示wxList中的一个节点wxObject大多数wxWidgets类的基类wxPathList帮助查找多个路径的类wxPoint一个点的表示wxRect表示一个矩形的类wxRegEx正则表达式支持wxRegion表示一个区域的类wxString一个字符串类wxStringTokenizer表示一种记号或单词列表的字符串类wxRealPoint一个用浮点数表示的点wxSizer一个size的表示wxTimeSpan一个时间间隔wxURI表示一个统一资源标识符wxVariant可保存任意类型的运行时刻可改变的类运行时类信息系统概述wxWidgets支持运行时类信息的处理和指定类名的动态对象的建立。wxClassInfo保存运行时的类信息wxObject带有运行时信息类的基类RTTI macros处理运行时信息的宏日志特征概述wxWidgets为消息日志提供了若干类和函数。详见wxLog概述。wxLog基本的日志类wxLogStderr记录消息到一个C STDIO 流wxLogStream记录消息到一个C++ iostreamwxLogTextCtrl记录消息到一个wxTextCtrlwxLogWindow记录消息到一个日志framewxLogGuiGUI程序的默认日志目标wxLogNull临时禁止消息日志wxLogChain允许链接两个日志目标wxLogPassThrough允许过滤日志消息wxStreamToTextRedirector允许重定向cout到wxTextCtrl的输出Log functions错误和警告日志函数调试特征概述wxWidgets通过类,函数和宏支持一些应用程序的调试方式。wxDebugContext提供内存检查设施Debugging macros支持断言和检查的调试宏WXDEBUG_NEW使用该宏得到进一步的调试信息wxDebugReport在一个程序崩溃的情况下建立调试报告的基类wxDebugReportCompress建立压缩的调试报告的类wxDebugReportUpload通过HTTP上载压缩的调试报告的类wxDebugReportPreview预览一个调试报告内容的抽象基类wxDebugReportPreviewStdwxDebugReportPreview的标准实现联网技术类wxWidgets提供了它自己的基于联网的socket类。wxDialUpManager提供函数来检测网络连接状态并确定它wxIPV4adress描绘一个因特网地址wxIPadress描绘一个因特网地址wxSocketBase描绘一个socket基本对象wxSocketClient描绘一个socket客户端wxSocketServer描绘一个socket服务端wxSocketEvent一个socket事件wxFTPFTP协议类wxHTTPHTTP协议类wxURL描绘一个URL(统一资源定位符)进程间通讯概述wxWidgets提供基于Windows DDE的简单的进程间通讯设施,而大部分平台则使用TCP。wxClient,wxDDEClient描绘一个客户wxConnection,wxDDEConnection描绘一个客户端与一个服务端的连接wxServer,wxDDEServer描述一个服务端文档/视图框架概述wxWidgets支持一种文档/视图框架,它为以文档为中心的应用程序提供了内部管理。wxDocument表示一个文档wxView表示一个视图wxDocTemplate管理一个文档与一个视图之间的关系wxDocManager管理应用程序中的文档与视图wxDocChildFrame一个显示文档视图的子框架wxDocParentFrame用于包含视图的父框架打印框架概述实现一个打印和预览框架让提供文档打印设施变得相对简单。wxPreviewFrame显示一个打印预览的框架wxPreviewCanvas显示一个打印预览的画布wxPreviewControlBar一个打印预览的标准控制栏wxPrintDialog标准打印对话框wxPageSetupDialog标准的页面设置对话框wxPrinter表示打印机的类wxPrinterDC打印机的设备环境wxPrintout表示一个详细的打印输出的类wxPrintPreview表示一个打印预览的类wxPrintData表示将被打印的文档的信息wxPrintDialogData表示打印对话框的信息wxPageSetupDialogData表示页面设置对话框的信息拖拽和剪切板类拖拽和剪切板概述wxDataObject数据对象类wxDataFormat表示一个数据格式wxTextDataObject文本数据对象类wxFileDataObject文件数据对象类wxBitmapDataObject位图数据对象类wxCustomDataObject自定义数据对象类wxClipboard剪贴板类wxDropTarget拖拽目标类wxFileDropTarget文件拖拽目标类wxTextDropTarget文本拖拽目标类wxDropSource拖拽源类文件相关类wxWidgets有若干个小类来操作磁盘文件,更多细节见文件类概述。wxFileName操作文件名和属性wxDir列举文件/子目录的类wxDirTraverser和wxDir一起递归的列举文件/子目录的类wxFile低级文件输入/输出类wxFFile另一个低级文件输入/输出类wxTempFile安全的替换一个存在文件的类wxTextFile操作以行数组方式表示的文本文件的类wxStandardPaths标准目录路径流类wxWidgets有它自己的流类集合,作为经常出现bug的标准流库的另外一个选择,并且提供了更加强大的功能。wxStreamBase流基类wxStreamBuffer流缓冲类wxInputStream输入流类wxOutputStream输出流类wxCountingOutputStream查询一个流的大小的流类wxFilterInputStream过滤输入流类wxFilterOutputStream过滤输出流类wxBufferedInputStream缓冲输入流类wxBufferedOutputStream缓冲输出流类wxMemoryInputStream内存输入流类wxMemoryOuputStream内存输出流类wxDataInputStream平台无关的二进制数据输入流类wxDataOutputStream平台无关的二进制数据输出流类wxTextInputStream平台无关的文件数据输入流类wxTextOutputStream平台无关的文件数据输出流类wxFileInputStream文件输入流类wxFileOutputStream文件输出流类wxFFileInputStream另一个文件输入流类wxFFileOutputStream另一个文件输出流类wxTempFileOutputStream安全的替代一个已存在的文件的流wxStringInputStream字符串输入流wxStringOutputStream字符串输出流wxZlibInputStreamZlib(压缩)输入流wxZlibOutputStreamZlib(压缩)输出流wxZipInputStream读一个ZIP档案的输入流wxZipOutputStream写一个ZIP档案的输出流wxSocketInputStreamSocket输入流类wxSocketOutputStreamSocket输出流类线程类多线程概述wxWidgets提供了一个类的集合来保证在多种平台上使用本地线程的能力。wxThread线程类wxThreadHelper轻松地管理后台线程wxMutex互斥体类wxMutexLocker互斥锁实用程序类wxCriticalSection临界区类wxCriticalSectionLocker临界区锁实用程序类wxCondition条件类wxSemaphore信号量类HTML类wxWidgets提供一个类的集合来显示HTML格式的文本。这些类包含一个基于HTML窗口部件的帮助系统。wxHtmlHelpControllerHTML帮助控制器类wxHtmlWindowHTML窗口类wxHtmlEasyPrinting打印HTML的简单类wxHtmlPrintout一般的HTML wxPrintout类wxHtmlParser一般的HTML分析器类wxHtmlTagHandlerHTML标签处理器,可以插入到wxHtmlParser中wxHtmlWinParserwxHtmlWindow的HTML分析器类wxHtmlWinTagHandlerHTML标签处理器,可以插入到wxHtmlWinParser中虚拟文件系统类wxWidgets提供了一组实现一个易扩展的虚拟文件系统的类,它们由HTML类内部使用。wxFSFile表示一个虚拟文件系统中的文件wxFileSystem虚拟文件系统的主要接口wxFileSystemHandler用于通知文件系统类型的类基于XML的资源系统的类基于XML的资源系统(XRC)概述允许你的应用程序以保存在一个XML格式中的规格来建立控件和其它用户界面元素的资源。wxXmlResource操作资源的主类wxXmlResourceHandlerXML资源处理器的基类在线帮助wxHelpController控制帮助窗口的类族wxHtmlHelpControllerHTML帮助控制器类wxContextHelp使应用程序进入上下文敏感的帮助模式中的类wxContextHelpButton使应用程序进入上下文敏感的帮助模式中的按钮类wxHelpProvider提供上下文敏感的帮助准备的抽象类wxSimpleHelpProvider简单地提供上下文敏感的帮助准备的类wxHelpControllerHelpProvider通过一个帮助控制器来提供上下文敏感的帮助准备的类wxToolTip实现工具提示的类数据库类数据库类概述wxWidgets提供一组类来访问微软的ODBC(开放数据互连)产品,它由Remstar捐赠。这就是大家知道的wxODBC。wxDbODBC数据库连接wxDbTable提供访问一个数据库表wxDbInfwxDbTableInfwxDbColDefwxDbColInfwxDbColDataPtrwxDbColForwxDbConnectInfwxDbIdxDef其它wxApp应用程序类wxCaret一个光标对象wxCmdLineParser命令行分析器类wxConfig读/写配置的类(使用INI文件或注册表)wxDllLoader操作共享库的类wxGLCanvas可由OpenGL调用来着色的画布wxGLContext简单共享OpenGL数据资源的类wxLayoutAlgorithm一个可选的窗口布局设施wxProcess进程类wxTimer定时器类wxStopWatch秒表类wxMimeTypesManagerMIME类型管理器类wxSystemSettings获取多种全局参数的系统设置类wxSystemOptions运行时配置的系统选项类wxAcceleratorTable加速表wxAutomationObjectOLE自动化类wxFontManager字体映射,查找适合给定编码的字体wxEncodingConverter编码转换wxCalendarDateAttr由wxCalendarCtrl使用wxQuantize完成量化或颜色还原的类wxSingleInstanceChecker检查仅有单个程序实例运行
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:习惯了C/C++主入口main,在WX里没有它总是觉得好象少了点什么,这两天花了点时间弄了弄,原来是这样:
#include &wx/wx.h&
#include "client.h"
int main(int argc,char* argv[])
MyApp* app=new MyApp();
wxApp::SetInstance(app);
return wxEntry(argc,argv);
#include &wx/wx.h&
class MyFrame : public wxFrame
MyFrame() ;
class MyApp: public wxApp
wxFrame* m_
bool OnInit();
client.cpp:
#include &wx/wx.h&
#include "client.h"
MyFrame:: MyFrame()
: wxFrame(NULL, wxID_ANY, wxT("Hello wxWidgets"), wxPoint(50,50), wxSize(800,600))
wxPanel* mainPane = new wxPanel(this);
wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
// add widgets here!
mainPane-&SetSizer(sizer);
bool MyApp::OnInit()
m_frame = new MyFrame();
m_frame-&Show();
&现在果然清晰多了,哇哈哈~~
&Windows/*nix 下用GCC/MinGW 编译器时上面的int main(int argc,char* argv[])是能够完全正确编译,带SUBSYSTEM/Windows:5参数编译的可执行文件是不带命令行窗口(我是在WINDOW 7下用C::B+MINGW+WX2.9.2测试的)。但是如果用VC++编译器编译则有两种情况出现:
1.带SUBSYSTEM/console 参数能正确编译,但窗口程序运行时有命令行窗口;
2.带SUBSYSTEM/Windows:5 则不能编译,在这种情况下需要用到伟大的WinMain做为主程序入口点,同时wxEntry也要相应地改为适用WinMain参数的版本。下面是唯一需要改动的地方:
#include &wx/wx.h&
#include "client.h"
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSCTR lpCmdLine,int nCmdShow)
MyApp* app=new MyApp();
wxApp::SetInstance(app);
return wxEntry(hInstance,hPrevInstance,lpCmdLine,nCmdShow);
Views(...) Comments()wxWidgets&2.8&笔记&(上)
==================== 第二章 总览:=======================
一、基本构成:
一个程序至少包含三种对象:wxApp -&
wxFrame&wxDialog -&
windows&controls
二、运行过程:
逻辑入口点:wxApp的OnInit(),创建和初始化必须的控件
循环:当OnInit()返回true后,就进入event loop,并把事件转交给相应的处理对象。
若OnInit()返回false,就清理并退出
三、程序框架:
(一)全局空间:
1、IMPLEMENT_APP(你的wxApp子类名);
这个宏展开是main函数,并且包含创建你的wxApp子类对象的代码。你写wxApp的子类,是为了提供许函数OnInit()的具体实现,在OnInit()中,你可以创建你需要的所有控件。于是:
&&&&&&&&&&&
逻辑上,OnInit()是程序的入口点。
这个放MyApp.cpp的开头就行。
并且,他还负责创建wxGetApp()函数的定义,注意:wxGetApp()是靠这样弄出来的,不是系统的函数。
2、DECLARE_APP(你的wxApp子类名); —— 利用wxTheApp
这个的用途是,他声明了 MyApp&
wxGetApp()函数,你可以用wxGetApp()来得到你的wxApp子类(MyApp)对象的引用,从而可以用之去调用MyApp相应的方法。
(无聊的猜测:这个函数我觉得就是一个wxApp*到MyApp&的cast,他的实现,建立在全局变量:wxTheApp上,这个变量我猜
是:wxApp *wxTheApp = new MyApp();
这样来的。所以,你也可以直接用wxTheApp,只不过,你不做cast的话,你只能把他当作wxApp的一个指针来用,不能用到你的MyApp的非接
口的函数。)
用法:这个放MyApp.h中,你定义的MyApp类的下面。原因是:
任何一个编译单元,为了得到MyApp的对象的引用,都要包含:
MyApp的类定义和wxGetApp()的声明,所以,两个放一块儿好啦,哪个单元要用,包含MyApp.h就行了。
(二)MyApp:
继承wxApp,并提供virtual的bool OnInit(),在里面做Top-level
Windows的创建和初始化。
top-level的windows,比如frame和dialog,必须要显式的Show(true)一下
(三)MyFrame/MyDialog等top-level的window:
class MyFrame : public wxFrame
构造函数里,创建并初始化属于这个Frame的相关控件,如wxMenuBar。
MyFrame(const wxString& title);
public里写上事件处理函数
OnQuit(wxCommandEvent& event);
OnAbout(wxCommandEvent& event);
private里Declare一下,告诉wxWidgets,这个类要接收事件。
DECLARE_EVENT_TABLE()
———— 创建的控件,控件ID和事件处理的联系
在MyFrame构造函数里面,显然,创建一些属于它的子控件,而事件基本上都是由子控件引发的。
所以,一般创建子控件的某个能够引发事件的部分,如菜单项时,要给它配置一个ID,ID的作用是:
在MyFrame的实现文件中写Event table,如:
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
EVT_MENU(wxID_EXIT, MyFrame::OnQuit)
END_EVENT_TABLE()
其中的每一项的意思是:在MENU中的ID号为wxID_ABOUT的控件(这里就是菜单项)的事件,应该交给MyFrame的OnAbout。
注意:ID号,有一些通用的,有系统定义,如这里的两个就是,而自定义的,要自己用enum,const或#define写。
2、对事件的说明:
当一个控件被操作时,wxWidgets会收到X的通知,它知道,哦,“是那个控件对象被激发了”,于是调用那个对象的事件处理函数。这就是EVENT_TABLE的设计意义。
(四)关闭:
上面可以看出,当那个menu项被选择时,MyFrame的OnQuit()被调用,在里面,MyFrame的Close()(来自基类wxFrame,
最终来自wxWindow)被调用,这个函数发送一个wxEVT_CLOSE_WINDOW
事件,这个导致该事件的handler(我猜就在MyFrame里)调用MyFrame的Destroy()(同样来自基类wxFrame,最终来自
wxWindow),关闭该frame。由于是唯一的一个frame,所以导致程序关闭。
所以,你如果要避免程序直接关闭,那么就写代码在MyFrame里处理这个事件就行,这个事件本来就是由MyFrame产生的,当然是自己优先捕获来处理。
接受到鼠标对窗口管理器的关闭也一样,wxWidgets接受到消息后,调用MyFrame的Close(),和上面一样流程。所以,可以自定义handler,来达到询问是否关闭的效果。
四、其他:
1、关于某个提供的类,到底有哪些函数?
这个不要光看文档里的,因为它都继承自父类,所以,父类有的方法,一般都不在子类里写。
比如你创建一个wxFrame对象,你需要调用Show()来显示之,但是Show()是其父类wxWindows的方法,在wxFrame的文档中并查不到。
2、字符串的国际化支持——按照Unicode编译。
字符串是wChar*型的,你传入的const
char*需要用wxT()来转换一下。用_T()也行,两者等效。好像都是转为Unicode。
还有_(),暂时未知用法,详见Chapter 16, “Writing International
Applications“
3、wxID_ANY:表示让控件自己决定id,我不管。
==================== 第三章 事件处理:=======================
一、基础:
(一)、哪些系统原有控件可以处理事件:
wxWindow继承自wxEvtHandler,所以,所有wxWindow的子类(wxFrame,wxButton...)都可以处理事件。
其他还有类也可以,如wxMenu,wxApp...
(二)、事件处理函数的格式很一致:
void non_virtual_fun(wxXXEvent event);
其中,event的类型有:
simple control commands/menu commands: wxCommandEvent
key event: wxKeyEvent
resize event: wxSizeEvent
(三)、事件对象的内容:
事件对象的2个主要信息:
a. 事件源的控件的ID(如OK按钮,系统预设为wxID_OK)
b. 事件类型名(如由按钮产生的 wxEVT_COMMAND_BUTTON_CLICKED)
(四)、事件处理流程
这样一种模型:P28,关键字:“控件间”,“对象间”,“类间”
1、传播:———— “控件间”
比如一个MyFrame是一种window,然后你在它的构造函数里面创建了一些控件,比如MyTextCtrl。
我们发现有两个对象,一个是MyFrame,一个是MyTextCtrl,而MyTextCtrl你用了MyFrame的某种函数来设置为其父类是MyFrame。则一旦MyTextCtrl引发一个事件,规则如下:
首先看自己能不能处理,能处理则处理,不能处理(如没有EVENT_TABLE,或没有符合的)则交给父控件MyFrame。
这种由一个控件到另一个控件,我称之为传播事件。wxCommandEvent一般会传播。但是:有一些事件,由于认为对Parent没有意义,所以,系统并不会一级级往上传播。这些见P28,如wxSizeEvent和wxMouseEvent。
2、控件内部 “处理事件的对象栈” ———— “对象间”
上面是控件间的传播规则,但是在每个控件中的处理规则是这样的:
每个控件对象(至少每个wxWindow的派生类对象,如wxFrame,wxButton...),有一个“处理事件的对象栈”,栈底是自己,然后如果
你自定义了基于wxEvtHandler的处理类(见二(二)),那么这个类的实例,你可以通过wxWindow::PushEventHandler
将这个对象push到该控件的“处理事件的对象栈”的顶部。
这样一来,事件处理的规则为:
&&&&&&&&&&&&&&&&&&&
栈顶部的对象,优先来处理事件;
3、处理事件的对象内部:———— “类间”
对于某个正在处理事件的对象,派生类(比如MyTextCtrl)的EVENT_TABLE优先,基类(如wxTextCtrl)的EVENT_TABLE次之;
==综述:==
a. 事件的对象内含有ID,然后按照上面 3-&2-&1
规则,一个一个看有没有EVENT_TABLE,有就用事件对象的ID去查,发现有处理函数,就调用。
在任何一步,如果调用event对象的Skip(),则继续按规则传播。如果没有调用,则某个函数处理完后,事件处理就结束。
4、预定义的控件ID和一般采用的处理名字:
注意:你继承每个控件,而写的EVENT_TABLE中的“事件名(id,
func)”在手册每个控件类中都有指定。查查就知道。写的时候,像下面这样写。
BEGIN_EVENT_TABLE(MyFrame, wxFrame) // 下面的不一定是写一块的,只是为了说明有哪些
//事件名(发事件的控件的ID,处理函数)
EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
EVT_MENU(wxID_EXIT, MyFrame::OnQuit)
EVT_SIZE(&&&&&&&&&&
MyFrame::OnSize)
EVT_BUTTON(wxID_OK, MyFrame::OnButtonOK)
EVT_KEY_DOWN(MyTextCtrl::OnChar)
// NOTICE: 以后把看到的逐步加到这里:
格式为 (控件类&&&
事件名(可能的id/无id,函数(事件类))
如&& wxFrame
EVT_MENU(wxID_ABOUT,&&
MyFrame::OnAbout(wxCommandEvent))
END_EVENT_TABLE()
二、添加事件处理的3种方法:
(一)继承能够处理事件的控件(见一 1),然后给它添加EVENT_TABLE和事件处理函数void
OnXX(...),这样这个类就可以处理事件了,而且,一般来讲,你继承的控件类,有自己的事件处理函数,你也可以选择性的,自己处理,或者交由基类处理,如下:
这要求你首先定义MyTextCtrl(继承wxTextCtrl),然后按照给控件添加事件处理的一般方法做。比如这里你加了一个OnChar(),那
么系统会先把事件对象传给你这个函数,如果你调用了.Skip(),系统才继续把事件传给原有的事件处理函数。否则,事件处理就在这个函数里做了。
void MyTextCtrl::OnChar(wxKeyEvent& event)
wxIsalpha( event.KeyCode() ) )
// Keycode is within range, so do normal processing.
event.Skip();
// Illegal keystroke. We don’t call event.Skip() so the
// event is not processed anywhere else.
(二)自己直接继承wxEvtHandler生成一个类,处理事件:
这个例子太少了,但已知的例子(比如就是wxWindow本身)看起来做法和(一)相同,只是在你的wxWindow的某个地方(比如构造函数)加上
wxWindow::PushEventHandler()函数放入“处理事件的对象栈”。 但是,报错为:undefined
reference to `vtable for
xxx',其中,xxx就是你的类。报错的意思,可能是:类中声明了一个虚函数,但是定义中没有。恩,暂时不知道怎么做。这个是由
DECLARE_EVENT_TABLE()引起的。
这个的好处是:你继承的是wxEvtHandler,生成一个对象,这个肯定是处理一定的事件的,然后,其他想要处理这个事件的控件,都可以通过PushEventHandler()来添加对该事件的支持。而不需要你按照(一)那样一一去继承他们来添加事件处理。
(三)动态设置一个控件的事件处理:
与(一)不同的是,不要在.h中写DECLARE_EVENT_TABLE了,也不要在.cpp中写EVENT_TABLE了。换为:在你需要的控件上调用Connet设置事件处理,用Disconnect取消事件处理。如:
frame-&Connect( wxID_EXIT,
wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler(MyFrame::OnQuit) );
其中,前两个参数是wxYYEvent对象中的两个属性,wxYYEventHandler宏中的YY对应wxYYEvent,这里的YY是Command。
注意:Connet和Disconnet,是wxEvtHandler的方法!!!!
三、标识:
(一)控件标识:比如OK button的标识:wxID_OK,menu项的标识wxID_ABOUT等:
1、意义:标识产生事件的控件!
比如button
OK被按下了,则wxCommandEvent对象产生,里面的两个属性,一个是wxID_OK,一个是wxEVT_COMMAND_BUTTON_CLICKED,前者标识是那个控件产生了事件,后者表示什么事件
显然,wxID_OK之类的不必要整个程序唯一。只需要在一个“事件处理流程”中唯一即可。所以,一个wxID_OK可到处用,只要不在一个上下文里。如果你不需要产生事件,就可用wxID_ANY来在控件构造时给它,这样会生成一个
“负”!! 的值。
b. EVENT_TABLE和Connect中使用wxID_ANY,可用于接受任意的(某个上下文中)的控件事件。
c. 如何自定义标识值:
&& 必须为正数,因为wxID_ANY产生的是负数。
而且必须用wxID_HIGHEST来看系统预定义了多少,你定义的只能大于它。或者用
wxID_LOWEST,你定义的只能小于它。
d. 为什么要用系统预定义的标识(也叫标准标识):
一是一些常用的控件,标识标准好点,二是因为系统自己会用它,比如TextCtrl就会用wxID_COPY。
所有标准标识,见P32
(二)事件标识,也叫wxEventType
wxEVT_COMMAND_MENU_SELECTED
wxEVT_COMMAND_MENU_SELECTED
wxEVT_SIZE
这些在manual中,每个窗体都有说明,说该窗体能产生什么事件。其事件标识是多少。
四、自定义事件:
这个暂时不管,很少需要的。
==================== 第四章 窗体:=======================
一、window的结构:
(一)什么是窗体:
A window is any rectangular area with a common set of properties:
resized, it can paint itself, it can be shown and hidden, and so
(二)window的四个部分: P40
Window border and decorations
Optional scrollbars
Client area
Child window
(三)window能做些什么: 见P41-42 这里列举些如下:
wxCaret(文本插入位置的提示符)
wxCursor(窗体内部的鼠标的图形)
Painting:描绘自己,它接收事件来描绘自己。如果自定义窗体,就要考虑到接收这样的事件。
Sizing:为了更好的resize窗体和子窗体,建议用sizers。
Idle Time Processing and UI
Updates:系统在空闲向窗体发送wxEvt_IDLE,这个可以利用来更新窗体。
(四)window构造和析构:
创建要new在堆上,你想想,你如果在frame的构造函数中,在栈上创建一个button,而frame实际是保存的button地址,那么这个函数一出,这个button就失效了。
a 方法:wxButton* button = new wxButton(parent, wxID_OK);
b 方法:wxButton* button = new wxB
button-&Create(parent, wxID_OK); //
Create和带参数的构造函数的参数表一般是一致的。
用b方法的原因是:你可能需要先设置什么东西,比如button的style等,再Create之。例子件P44
(2)“Top-Level
Window”&&&&&&&
“non Top-Level Window”
a. Top的这种window才能够以parent为NULL来创建。典型的是frame和dailog!!
b. 而创建出来的窗体的可见性为:
Top-Level的:默认不可见,你要显示调用Show(true)来显示
非Top的:默认可见,你要显示调用Show(false)来隐藏
2、析构:————
只有两种需要你销毁:一是Top-Level的窗体,如果你想销毁,你可以在wxApp的析构函数中调用"窗体.Destroy()",
当然你可以啥都不做,反正程序退出后就完了。
二是临时使用的窗体,比如标准Dialog,你如果是在堆上创建的,那么先去找它有没有提供Destroy()(或相关的),如果没有,你可以直接用
delete销毁。
具体如下:
wxApp:你的MyApp类的对象,是不用你析构的,这东西全在IMPLEMENT_APP(MyApp)中写好了。
wxFrame:你的MyFrame/MyDialog这类top-level的窗体,不要显示的用delete操作符,而调用该对象的
Destroy()函数,这是因为wxWidgets有自己的考虑,比如各种窗体的delete效果不同,比如一些窗体的Destroy()只是把它放入
待delete的队列。总之,系统有自己的安排,你不要用delete。但记得不用的时候,用Destroy()。
wxButton:这类子窗体,都是由父窗体调用delete析构的,所以不用你显示的delete。
标准Dialog: 如果在堆上创建,先找其有没有Destroy(),没有你可以放心的delete.
(五)Window样式 :
有两种样式分类:
style: 可以用 | 连接的众多样式
extra: 不与style同存在的样式(好像是这个意思),这个要通过SetExtraStyle来设置。
二、基本的窗体类
这里从P45开始,只有常用的窗体类。高级的见12章“Advanced Window Classes,”和Appendix E,
“Third-Party Tools for wxWidgets.”
这一节作为查阅的内容!!!!
简述如下:
(一)分类: 见P45-46
这里给个体系的概念:
记住,基类窗体,主要的有三个,然后具体使用的窗体类,继承自这三个。
1、wxWindow:老祖宗,其上面的基类,好像就只有wxEvtHandler和wxObject了。
2、wxControl:继承自wxWindow
3、wxControlWithItems:继承自wxControl
像frame,不是控件,因为不作为给用户控制的部件,它直接继承自wxWindow
像button,是控件,但没有多个子项,它继承自wxControl
像wxListBox,是控件,并有多个子项,它继承自wxControlWithItems
一些例外:像wxMenu,就直接继承自wxEvtHandler,所以Menu不是窗体。但wxMenuBar是窗体。
(二)主要说了什么:
介绍每一个window的时候,主要是三个方面:
b. 能产生什么事件(当然,首先的处理者是它本身)
c. 成员函数
这三个和manual中的格式相似。
2、分别说说:
(1)、窗体window和控件control:
前者指大概形状为长方型,可以resize,可以绘制自己,可以等隐藏自己...的实体。
后者指窗体的一种,即控件 ———— 接受控制的!! :能够显示数据,并能够接受鼠标和键盘的刺激,而产生事件。
(2)、Top-Level 窗体:
这类窗体有三个基本的:wxFrame, wxDialog 和 wxPopupWindow。
还有两个,专门处理多文档:wxMDIParentFrame 和 wxMDIChildFrame。
再加一个:wxMiniFrame ,作用是一般作为子窗体,允许其显示caption!比如source
insight中,每打开一个文件,就在一个子窗体里面,这些窗体,可以有caption,在window上还可以外表像top-level窗体一样有
他们的特征是:独立的在桌面上显示(不是子窗口),即可以有自己的窗口管理器。
提醒的是:这个和wxApp::GetTopWindow
意义不同。这个函数,多半是返回你创建的第一个frame或dialog。
1)、wxFrame:
一个frame通常是我们最先创建的,然后再加其他的窗体为frame的子窗体。P56给处了一个frame和子窗体的图。
其中,client area的组织方法有:
a. sizer: 复杂的组织
b. splitter window:简单的分割
另外:&&&&&&&&&&&&
直接支持不规则的frame!! 如果以后要做不规则的,就像一些播放器那样,那么看P61
2)、wxMiniFrame:如上所述,图在P63
3)、wxMDIParentFrame 和 wxMDIChildFrame:
这个的效果,在windows上,就是source insight的那种,一个编辑的parent frame里,可以有多个child
frame,他们都可以最大化到整个parent frame,也可以缩小。并且,还有个效果,菜单栏可以随着child
frame的不同而改变。
效果在linux上,不同就是,child frame是以tab形式显现的,不能够缩小。
这个很强大的,如果需要这么强大的功能,见P63
4)、wxDialog:对话框的元素只有两种:“非top-level的窗体” 和
“控件”。menu是frame的一部分,通过frame的函数来设置,所以当然不可能在dialog中存在。
a. 对话框的意思就是,这个是用于frame外,和用户对话的。
b. 销毁对话框?
恩,这个得看是Modal的,还是Modaless的,前者用ShowModal()来显示,后者用Show()来显示,区别是前者
一直获得焦点,直到你dismiss它。因此,这就和大多数窗体不一样了 ————
它的生存期可以就在一个函数内部,因为与用户交互完了,就可以销毁了。所以,你可以new一个,也可以在栈上创建。new后,你同样不能用delete,
因为wxWidgets自己对new和delete做了手脚,我估计是重载了。所以,它的规矩是调用Destroy()或Close()来“销毁”。但是
对于栈上的对象,它没法做手脚,这个按照一般的栈上的对象那样,由C++自己销毁。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 怎么做奶茶店收支报表 的文章

 

随机推荐