wxWidgets踩坑录

1、创建NoteBook后默认设置某个Panel为默认显示直接在formbuilder勾选此panel的AUI中的在这里插入图片描述
2.隐藏在NooteBook中创建的Panel,然后再添加回去并打开。

m_notebook->RemovePage( 2 ); // 索引从 0 开始,Panel 3【隐藏】
m_notebook->InsertPage( 2, m_panel4, "Register Info" );//【添加回去】
m_notebook->SetSelection( 2 );//【打开】

3.更改对话框的Title,再构造函数中加入

this->SetTitle(_( "New Title" ));

在这里插入图片描述

4.创建一个新的fbp时,确保其相关的.h文件和.cpp的文件名与fbp中的file处的名字一样,不然修改fbp后,关联不到,不会修改.h和.cpp文件内容,效果就不会实现:

在这里插入图片描述在这里插入图片描述
5.这个坑是上面4做完后发现的,(是要做一个程序启动界面splash,我是在一个Panel上进行自定义绘制背景图和文本,这样的话,文本就可以通过代码去更改,之前是直接做在背景图上的,不方便修改。)
开始实现方式如下:

 void PANEL_SPLASH::OnPaint( wxPaintEvent& event )
 {
    wxPaintDC         dc( this );
 	dc.DrawBitmap( m_background, 0, 0, true );//背景没问题,这行可以忽略
 	//有问题的是下面
 	dc.SetTextForeground( *wxWHITE );
 	dc.SetFont(wxFont( 45, wxFONTFAMILY_MODERN, wxFONTSTYLE_NORMAL, 	wxFONTWEIGHT_MEDIUM, false, wxT( "SimHei" ) ) );
 	 dc.DrawText( "\n\n 测试\n 文本\n ");
 }
                         

问题:当Windows显示设置里边的缩放切换后,文本会变大或缩小,因为字体大小我设置的为固定45,当缩放切换后,背景图不会受影响,但是这个45不再是之前的45,就会导致比背景图大或者小。
解决办法:简而言之,就是获取当前像素点的值,根据默认像素的大小进行比例换算调整45这个值。
在这里插入图片描述
其他代码基本不变,自行补充完整。
解决上面问题的时候发现一个有用的函数

OutputDebugStringA

举例:

wxSize dpi = this->GetDPI();
 OutputDebugStringA( wxString::Format( "DPI: %d x %d \n", dpi.GetWidth(), dpi.GetHeight() ) );

会在VS输出串口输出:
在这里插入图片描述
可以用于不能使用即时窗口的情况。

===========================================

后续坑,后续再发。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值