2

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() を呼び出したいと思います。

4

2 に答える 2