windows程序转linux程序注意点(c++、wxWidegts)

界面默认状态属性

wxWidegts对于linux和windows下的默认属性有很多是不一样的。所以,通过wxWidegts写的界面程序在跨平台的情况下,请尽量把所有界面属性都写全了。

另外对于一些界面初始化风格,有些是windows下特有的。
如窗口类型中的:
wxSTATIC_BORDER
wxTRANSPARENT_WINDOW
wxALWAYS_SHOW_SB
wxSTATIC_BORDER等等

在跨平台进行开发的时候,也需要把这些内容特定的分开。

wxString初始化

在默认的c++程序中,windows字符串的默认编码格式是GBK(当然和IDE的设置和运行环境也有一定关系),在linux下却是UTF-8。
在程序中,默认的使用了wxString(“你好”);这种默认的构造函数。
这时候,在调试程序的过程中发现,界面上的字符串并没有正常显示。通过GDB调试,发现字符串已经正常初始化,已经有内存地址,但是内容却是缺失的。
通过对wxString官方文档,找到了可以指定编码格式的构造方法。在这里插入图片描述
所以在linux下,需要通过wxString(“你好”, wxConvUTF8);指定UTF-8编码格式来初始化。
当然也可以通过wxString(wxT(“你好”))这种方式来格式化字符串。

为了方便,可以通过ifdef的方式来区分操作系统,构造wxString的内容。
如:

#ifdef _WINDOWS
    return wxString(m_string.c_str());
#else
    return wxString(m_string.c_str(), wxConvUTF8);
#endif

wxRadioBox控件注意事项

由于我的程序是由键盘来控制的,不使用鼠标。通过捕获键盘左右事件调用SetFocus()接口,来切换wxRadioButton。
这边可以看到,调用SetFocus()接口后,wxRadioButton获取到了焦点,但是黑色光标却没有正常移动到对应的Button上。
这时候,对wxRadioBox控件调用GetSelection()接口的时候,他的返回值仍是0,表示焦点还在第一个button上。无论是显示,还是值都出现了问题。
但是,在windows下SetFo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值