wxWidgets で作成されたアプリケーション ウィンドウを wxWebView で塗りつぶしたいと考えています。wxWebView サンプルを確認した後、作成者は wxFrame を作成し、そこに wxBoxSizer が含まれ、wxWebView がそれに直接追加されました。ただし、アプリケーションで wxSingleChoiceDialog を使用したいので、私が知る限り、それは、ダイアログの親として使用する wxPanel のようなものを含める必要があることを意味します (コンストラクターへの最初の引数は、タイプ wxWindow の「親」です) )。したがって、私のアプリケーションでは、wxFrame に wxPanel を配置し、wxPanel の wxBoxSizer を設定して wxWebView を含めます。残念ながら、wxWebView はアプリケーション ウィンドウ全体に収まらなくなりました。その理由はわかりません。作成しようとしているアプリケーションの簡単な例を次に示します。
main.h
#ifndef MAIN_H
#define MAIN_H
#include <wx/wx.h>
class MyApp : public wxApp
{
public:
virtual bool OnInit();
};
DECLARE_APP(MyApp)
#endif
main.cpp
#include "main.h"
#include "mainframe.h"
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
MainFrame *mainFrame = new MainFrame(wxT("Content Creator"));
mainFrame->Show(true);
return true;
}
mainframe.h
#ifndef MAINFRAME_H
#define MAINFRAME_H
#include <wx/wx.h>
#include <wx/webview.h>
class MainFrame : public wxFrame
{
public:
wxPanel *panel;
wxBoxSizer *topsizer;
wxMenuBar *menubar;
wxMenu *file;
wxWebView *webView;
wxString editorURL;
MainFrame(const wxString& title);
void initMenu();
void initEditor();
};
#endif
メインフレーム.cpp
#include "mainframe.h"
MainFrame::MainFrame(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(800,600))
{
panel = new wxPanel(this, -1);
topsizer = new wxBoxSizer(wxVERTICAL);
panel->SetSizer(topsizer);
initMenu();
initEditor();
}
void MainFrame::initMenu()
{
menubar = new wxMenuBar;
file = new wxMenu;
//file->Append(wxID_EXIT, wxT("Quit"));
menubar->Append(file, wxT("File"));
SetMenuBar(menubar);
}
void MainFrame::initEditor()
{
editorURL = "file:///C:/Users/kenwood/Desktop/MarkCreator2/ckeditor/samples/editor.html";
webView = wxWebView::New(panel, wxID_ANY, editorURL);
topsizer->Add(webView, 1, wxEXPAND | wxALL, 0);
}
これが作成するアプリケーションのスクリーンショットです:スクリーンショット
この wxWebView をアプリケーション ウィンドウ全体に表示させる方法を知っている人はいますか (または、少なくとも、ここに何かが明らかに欠けているため、ウィンドウに収まらない理由を知っていますか)。wxWebView を作成して、ウィンドウ サイズと同じサイズを指定できることはわかっていますが、ユーザーが画面のサイズを変更すると、Web ビューはアプリケーション ウィンドウと同じサイズではなくなります。
ありがとう。
編集:
また、wxWidgets バージョン 2.9.4 を使用しています
編集2:
initMenu() の前に initEditor() を呼び出すと、目的の結果が得られるようです (ただし、その逆ではありません)。この理由が何であるかを知っている人はいますか?可能であれば、最初に initMenu() を呼び出したいと思います。