wxwidgets的字符串转换的确让人发狂
c++ string如何转换为wxString就需要耐心。
这里是一些文章:
http://wiki.wxwidgets.org/WxString#Converting_a_Normal_String_to_a_wxString
实际的语法是这样的:
string result="hello world";
wxMessageBox(wxString(result.c_str(), wxConvUTF8));
char* chars = "你好,世界!";
星期一, 七月 20, 2009
c string to wxstring
wxwidgets的字符串转换的确让人发狂
c++ string如何转换为wxString就需要耐心。
这里是一些文章:
http://wiki.wxwidgets.org/WxString#Converting_a_Normal_String_to_a_wxString
实际的语法是这样的:
string result="hello world";
wxMessageBox(wxString(result.c_str(), wxConvUTF8));
c++ string如何转换为wxString就需要耐心。
这里是一些文章:
http://wiki.wxwidgets.org/WxString#Converting_a_Normal_String_to_a_wxString
实际的语法是这样的:
string result="hello world";
wxMessageBox(wxString(result.c_str(), wxConvUTF8));
boost 编译如何做?
如果安装了mingw,可以用gcc来编译boost.
在编译之前,必须首先装了cybgin或mingw或者visual c++ studio 2008,免费版本的可以在网络上直接下载.
在编辑boost必须手边编译好bjam.
这个在下载的boost 1.39解压缩的包里的:boost_1_39_0\tools\jam
在安装了vs c++ studio 2008或gcc之后就可以直接运行:build_dist.bat
如果要gcc.修改文件最后一句call .\build.bat 为 call .\build.bat gcc
就可以了。
boost编译完后,可以把所有lib和头文件复制到一个指定的目录下
这个动作需要在命令行指定install 参数
编译好bjam后,复制到安装的boost根目录下.
然后可以直接运行bjam了。
标准编译的,支持多线程,用gcc编译,编译的选项包括:
注意:如果不指定toolset和prefix选项,boost默认使用 mscv编译
和c:\boost_1_39_0目录安装
--build-dir= 编译的临时文件会放在builddir里(编译完就可删除)
在编译之前,必须首先装了cybgin或mingw或者visual c++ studio 2008,免费版本的可以在网络上直接下载.
在编辑boost必须手边编译好bjam.
这个在下载的boost 1.39解压缩的包里的:boost_1_39_0\tools\jam
在安装了vs c++ studio 2008或gcc之后就可以直接运行:build_dist.bat
如果要gcc.修改文件最后一句call .\build.bat 为 call .\build.bat gcc
就可以了。
boost编译完后,可以把所有lib和头文件复制到一个指定的目录下
这个动作需要在命令行指定install 参数
编译好bjam后,复制到安装的boost根目录下.
然后可以直接运行bjam了。
标准编译的,支持多线程,用gcc编译,编译的选项包括:
bjam install --toolset=gcc --prefix="c:\boost_1_38_0" release toolset=gcc threading=multi link=static
注意:如果不指定toolset和prefix选项,boost默认使用 mscv编译
和c:\boost_1_39_0目录安装
boost编译支持的选项可以通过bjam --help 来查看。意思如下:
--build-dir=
--stagedir=
--build-type=complete 编译所有版本(确切地说是相当于:variant=release, threading=multi;
link=shared|static;runtime-link=shared)
variant=debug|release 编译什么版本(Debug or Release?)
link=static|shared 使用静态库还是动态库。
threading=single|multi 单线程还是多线程库。
runtime-link=static|shared 决定是静态还是动态链接C/C++标准库。
--with-
--show-libraries 显示需要编译的库名称
星期五, 七月 10, 2009
wxGrid如何catch key event?
在wxWidgets 2.8.10中,
想让wxGrid catch 键盘事件,比如光标,必须在建立wxGrid的时候,需要加入wxWANTS_CHARS.
Grid1 = new wxGrid(Panel1, ID_GRID1, wxDefaultPosition, wxDefaultSize, wxWANTS_CHARS, _T("ID_GRID1"));
其次:
加入事件定义,比如如下:
Connect(ID_GRID1,wxEVT_GRID_SELECT_CELL,(wxObjectEventFunction)&bonusFrame::OnGrid1CellLeftClick);
如下:
void bonusFrame::OnGrid1CellLeftClick(wxGridEvent& ev)
{
wxLogMessage(_T("Left click at row %d, col %d"), ev.GetRow(), ev.GetCol());
ev.Skip();//必须的。
}
这样就可以获得键盘光标事件了
经过一些列的需求驱动,发现了如何在wxFrame下,如何定义热键的方法
wxWidgets设计的非常的糟糕。
这里的文章很全面:
http://wiki.wxwidgets.org/Catching_key_events_globally
想让wxGrid catch 键盘事件,比如光标,必须在建立wxGrid的时候,需要加入wxWANTS_CHARS.
Grid1 = new wxGrid(Panel1, ID_GRID1, wxDefaultPosition, wxDefaultSize, wxWANTS_CHARS, _T("ID_GRID1"));
其次:
加入事件定义,比如如下:
Connect(ID_GRID1,wxEVT_GRID_SELECT_CELL,(wxObjectEventFunction)&bonusFrame::OnGrid1CellLeftClick);
如下:
void bonusFrame::OnGrid1CellLeftClick(wxGridEvent& ev)
{
wxLogMessage(_T("Left click at row %d, col %d"), ev.GetRow(), ev.GetCol());
ev.Skip();//必须的。
}
这样就可以获得键盘光标事件了
经过一些列的需求驱动,发现了如何在wxFrame下,如何定义热键的方法
wxWidgets设计的非常的糟糕。
这里的文章很全面:
http://wiki.wxwidgets.org/Catching_key_events_globally
星期三, 七月 01, 2009
如何在唯一的wxWidgets执行文件中包含资源数据的步骤
编写xrc文件,手工编写是要让人崩溃的,可以下载http://wxformbuilder.org/ 下载用来 工具制作xrc文件 wxWidgets for C++从资源文件中静态装载图像 | |
在wxWidgets中装载图像是非常容易的,但是如果将图像文件和可执行文件放到一起,在发布时只需要发布可执行文件,要实现这种功能,一般可以使用资 源文件来解决。在windows下的资源文件的源文件是*.rc,编译后叫*.res。在linux下类似,源文件为*.xrc,编译后叫*.xres。 但它们是xml格式的,要装载这种资源文件也得动态进行装载。相当于配置文件。 如果想将其直接编译进可执行文件。需要一个工具wxrc。这个工作在wxWidgets中的utils/wxrc目录中,可自己编译,mingw32-make -f makefile.gcc UNICODE=1 BUILD=release。可使用这个工具将*.xrc 生成c++代码,如果是图像,就将其转换成字符数组。然后和其它程序一起进行编译。可使用wxrc -c main.xrc -v -o main.h main.xrc的格式如下: <?xml version="1.0"?> <resource version="2.3.0.1"> <object class="wxBitmap" name="background">background.jpg</object> </resource> 生成的main.h的格式如下: // // This file was automatically generated by wxrc, do not edit by hand. // #include <wx/wxprec.h> #ifdef __BORLANDC__ #pragma hdrstop 在Visual C++的项目中添加XRC文件 虽然wxWidgets提供了XRC文件的编译器,但是把XRC的文件直接添加到Visual C++的项目中的话确没有任何效果,因为Visual C++默认能够处理的文件类型并不包含XRC文件。其实通过Visual C++的"自定义生成步骤"可以让XRC文件被自动编译:引用:
6 获得Windows应用程序实例句柄 声明如下函数:代码: extern "C" |
wxGridCellAttr SetTextColour windowXP得到异常
wxGridCellAttr SetTextColour exception
wxGridCellAttr *attrRed = new wxGridCellAttr();
attrRed->SetTextColour(wxColour(wxT("#0000ff")));
得到异常。
修改为以下语句则正常工作:
attrRed->SetTextColour(wxColour(0,0,255));
wxGridCellAttr *attrRed = new wxGridCellAttr();
attrRed->SetTextColour(wxColour(wxT("#0000ff")));
得到异常。
修改为以下语句则正常工作:
attrRed->SetTextColour(wxColour(0,0,255));
class静态成员变量link时候出现 undefined reference 错误
例子:
头文件
a.h
class a
{
public:
static string a;
}
a.cpp
// declare class static objects
string a::format;
这样就可以解决这种link出现的 undefined reference 的错误
头文件
a.h
class a
{
public:
static string a;
}
a.cpp
// declare class static objects
string a::format;
这样就可以解决这种link出现的 undefined reference 的错误
订阅:
博文 (Atom)