多个wxGrid消息同时处理时识别的办法
来源:互联网 发布:英伦风的男装品牌 知乎 编辑:程序博客网 时间:2024/06/05 16:07
/*************************************************************** * Name: IndexXApp.h * Purpose: Defines Application Class * Author: xiangyang () * Created: 2015-04-25 * Copyright: xiangyang () * License: **************************************************************/#ifndef INDEXXAPP_H#define INDEXXAPP_H#include <wx/app.h>class IndexXApp : public wxApp{ public: virtual bool OnInit();};#endif // INDEXXAPP_H
写了3个wxGrid放置在一个窗口里,希望点击一个wxgrid时响应当前表格的消息
头文件部分
#ifndef INDEXXMAIN_H#define INDEXXMAIN_H#ifndef WX_PRECOMP #include <wx/wx.h>#endif#include "IndexXApp.h"#include <wx/button.h>#include <wx/statline.h>#include <wx/grid.h>#include <wx/clipbrd.h>class IndexXDialog: public wxDialog{ public: IndexXDialog(wxDialog *dlg, const wxString& title); ~IndexXDialog(); protected: enum{ id_grid_zhu=1000, id_grid_ci, id_grid_index, }; wxGrid *g_zhu,*g_ci,*g_index; private: void OnClose(wxCloseEvent& event); void ongridzhuselect(wxGridEvent &ev); void ongridciselect(wxGridEvent &ev); const int g_column=3, g_rows=100; DECLARE_EVENT_TABLE()};#endif // INDEXXMAIN_H
cpp部分:
/*************************************************************** * Name: IndexXApp.cpp * Purpose: Code for Application Class * Author: xiangyang () * Created: 2015-04-25 * Copyright: xiangyang () * License: **************************************************************/#ifdef WX_PRECOMP#include "wx_pch.h"#endif#ifdef __BORLANDC__#pragma hdrstop#endif //__BORLANDC__#include "IndexXApp.h"#include "IndexXMain.h"//(*AppHeaders#include <wx/image.h>//*)IMPLEMENT_APP(IndexXApp);bool IndexXApp::OnInit(){ IndexXDialog* dlg = new IndexXDialog(0L, _("wxWidgets Application Template")); dlg->SetIcon(wxICON(aaaa)); // To Set App Icon dlg->Show(); return true;}
CPP部分:
/*************************************************************** * Name: IndexXMain.cpp * Purpose: Code for Application Frame * Author: xiangyang () * Created: 2015-04-25 * Copyright: xiangyang () * License: **************************************************************/#ifdef WX_PRECOMP#include "wx_pch.h"#endif#ifdef __BORLANDC__#pragma hdrstop#endif //__BORLANDC__#include "IndexXMain.h"#include <wx/datetime.h>#include <wx/url.h>BEGIN_EVENT_TABLE(IndexXDialog, wxDialog) EVT_CLOSE(IndexXDialog::OnClose) EVT_GRID_CELL_LEFT_CLICK(IndexXDialog::ongridzhuselect) EVT_GRID_CELL_LEFT_CLICK(IndexXDialog::ongridciselect)END_EVENT_TABLE()IndexXDialog::IndexXDialog(wxDialog *dlg, const wxString &title) : wxDialog(dlg, -1, title,wxDefaultPosition,wxDefaultSize,wxCLOSE_BOX|wxCAPTION|wxMINIMIZE_BOX|wxMAXIMIZE_BOX|wxRESIZE_BORDER){ this->SetSizeHints(500, 400); g_zhu=new wxGrid(this,id_grid_zhu,wxDefaultPosition,wxDefaultSize); this->Layout(); g_zhu->CreateGrid(g_rows,g_column); g_ci->CreateGrid(g_rows,g_column); g_index->CreateGrid(g_rows,g_column); for(int i=0; i<g_column; i++) { g_zhu->SetCellRenderer(0,i,new wxGridCellBoolRenderer); g_zhu->SetCellEditor(0,i,new wxGridCellBoolEditor); g_zhu->SetCellBackgroundColour(0,i,wxColour(255, 127, 127)); g_ci->SetCellRenderer(0,i,new wxGridCellBoolRenderer); g_ci->SetCellEditor(0,i,new wxGridCellBoolEditor); g_ci->SetCellBackgroundColour(0,i,wxColour(255, 127, 127)); }}IndexXDialog::~IndexXDialog(){}void IndexXDialog::OnClose(wxCloseEvent &event){ Destroy();}void IndexXDialog::onpaint(wxPaintEvent &ev){ wxPaintDC dc(this); PrepareDC(dc);}void IndexXDialog::onerasebackground(wxEraseEvent &ev){ wxImage image; wxBitmap m_background; wxImage::AddHandler(new wxPNGHandler); if(image.LoadFile("1.png",wxBITMAP_TYPE_PNG)) { m_background=wxBitmap(image); } if(m_background.Ok()) { wxSize sz=GetClientSize(); wxRect rect(0,0,sz.x,sz.y); if(ev.GetDC()) { tilebitmap(rect,*(ev.GetDC()),m_background); } else { wxClientDC dc(this); tilebitmap(rect,dc,m_background); } } else ev.Skip();}bool IndexXDialog::tilebitmap(const wxRect &rect,wxDC &dc,wxBitmap &bitmap){ int w=bitmap.GetWidth(); int h=bitmap.GetHeight(); for(int i=rect.x; i<rect.x+rect.width; i+=w) { for(int j=rect.y; j<rect.y+rect.height; j+=h) { dc.DrawBitmap(bitmap,i,j); } } return true;}void IndexXDialog::oncal(wxCommandEvent &ev){}void IndexXDialog::onindexcopy(wxCommandEvent &ev){ wxString s=""; for(int i=1; i<g_index->GetRows(); i++) { ///行数 for(int i1=0; i1<g_index->GetCols()-1; i1++) { s=s+g_index->GetCellValue(i,i1); s=s+"\t"; } s=s+g_index->GetCellValue(i,g_index->GetCols()-1); s=s+"\n"; } if(wxTheClipboard->Open()) { if(wxTheClipboard->IsSupported(wxDF_UNICODETEXT)) { wxTheClipboard->SetData(new wxTextDataObject(s)); } wxTheClipboard->Close(); }}void IndexXDialog::ongridzhuselect(wxGridEvent &ev){ if(ev.GetId()!=id_grid_zhu) { ///使用的控件ID来识别是否处理该消息 ev.Skip(); } else { int col=ev.GetCol(); int cur_col=g_zhu->GetCols(),cur_rows=g_zhu->GetRows(); for(int i=0; i<cur_col; i++) { i==col ? g_zhu->SetCellValue(0,i,"1"):g_zhu->SetCellValue(0,i,""); } ev.Skip(); }}void IndexXDialog::ongridciselect(wxGridEvent &ev){ if(ev.GetId()!=id_grid_ci) {<pre name="code" class="cpp">///使用的控件ID来识别是否处理该消息ev.Skip(); } else { if(ev.GetId()!=id_grid_ci) ev.Skip(); int col=ev.GetCol(); int cur_col=g_ci->GetCols(),cur_rows=g_ci->GetRows(); for(int i=0; i<cur_col; i++) { i==col ? g_ci->SetCellValue(0,i,"1"):g_ci->SetCellValue(0,i,""); } ev.Skip(); }}
0 0
- 多个wxGrid消息同时处理时识别的办法
- Android Handler Message 在使用多个Handler时,接收不到消息的处理办法
- Eclipse分栏同时显示多个代码文件的办法
- Delphi7同时保证多个Activex控件可用的办法
- 同时打开多个vc的办法(xp下)
- RAID5同时坏两块硬盘的处理办法
- 无法识别插件的处理办法(转载)
- 桌面图标变成不可识别的处理办法
- wxGrid的用法
- 单击事件和双击事件同时存在的处理办法
- 能够同时处理多个客户的服务器
- 处理同时进行多个网络请求的方法
- 一台电脑同时运行多个tomcat设备办法
- 多个视图重叠时,mouseEntered事件被多个视图同时处理的问题
- Eclipse 无法识别插件的处理办法(转载)
- Ajax 同时处理多个异步请求
- 同时处理多个window.onload事件
- sed同时处理多个文件
- 欢迎使用CSDN-markdown编辑器
- 【重构】ER图生成数据库文档
- 安卓非自定义标题栏实现“返回”按钮
- [Python]基本概念与操作3(针对Python2)
- 第八周 【项目1-实现复数类中的运算符重载】3
- 多个wxGrid消息同时处理时识别的办法
- leetcode Excel Sheet Column Number
- win7电脑如何阻止陌生U盘启动?
- ListView (4)滚动事件/上拉刷新/下拉刷新的实现
- MyEclipse设置编码方式
- I2C驱动
- 4.2
- 2014年终总结–家
- 网易新闻(ListView部分)