wxWidgets & VCL

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 3470
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: wxWidgets & VCL

Post by ONEEYEMAN » Mon Mar 02, 2015 2:25 pm

AK74 wrote:
ONEEYEMAN wrote: А можно на код взглянуть. Я так понимаю у Вас его не очень много...
Не много, но в ветке гадить не хочется. Может скинуть на файлообменник, а сюда дам линк?
Только я уже заменил wxFrame на wxWindow, стал выводится в родительском фрейме. Но тоже не так как хотелось.
Я архив получил. Вечером после работы посмотрю.
ONEEYEMAN wrote:
AK74 wrote: ОК, иконки читаются из ресурсов или файла? InitAllImageHandlers() вызывалм в начале прграммы?

Code: Select all

#include "error.xpm"
#include "info.xpm"
#include "warning.xpm"

А в конструкторе лог-фрейма:
	if (fUseIcon)
	{
		img_list = new wxImageList( 48, 48 );
        img_list->Add(wxIcon(info_xpm));
		img_list->Add(wxIcon(error_xpm));		
		img_list->Add(wxIcon(warning_xpm));
		m_Canvas->AssignImageList(img_list,wxIMAGE_LIST_NORMAL);
	wxInitAllImageHandlers();
	}
[/quote]

Вызывать wxInitAllImageHandlers() нужно в самом начале программы - конструктор приложения.

ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 3470
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: wxWidgets & VCL

Post by ONEEYEMAN » Mon Mar 02, 2015 2:27 pm

Да вот еще что: Графику писали сами или использовали RAID tool?

Попробуйте поставить wxGlade и сгенерировать это окошко с его помощью... Ну или wxFormBuilder.

AK74
Earned a small fee
Earned a small fee
Posts: 17
Joined: Thu Nov 27, 2014 5:41 pm

Re: wxWidgets & VCL

Post by AK74 » Mon Mar 02, 2015 4:17 pm

ONEEYEMAN wrote:Ну или wxFormBuilder.
Им и пользуюсь, жаль только виджетов там очень мало.
AK74 wrote:Вызывать wxInitAllImageHandlers() нужно в самом начале программы - конструктор приложения.
Ставил и в myApp::OnInit, все тоже самое

А иконки спер из samples\artprov
Win XP, Win 7-64, VS2008, VS2010, wxWidgets 3.0.2

ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 3470
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: wxWidgets & VCL

Post by ONEEYEMAN » Tue Mar 03, 2015 2:11 pm

По поводу проблемы 1 2 вопроса:
1, Для чего использовать грид сайзер? Почему не простенький бокс?
2, Лог окошко обязательно ложить в отдельный фрейм? Может его для начала просто создать как отдельный лист?

И еще: у фрейма лога родитель оскновное окно а у кнопок панель. Попробуйте положить все на панельку...

AK74
Earned a small fee
Earned a small fee
Posts: 17
Joined: Thu Nov 27, 2014 5:41 pm

Re: wxWidgets & VCL

Post by AK74 » Wed Mar 04, 2015 2:36 am

ONEEYEMAN wrote:По поводу проблемы 1 2 вопроса:
1, Для чего использовать грид сайзер? Почему не простенький бокс?
2, Лог окошко обязательно ложить в отдельный фрейм? Может его для начала просто создать как отдельный лист?
1. Веских причин не было, просто он показался наиболее гибким, функциональным что-ли. Не знаю как это объяснить.
А что есть подводные какие-то камни из-за этого? Вроде, в хелпе ничего такого не видел, а может и не увидел.

2. Самый просто пример того, что я хочу сделать это VStudio, панель Output, куда выводятся результаты сборки проекта.
Не модальное окно. Нужно - вызвал, не нужно - скрыл.
Только с 3-мя дополнениями:
1. Возможность подсветки(окраски), в зависимости от статуса лог-сообщения.
2. Возможность добавления иконок, в зависимости от статуса лог-сообщения.
3. Возможность запихать вместе с остальным моим инструментарием в отдельную dll, как это было у меня в Delphi (правда исходники остались на старой работе, приходится делать по памяти).
ONEEYEMAN wrote: И еще: у фрейма лога родитель оскновное окно а у кнопок панель. Попробуйте положить все на панельку...
А как же пробовал, разница заключается лишь в том, что фрейм лога сместился на панель, больше ничего не изменилось.
Иконок я так и не добился, при любых вариантах.
Win XP, Win 7-64, VS2008, VS2010, wxWidgets 3.0.2

ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 3470
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: wxWidgets & VCL

Post by ONEEYEMAN » Wed Mar 04, 2015 4:24 am

Как я и предполагал, Вам лучше всего использовать wxAUI библиотеку.
Посмотрите на пример auidemo. Это как раз то что делаете Вы.

ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 3470
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: wxWidgets & VCL

Post by ONEEYEMAN » Wed Mar 04, 2015 4:25 am

Как я и предполагал, Вам лучше всего использовать wxAUI библиотеку.
Посмотрите на пример auidemo. Это как раз то что делаете Вы.

После того как посмотрите на пример, будем разбираться с иконками.

AK74
Earned a small fee
Earned a small fee
Posts: 17
Joined: Thu Nov 27, 2014 5:41 pm

Re: wxWidgets & VCL

Post by AK74 » Mon Apr 06, 2015 3:54 pm

Доброго всем времени суток.

Вот и еще вопросик нарисовался.
Итак, в VCL у меня была универсальная, для моих потребностей, формочка, которая выводила простенький график
(внешний вид модулирующей функции).
Будучи упакованной в dll, она могла вызываться из других приложений. Входными параметрами были functions_list, из которого заполнялось меню функций и обработчик события выбора пункта меню HandlerEvent. Т.е приложение формирует свой functions_list и создает обработчик типа TMenuItemClickEvent , а потом вызывает форму DrawFrame, с помощью FillMenu(functions_list, HandlerEvent). См. код

Code: Select all

//header file
typedef void __fastcall (__closure *TMenuItemClickEvent)(System::TObject* Sender);

class TDrawFrame: public TForm
	TMenu	*menu;
	void 	FillMenu(const fn_token *functions_list, TMenuItemClickEvent HandlerEvent);

//cpp file
void TDrawFrame::FillMenu(const fn_token *functions_list, TMenuItemClickEvent HandlerEvent)
{
	menu->Items->Clear();
	for( int i=0; functions_list[i].name; i++ ){
    	TMenuItem* item = new<TMenuItem>((TComponent*)0);
      	item->Caption = token_list[i].name;
	item->Tag= i;
        item->OnClick = HandlerEvent;
      	menu->Items->Add(item);
    }
}
Не могу догнать, как создать аналог typedef void __fastcall (__closure *TMenuItemClickEvent)(System::TObject* Sender)?
Заранее спасибо.
Win XP, Win 7-64, VS2008, VS2010, wxWidgets 3.0.2

Post Reply