我正在使用 wxWidgets 和 Visual Studio 2022 (C++) 来开发 Windows 应用程序。我希望在窗口中显示,但当我尝试使用以下代码使用各种字体时:
std::string fonts_name[8] = {"Calibri Light", "Calibri", "Cambria Math", "Cambria", "Candara Light", "Candara", "Consolas", "DFKai-SB"};
// ...
stat_txt_test = new wxStaticText*[8];
for (long long i = 0; i != 8; ++i) {
stat_txt_test[i] = new wxStaticText(this, (long long)1000 + i, "", wxPoint(i * 15, i * 15), wxSize(10, 10), wxTE_READONLY);
stat_txt_test[i]->SetFont(fonts[i]);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用"a"(ascii 字符) 代替,结果是
,这符合预期。
现在我猜测 UTF-16 在我的代码中不能很好地工作。然而,汉字却表现得很好。这是 的 unicode 。
我应该如何修改我的代码才能完成这项工作?
我希望能够在一个帧中显示Notebook和TxtCtrlwx小部件.下面是一个改编自wxpython wiki的例子; 是否有可能改变他们的布局(可能有类似的东西wx.SplitterWindow)来显示Notebook同一帧下面的文本框?
import wx
import wx.lib.sheet as sheet
class MySheet(sheet.CSheet):
def __init__(self, parent):
sheet.CSheet.__init__(self, parent)
self.SetLabelBackgroundColour('#CCFF66')
self.SetNumberRows(50)
self.SetNumberCols(50)
class Notebook(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(600, 600))
menubar = wx.MenuBar()
file = wx.Menu()
file.Append(101, 'Quit', '' )
menubar.Append(file, "&File")
self.SetMenuBar(menubar)
wx.EVT_MENU(self, 101, self.OnQuit)
nb = wx.Notebook(self, -1, style=wx.NB_BOTTOM)
self.sheet1 = MySheet(nb)
self.sheet2 = MySheet(nb)
self.sheet3 = MySheet(nb)
nb.AddPage(self.sheet1, "Sheet1")
nb.AddPage(self.sheet2, "Sheet2")
nb.AddPage(self.sheet3, "Sheet3")
self.sheet1.SetFocus()
self.StatusBar()
def StatusBar(self): …Run Code Online (Sandbox Code Playgroud) 我有一个wx.Toolbar,我想让按钮更大.我搜索过,似乎无法找到有关如何执行此操作的具体文档.
我也想知道这将跨平台转换得多好; OSX上的按钮和图标会发生什么?
我今天决定熟悉wxWidgets.我下载了2.8.9版(当前版本),并以所有需要的模式编译了库.
我能够开箱/运行带有wxWidgets的样品.但是,当我使用/ Za编译(即禁用语言扩展)时,即使是最小的wxWidgets样本,我也会遇到100多个构建错误.
我无法找到有关此问题的任何文档.我可以定义一些能够将wxWidget内部转换为符合标准的东西(至少就VC++的合规性而言)吗?
也许我在构建原始库时做错了什么......有没有人以前遇到过这个"问题"?
谢谢!
编辑:我忘了提到我正在使用VC++ 9.
此外,这是前几个错误:
------ Build build:项目:minimal,配置:Unicode Debug Win32 ------
编译...
minimal.cpp
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(69):错误C2143:语法错误:缺少')'在'*'之前
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(69):错误C2143:语法错误:缺少';' 在'*'之前
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(69):错误C2059:语法错误:')'
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(69):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(810):错误C2146:语法错误:缺少';' 在标识符"SCMPFUNC"之前
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(810):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(810):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(811):错误C2146:语法错误:缺少';' 在标识符"SCMPFUNC"之前
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(811):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int
c:\ wxWidgets-2.8.9\include\wx/dynarray.h(811):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int
编辑:它看起来像是由使用_cdecl引起的第一个错误.看起来defs.h只检查是否定义了__VISUALC__.关于迂腐的一切......
我有一个只有一个孩子的wx.Frame.在设置子项的wx.Sizer时,我可以使用wx.SHAPED标志,该标志可以保持子项的宽高比.但是,Frame的纵横比仍然具有完全的自由度,并且会在孩子未使用的区域留下空白区域.
如何在调整大小期间锁定wx.Frame的宽高比?
我的应用程序有一个类似shell的控制台,在每个命令后都会提示">>>".问题是每次我有我的shell WriteText(">>>")时,它还会附加一个新行.用户可以退格到正确的行,但这看起来很糟糕.有什么办法解决吗?
这是一个令人尴尬的问题,但为什么这条线路有效而另一条线路没有呢?
工作线:
use strict;
use warning;
use Wx qw(:everything);
my $dialog = Wx::MessageDialog->new(
$self,
"About test\n" . "Version 0.01\n",
"About Test",
wxOK | wxCENTRE
);
Run Code Online (Sandbox Code Playgroud)
非工作线:
use strict;
use warning;
use Wx;
my $dialog = Wx::MessageDialog->new(
$self,
"About test\n" . "Version 0.01\n",
"About Test",
wxOK | wxCENTRE
);
Run Code Online (Sandbox Code Playgroud)
来自非工作行的错误消息:
Bareword "wxOK" not allowed while "strict subs" in use at test.pl line 123.
Bareword "wxCENTRE" not allowed while "strict subs" in use at test.pl line 123.
BEGIN not safe after errors--compilation …Run Code Online (Sandbox Code Playgroud) 可能重复:
调试/发布差异
我想知道调试构建和发布版本意味着什么.两者之间有什么区别.
我应该使用哪一个(我的意思是每个人的合适条件).实际上我正在使用的构建知道如果在visual studio中制作简单的c ++项目.[如果我不更改任何项目设置]
我问这个是因为我试图使用wxwidges 2.9.4制作gui,并且他们给出了添加所需.lib的不同情况.这些是
release ANSI static
debug ANSI static
release Unicode static
debug Unicode static
请详细解答.
我试图在一个动作后的初始点滚动一个列表,其结果是删除所有项目和重新填充.
我想记录滚动位置,然后设置回它但GetScrollPos由于某种原因总是返回0.
我一直在查看所有的ListCtrl方法,但似乎找不到方法,也注意到GetScrollPos不存在,但它也没有引发异常.
我正在尝试捕获由'。'包围的任何1-2位数字。或一行的开头/结尾。
例如
1.0.4.11
71.11.11.11
0.11.0.0
有效且:
无效
现在,我可以(?<=\.|^)\d{1,2}]?(?=\.|$)正确捕获数字,但也可以捕获11 ..或1.11等组。
我需要扩展此正则表达式以基本验证它是否始终采用xxxx格式,其中x是1-2位数字。
有关更多信息,此正则表达式将使用wxWidgets正则表达式类运行,但我相信这是标准的正则表达式解析器。
注意
对于使用它作为参考的任何人...使用wxWidgets时,必须使用wxRE_ADVANCED标志构造wxRegex类,因为默认情况下,它使用基本/快速实现,该实现不包括该表达式中使用的数量词(?*)。