Форумы на Наша-Life
Home user CP  
Календарь событий Найти других пользователей Часто задаваемые Вопросы Поиск  
Автор
Тема
Создать Новую Тему    Ответить
fire64
(http://papinyd.h18.ru)

Зарегистрирован: Jan 2007
Проживает: россия/москва
Написал: 292 сообщений

Оценка: 16 Votes 16 чел.

Vgui элементы для тулзы
Сообщение #776043
решил я написать тут одну тулзу для одного мода
и хочу использовать в ней vgui элементы
но что-то не получается.
вот собственно код
Цитата:
#include <windows.h>
#include <stdio.h>
#include <assert.h>
#include "interface.h"
#include <vgui\IScheme.h>
#include <vgui_controls\Controls.h>
#include <vgui\MouseCode.h>
#include <vgui\KeyCode.h>
#include <vgui\IVGui.h>
#include <vgui\ISurface.h>
#include <vgui\ILocalize.h>
#include <vgui_controls\Panel.h>
#include <vgui_controls\Frame.h>
#include "filesystem.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{

// Load vgui
CSysModule *vguiModule = Sys_LoadModule("bin/vgui2.dll");
if (!vguiModule)
{
vguiModule = Sys_LoadModule("vgui2.dll");
}

CreateInterfaceFn vguiFactory = Sys_GetFactory(vguiModule);
if (!vguiFactory)
{
MessageBox(0,"Fatal error: Could not load vgui2.dll\n","Error",MB_OK);
return 2;
}

CSysModule *filesystemModule = Sys_LoadModule("bin/filesystem_stdio.dll");
if (!filesystemModule)
{
filesystemModule = Sys_LoadModule("filesystem_stdio.dll");
}

CreateInterfaceFn filesystemFactory = Sys_GetFactory(filesystemModule);
if (!filesystemFactory)
{
MessageBox(0,"Fatal error: Could not load bin/filesystem_stdio.dll\n","Error",MB_OK);
return 2;
}

// Initialize interfaces
CreateInterfaceFn factories[2];
factories[0] = vguiFactory;
factories[1] = filesystemFactory;

if (!vgui::VGui_InitInterfacesList( "VGUI", factories, 2))
{
MessageBox(0,"Fatal error: Could not initalize vgui2.dll\n","Error",MB_OK);
return 3;
}

// In order to load resource files the file must be in your vgui filesystem path.
vgui::filesystem()->AddSearchPath("../", "resources");

// Init the surface
vgui::surface()->Init();

#if 0 // I do not know, why is not loaded

// Load the scheme
if (!vgui::scheme()->LoadSchemeFromFile("Resource/TrackerScheme.res", "Tracker"))
{
return 1;
}

#endif


// localization
vgui::localize()->AddFile(vgui::filesystem(), "Resource/platform_english.txt");

// Make a embedded panel
vgui::Panel *panel = new vgui::Panel(NULL, "TopPanel");









vgui::surface()->SetEmbeddedPanel( panel->GetVPanel() );


vgui::Frame *pFrame = new vgui::Frame( panel, "MyFrame" );
pFrame->SetScheme("ClientScheme.res");
pFrame->SetSize( 100, 100 );
pFrame->SetTitle("My First Frame", true );
pFrame->Activate();





// Start vgui
vgui::ivgui()->Start();

// Run app frame loop
// while (vgui::ivgui()->IsRunning())
// {
// vgui::ivgui()->RunFrame();
// }

// Shutdown
vgui::surface()->Shutdown();

// delete panel;

Sys_UnloadModule(vguiModule);



return 0;

}


вопрос, собственно говоря, что здесь не так ?

Поправил fire64 11-10-2008 в 20:00

Old Post 11-10-2008 16:34
fire64 отсутствует Посмотреть данные 'fire64' Отправить Приватное Сообщение для 'fire64' Посетить домашнюю страничку fire64 Найти другие сообщения 'fire64' Добавить fire64 в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
manJak
(маппер-теоретик)

Зарегистрирован: Feb 2006
Проживает: Mother Russia/Moscow
Написал: 2953 сообщений

Оценка: 66 Votes 66 чел.

Developer Старожил 
Сообщение #776065
Собственно, а что, собственно говоря, не получается?)
Old Post 11-10-2008 17:24
manJak отсутствует Посмотреть данные 'manJak' Отправить Приватное Сообщение для 'manJak' Найти другие сообщения 'manJak' Добавить manJak в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
fire64
(http://papinyd.h18.ru)

Зарегистрирован: Jan 2007
Проживает: россия/москва
Написал: 292 сообщений

Оценка: 16 Votes 16 чел.

Сообщение #776066
так vgui элементы же не создаются
Old Post 11-10-2008 17:26
fire64 отсутствует Посмотреть данные 'fire64' Отправить Приватное Сообщение для 'fire64' Посетить домашнюю страничку fire64 Найти другие сообщения 'fire64' Добавить fire64 в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
freeman85
(lolwut?!)

Зарегистрирован: Oct 2006
Проживает: /etc/fstab
Написал: 2174 сообщений

Оценка: 70 Votes 70 чел.

Сообщение #776119
Где объявление класа?
P.S.:Лучше юзай quote, вместо code.
http://freeman85.net - Мой блог
OpenLife
Twitter || Last.FM || Хабрахабр || Facebook || в Жопе
cat /dev/urandom > /dev/sda
Хочешь задать вопрос? Заюзай Google! http://google.com
Old Post 11-10-2008 19:34
freeman85 отсутствует Посмотреть данные 'freeman85' Отправить Приватное Сообщение для 'freeman85' Посетить домашнюю страничку freeman85 Найти другие сообщения 'freeman85' Добавить freeman85 в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Megalan
(Мне нечего сказать :))

Зарегистрирован: Sep 2005
Проживает: Russian Federation/
Написал: 2234 сообщений

Оценка: 49 Votes 49 чел.

Сообщение #776161
насколько я помню это вобще нельзя сделать (но возможно можно что-то замутить с кодом который тут нельзя обсуждать ), но если получится то запости код плз

ps посмотри на файл src_main\engine\vgui_baseui_interface.cpp сам знаешь где)) а еще лучше запусти поиск внутри файлов в папке engine по строке vgui

Поправил Megalan 11-10-2008 в 21:29

Old Post 11-10-2008 20:46
Megalan отсутствует Посмотреть данные 'Megalan' Отправить Приватное Сообщение для 'Megalan' Найти другие сообщения 'Megalan' Добавить Megalan в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
KLIMaka
(Президент Мира - Броука!)

Зарегистрирован: Dec 2007
Проживает: Украина/Запорожье
Написал: 456 сообщений

Оценка: 28 Votes 28 чел.

Сообщение #776244
Объявления все в хедерах лежат и никуда лезть за ними не нужно, это раз.
Если б мне гдето достать filesystem_stdio.dll 017 версии, то может что-нибудь бы и получилось. А так я только 009 версии эту либу нашел, а поиски по гэцэфэшкам ничего не дали . Это два.

Код написан под ер1 фреймворк, и если кто будет пытатся его компилить, то юзать нужно именно его, а не ОВ. Это три.

Мэин луп там вообще закоменчен, что очень меня смущает. Ты это откуда-то скопипастил? Это четыре.
Old Post 11-10-2008 23:17
KLIMaka отсутствует Посмотреть данные 'KLIMaka' Отправить Приватное Сообщение для 'KLIMaka' Найти другие сообщения 'KLIMaka' Добавить KLIMaka в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
 
***(Mr Roma)***
(Senior Member)

Зарегистрирован: Feb 2006
Проживает: /
Написал: 876 сообщений

Оценка: 40 Votes 40 чел.

Сообщение #776268
>>Ты это откуда-то скопипастил? Это четыре.
Из старого стыренного кода беты хл2, откуда же еще? )
Old Post 12-10-2008 06:09
***(Mr Roma)*** отсутствует Посмотреть данные '***(Mr Roma)***' Отправить Приватное Сообщение для '***(Mr Roma)***' Найти другие сообщения '***(Mr Roma)***' Добавить ***(Mr Roma)*** в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
fire64
(http://papinyd.h18.ru)

Зарегистрирован: Jan 2007
Проживает: россия/москва
Написал: 292 сообщений

Оценка: 16 Votes 16 чел.

Сообщение #776289
Цитата:
Оригинальное сообщение от KLIMaka
Объявления все в хедерах лежат и никуда лезть за ними не нужно, это раз.
Если б мне гдето достать filesystem_stdio.dll 017 версии, то может что-нибудь бы и получилось. А так я только 009 версии эту либу нашел, а поиски по гэцэфэшкам ничего не дали . Это два.

Код написан под ер1 фреймворк, и если кто будет пытатся его компилить, то юзать нужно именно его, а не ОВ. Это три.

Мэин луп там вообще закоменчен, что очень меня смущает. Ты это откуда-то скопипастил? Это четыре.


я знаю, что это код под двиг первого эпизода

// Run app frame loop
// while (vgui::ivgui()->IsRunning())
// {
// vgui::ivgui()->RunFrame();
// }

я закомментировал потому что в результате происходит странный баг со 100% загрузкой процессора

мне вот непонятно почему не работает загрузка scheme

// Load the scheme
if (!vgui::scheme()->LoadSchemeFromFile("Resource/TrackerScheme.res", "Tracker"))
{
return 1;
}
Old Post 12-10-2008 07:59
fire64 отсутствует Посмотреть данные 'fire64' Отправить Приватное Сообщение для 'fire64' Посетить домашнюю страничку fire64 Найти другие сообщения 'fire64' Добавить fire64 в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
KLIMaka
(Президент Мира - Броука!)

Зарегистрирован: Dec 2007
Проживает: Украина/Запорожье
Написал: 456 сообщений

Оценка: 28 Votes 28 чел.

Сообщение #776322
100% загрузки - это не баг, а логичный процесс Ведь написано же рисовать, пока не закроют, вот он и рисует! Если б в цикле слип какой-нить поставить, то не все процессорное время бы отжирал.

Потестить код загрузки схемы не могу, т.к. как я уже говорил, у меня либы нет нужной версии, а без нее у меня происходит вылет с веселой фразой:

Fatal error: Could not initalize vgui2.dll

причиной которой есть невозможность инициализации файловой системы . А компилить под бэтой желания нет... Так что дебаггер тебе в помощь! Благо все исходники есть, и пялится в дизассемблер не прийдется.

Вообще странно, как схема не грузится, но пога с ошибкой не вылетает? Может синтаксис не соблюл в описании схемы?

Поправил KLIMaka 12-10-2008 в 10:11

Old Post 12-10-2008 10:06
KLIMaka отсутствует Посмотреть данные 'KLIMaka' Отправить Приватное Сообщение для 'KLIMaka' Найти другие сообщения 'KLIMaka' Добавить KLIMaka в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
fire64
(http://papinyd.h18.ru)

Зарегистрирован: Jan 2007
Проживает: россия/москва
Написал: 292 сообщений

Оценка: 16 Votes 16 чел.

Сообщение #776422
KLIMaka, падает с ошибкой


// ... then the parent
((VPanel *)panel)->Client()->PerformApplySchemeSettings();

похоже именно из-за того что схема не загрузилась


нашел другой код, попробую сейчас переделать, потом отпишусь

я кажется разобрался в проблеме
дело в том что я пытался вызвать прогой vgui::Panel

vgui::Panel *panel = new vgui::Panel(NULL, "TopPanel");

а надо вызывать CStaticPanel

в комментах написано

// top level VGUI2 panel
CStaticPanel *staticPanel = NULL;

// setup base panel for the whole VGUI System
// The root panel for everything ( NULL parent makes it a child of the embedded panel )

Поправил fire64 12-10-2008 в 15:06

Old Post 12-10-2008 14:45
fire64 отсутствует Посмотреть данные 'fire64' Отправить Приватное Сообщение для 'fire64' Посетить домашнюю страничку fire64 Найти другие сообщения 'fire64' Добавить fire64 в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
KLIMaka
(Президент Мира - Броука!)

Зарегистрирован: Dec 2007
Проживает: Украина/Запорожье
Написал: 456 сообщений

Оценка: 28 Votes 28 чел.

Сообщение #776435
Ну если ты конкретно скажешь под какими исходниками и либами ты компилишь, и откуда взял Filesystem_stio.dll нормальный, то может я и смогу чем-нить помоч. А так - тыканье пальцем в небо.
Old Post 12-10-2008 15:04
KLIMaka отсутствует Посмотреть данные 'KLIMaka' Отправить Приватное Сообщение для 'KLIMaka' Найти другие сообщения 'KLIMaka' Добавить KLIMaka в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
fire64
(http://papinyd.h18.ru)

Зарегистрирован: Jan 2007
Проживает: россия/москва
Написал: 292 сообщений

Оценка: 16 Votes 16 чел.

Сообщение #776441
Ура получилось вызвать панель
сегодня доработаю завтра выложу код и все объясню
Old Post 12-10-2008 15:11
fire64 отсутствует Посмотреть данные 'fire64' Отправить Приватное Сообщение для 'fire64' Посетить домашнюю страничку fire64 Найти другие сообщения 'fire64' Добавить fire64 в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Megalan
(Мне нечего сказать :))

Зарегистрирован: Sep 2005
Проживает: Russian Federation/
Написал: 2234 сообщений

Оценка: 49 Votes 49 чел.

Сообщение #776453
ждем-с
Old Post 12-10-2008 15:22
Megalan отсутствует Посмотреть данные 'Megalan' Отправить Приватное Сообщение для 'Megalan' Найти другие сообщения 'Megalan' Добавить Megalan в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
fire64
(http://papinyd.h18.ru)

Зарегистрирован: Jan 2007
Проживает: россия/москва
Написал: 292 сообщений

Оценка: 16 Votes 16 чел.

Сообщение #776462
ситуация несколько усложнилась
для того что бы вызывать что то кроме панели надо подключать vguimatsurface.dll, сейчас я этим займусь
иначе ничего вообще не будет рендерится

Поправил fire64 12-10-2008 в 16:09

Old Post 12-10-2008 15:40
fire64 отсутствует Посмотреть данные 'fire64' Отправить Приватное Сообщение для 'fire64' Посетить домашнюю страничку fire64 Найти другие сообщения 'fire64' Добавить fire64 в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Megalan
(Мне нечего сказать :))

Зарегистрирован: Sep 2005
Проживает: Russian Federation/
Написал: 2234 сообщений

Оценка: 49 Votes 49 чел.

Сообщение #776804
есть успехи?

---------

ну-с?

Поправил Megalan 13-10-2008 в 18:11

Old Post 13-10-2008 14:04
Megalan отсутствует Посмотреть данные 'Megalan' Отправить Приватное Сообщение для 'Megalan' Найти другие сообщения 'Megalan' Добавить Megalan в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Все время в GMT . Сейчас 17:12.
Создать Новую Тему    Ответить

Быстрый ответ
Ваше Имя:
Хотите Зарегистрироваться?
Ваш Пароль:
Забыли свой Пароль?
Вы можете оставлять свои комментарии анонимно, просто введя свои имя и оставив пустым поле пароля.
Ваш ответ:

[проверить размер]
[транслит в win] | [?]
[русская клавиатура]

Дополнительно: Подтверждение по E-Mail


Быстрый переход:
 
Оцените эту Тему:
 

Правила форума:
Создание Тем не разрешено
Создание Сообщений разрешено
Создавать Вложения не разрешено
Редактирование Сообщений не разрешено
Коды HTML запрещены
Коды форума разрешены
Смайлики разрешены
Коды [IMG] запрещены