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输出串口输出:
可以用于不能使用即时窗口的情况。
===========================================
后续坑,后续再发。。。