Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [wx] Параметры окна (фрейма), приватные члены (сериализация) 
V
    Опции темы
SolRus
Дата 30.8.2011, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 6.8.2011

Репутация: нет
Всего: нет



подскажите, как в wxWidgets:
1) заставить создаваться главное окно(фрейм) не посередине экрана?
создается так:
WindowMain * frame = new WindowMain(NULL, -1, _("Первое окно"), wxPoint(150,50),wxSize(400,300));

пересмотрел вроде как полностью весь класс и не понял :(
вот к примеру (кстати накой их две делать было?)
Код

void Center(int dir = wxBOTH)
void Centre(int dir = wxBOTH)

/*  centering into frame rather than screen (obsolete) */
#define wxCENTER_FRAME          0x0000
/*  centre on screen rather than parent */
#define wxCENTRE_ON_SCREEN      0x0002
#define wxCENTER_ON_SCREEN      wxCENTRE_ON_SCREEN

enum wxOrientation
{
    /* don't change the values of these elements, they are used elsewhere */
    wxHORIZONTAL              = 0x0004,
    wxVERTICAL                = 0x0008,

    wxBOTH                    = wxVERTICAL | wxHORIZONTAL,

    /*  a mask to extract orientation from the combination of flags */
    wxORIENTATION_MASK        = wxBOTH
};


я понимаю что можно после создания можно поставить через SetPosition. но как во время создания?

2) пересмотрел все что есть и не нашел метода который бы возвращал (и устанавливал) все переменные (в объекте) данные окна, т.е. на шрифты курсоры положение ,  размер на экране, свернуто развернуто и т.п. Можно сказать на все приватные данные.... или такого не бывает? простое присвоение кидает ошибку.
 smile 

PM MAIL Skype   Вверх
Amp
Дата 30.8.2011, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



А твой MainWindow передает параметры position и size в конструктор базового класса (wxFrame)? И к сведению - то, что ты указываешь окну позицию и размер, носит рекомендательный характер. В какое место и с какими размерами поместить окно решает менеджер окон операционной системы, которую ты используешь.

Шрифты там стандартные, получаешь через wxSystemSettings, позицию курсора через wxGetMousePosition, для прочего IsIconized/IsMaximized/IsFullScreen и т.п.
PM MAIL   Вверх
SolRus
Дата 30.8.2011, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 6.8.2011

Репутация: нет
Всего: нет



Amp,
1. конструктор
Код

class WindowMain : public wxFrame 
{
public:
    WindowMain( wxWindow* parent, wxWindowID id, const wxString& title, 
        const wxPoint& pos, const wxSize& size, 
        long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
};
позиция только после создания можно изменить.. во время создания не хочет. к чему здесь менеджер окон то?

2. а нету такого метода чтоб сразу все это получить? (позиция курсора не обязательно, а вот остальное связанное с настройкой окна нужно - внешний вид, но без хендлов и т.п.). я понимаю что можно все методы переискать и присвоить, хотелось бы один метод, как бы сериализация объекта.

Это сообщение отредактировал(а) SolRus - 30.8.2011, 20:11
PM MAIL Skype   Вверх
Amp
Дата 30.8.2011, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



SolRus, декларация конструктора для меня бесполезна smile Нужна реализация - убедись, что она выглядит примерно так:
Код

WindowMain(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(parent, id, title, pos, size, style)
{
 ....
}

т.е., что pos и size передаются в конструктор базового класса. Про менеджер окон я сказал просто к сведению.

Нет, все сразу не получишь. На моей памяти единственный контрол в wxWidgets, который позволял сериализовать/десериализовать настройки своего вида в строку - это wxAuiManager (методами Load/SavePerspective).
PM MAIL   Вверх
SolRus
Дата 30.8.2011, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 6.8.2011

Репутация: нет
Всего: нет



Amp, да инициализация фрейма такая как ты и написал. оно  почему то центрирует его
использую версию 2.9.1 может ошибка из-за того что не релизная?  smile 

Цитата(Amp @ 30.8.2011,  20:25)
Нет, все сразу не получишь. На моей памяти единственный контрол в wxWidgets, который позволял сериализовать/десериализовать настройки своего вида в строку - это wxAuiManager (методами Load/SavePerspective).

это печально :( и прискорбно)

Это сообщение отредактировал(а) SolRus - 30.8.2011, 20:43
PM MAIL Skype   Вверх
Amp
Дата 30.8.2011, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Цитата(SolRus @  30.8.2011,  20:38 Найти цитируемый пост)
да инициализация фрейма такая как ты и написал. оно  почему то центрирует его
использую версию 2.9.1 может ошибка из-за того что не релизная?

Если можешь - выложи минимальный пример кода, который можно собрать и проверить.
PM MAIL   Вверх
SolRus
  Дата 30.8.2011, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 6.8.2011

Репутация: нет
Всего: нет



блин ой я дурень. вощем создавал через wxFormBuilder и незаметил что я наклацал для главного окна 
this->Centre( wxBOTH );
а когда писал мин код руками получилось все правильно
Код

#include <wx/wx.h>
class MyApp : public wxApp
{
public:
   virtual bool OnInit();
};

class WindowMain : public wxFrame 
{
public:
    WindowMain( wxWindow* parent, wxWindowID id, const wxString& title, 
        const wxPoint& pos, const wxSize& size, 
        long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
    ~WindowMain();
};

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
    if (!wxApp::OnInit() ) return false;
    WindowMain * frame = new WindowMain(NULL, wxID_ANY, _("Первое окно"), wxPoint(150,50),wxSize(400,300));
    frame->Show(); 
     return true;
}

WindowMain::WindowMain( wxWindow* parent, wxWindowID id, const wxString& title, 
                    const wxPoint& pos, const wxSize& size, long style )
                        : wxFrame( parent, id, title, pos, size, style ) {}
WindowMain::~WindowMain() {}

Вообщем учитывая что сразу получить нельзя все свойства окна, то тема ичерпана.
ps: тебе спасибо  smile 
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.