0
何かを作成するのにGTK3を使っています。チュートリアルでは、gtk_init関数を呼び出す必要がありますが、main関数から呼び出す必要はありません - C++
#include <gtk/gtk.h>
int main(int argc, char* argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
gtk_window, gtk_container etc...
このメイン機能外の図面を処理するメインプログラムを作成したいと考えています。だから私は上記のコードを削除し、新しいものを作る:
main.cppに今
#include "MainProgram.h"
int main(int argc, char* argv[])
{
MainProgram mainProgram;
mainProgram.run(); // the magic is now happening inside this run method
MainProgram.h
#include <gtk/gtk.h>
#include "MainProgram.h"
class MainProgram
{
public:
MainProgram();
~MainProgram();
void run();
void initSystems();
...other not so important code goes inside
最後に、MainProgram.cpp
#include "MainProgram.h"
MainProgram::MainProgram()
{
...
}
MainProgram::~MainProgram(){}
void MainProgram::run()
{
// about that magic we were talking about
initSystems();
}
void MainProgram::initSystems(){
gtk_init(&argc, &argv); // here it is.
_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(_window), GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(_window), _screenWidth, _screenHeigth);
gtk_window_set_title(GTK_WINDOW(_window), "Fill & stroke");
// ************** FIX OF THE PROBLEM
gtk_widget_show_all(_window); // DIDNT CALL
gtk_main(); // These two functions
}
プログラムをコンパイルしようとすると、次のようになります。
g++ main.cpp MainProgram.cpp `pkg-config --cflags --libs gtk+-3.0`
は、私は次のような警告が出ます:
MainProgram.cpp: In member function ‘void MainProgram::initSystems()’:
MainProgram.cpp:22:12: error: ‘argc’ was not declared in this scope
gtk_init(&argc, &argv);
^
MainProgram.cpp:22:19: error: ‘argv’ was not declared in this scope
gtk_init(&argc, &argv);
が、この内main.cppにからメイン関数からこれらのアドレスを渡すための簡単な方法はありますか?私のコードをよりきれいに見せて、main.cppファイルをオーバーロードしないようにしようとしています:)
'argc'と' argv'をすべて 'MainSystem()'に渡す必要があります。あるいは、両方の引数に 'NULL'を渡してください。 GTL +がそれ自身のコマンドライン引数のセットをチェックするだけです。GLib APIを使用するつもりがない場合は、それを破棄します。いずれにせよ、選択はあなたのものです。これが何を意味するのか分からなければ、GTK +を学ぶ前にC++を学ぶ必要があります。 – andlabs
@andlabs MainSystem()とは何ですか?それを教えてもらえますか? –
これはタイプミスです。私は 'initSystem()'を意味しました。 – andlabs