Member
Статус: Не в сети Регистрация: 12.12.2003 Откуда: Уфа
Trener понятно. Есть такой вопрос. Почему программа, да еще с использованием openGL весит всего 60 кБ. Хотя все другие файлы в папке release занимают порядка 15 мБ. И этого .exe файла достаточно, чтобы программа работала..
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
kexman писал(а):
Почему программа, да еще с использованием openGL весит всего 60 кБ. Хотя все другие файлы в папке release занимают порядка 15 мБ.
Все функции используемые в программе(винапи, опенЖЛ,...) лежат в dll-ках windows и из программы только вызываются, поэтому код и маленький(при большом желании можно ещё уменьшить). Если же проэкт mfc, то придётся таскать с собой пару dll-ек или собирать статически, что увеличит размер программы.
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
kexman Залазишь в свойства проекта и сразу же в General->"Use of MFC" ставь в "Use MFC in a static Library" (для релизной и отладочной версии нужно ставить отдельно). После этого прога подрастёт на килобайт 200-300, но будет запускатся на голой 2000-ой винде точно(с большой вероятностью и на 98-ой тоже).
Daemon писал(а):
mein плюс CRT слинкована динамически, т.е. с собой нужно будет тягать redistributable package.
Member
Статус: Не в сети Регистрация: 18.08.2005 Откуда: Новороссийск
Как бороться с ошибками такого рода:
Код:
blackbox.obj : error LNK2019: unresolved external symbol _DirectDrawCreateEx@16 referenced in function "int __cdecl DD_Init(int,int,int)" (?DD_Init@@YAHHHH@Z) Release/FREAKOUT.exe : fatal error LNK1120: 1 unresolved externals
Проэкт обычный, чистый Win32, исходный код из книги (с диска) расчитан на компилятор 6-й версии, я юзаю 7.1, в чём может крыться проблема?
blackbox.cpp это что-то типо урезанная версия Direct Draw, написанная автором книги, в ней минимальный набор функций для вывода на экран данных (прямоугольников разного цвета и т.п.).
Можно ли в проекте Win32 вывести на главную форму группу объектов RadioBatton, усли можно, то если не тяжело подскажите как, я не говорю напишите всё за меня, просто подскажите. Просто нам в универе задают задачки разные, но мы всё делаем в Builder`е и я там все проги оформил в один проект, на главной форме выбор проги, а далее либо ENTER либо OK и открывается не модальное окошко с программкой, но я понимаю, что в билдере в дальнейшем наврядли придётся программировать, вот я и решил всё перенести в Win32 проект, так сказать для тренировки своих возможностей, тренировке по работе со средой разработки.
И ещё вопрос, как можно переносить проекты из более новой студии в более старую, например из 8.0 в 7.1, из 7.1 в 6.0? А то ведь это иногда очень надо, например если дома стоит 7.1, а в универе 6.0!
Member
Статус: Не в сети Регистрация: 18.08.2005 Откуда: Новороссийск
Билли Бонс точно, надо было в свойствах проекта подключить, в свойствах линковщика! Кстати с RadioBatton на главной форме разобрался, так что вопрос закрыт, у меня всё получилось ! А вот вопрос о переносе проектов по-прежнему открыт! Вот например в DX SDK все примеры сделаны для 2003 - ей и 2005 - ой студии, неужеле они парятся с двумя студиями, т.е. сначало всё делают в 2003-ей а затем переносят проект на 2005-ую, думаю наврядли, ведь на сколько я знаю нельзя держать на одной винде две разные версии студии, а парится с двумя виндами думаю им нет смысла! У кого какие мысли на этот счёт?
Member
Статус: Не в сети Регистрация: 30.01.2006 Откуда: Минск
-=alex-forewer=-, почему нельзя- у меня стоят одновременно 6 и 2005. Только что для интереса даже запустил одновременно и компилировал проекты-работает нормально.
Member
Статус: Не в сети Регистрация: 18.08.2005 Откуда: Новороссийск
Проект обычный, чистый Win32, я хочу просто сделать нормальный цвет окна, так сказать стандартный, но компилятор ругается на то, что я пометил, хотя я всё по инструкции сделал (MSDN 2004 July).
Код:
int WINAPI WinMain( ... ) { ...
HWND hwnd; HDC hdc;
hdc = GetDC(hwnd);
GetDCBrushColor(hdc, RGB(111,111,111)); тут проблема с GetDCBrushColor( ... )
...
winclass.hbrBackground = (HBRUSH)GetStockObject(DC_BRUSH); // тут проблема с DC_BRUSH
Библиотеки OpenGL32.lib GLU32.lib glaux.lib подключал. В чем может быть дело? А то обычно пользуюсь MFC MDI + OpenGL, все окей. Добавлено спустя 1 минуту, 53 секунды Проект - managed c++ empty project
Member
Статус: Не в сети Регистрация: 12.12.2003 Откуда: Уфа
Как выводить в строку состояния приложения MFC SDI данные? Дело в том, что объект строки состояния CStatusBar m_wndStatusBar находится в классе CMainFrame, а код программы в функциях класса CAppView. Из этих функций надо выводить в строку состояния? Как это сделать?
Member
Статус: Не в сети Регистрация: 12.12.2003 Откуда: Уфа
Все, нашел, получить доступ к объекту класса CMainFrame можно так:
CMainFrame *pMainFrame = (CMainFrame*)(::AfxGetMainWnd());
Все-таки VC++ очень геморная вещь, ничерта неудобная, чтобы реализовать простой вывод в строку состояния я потратил уйму времени прежде чем нашел как это делается. И так с каждой мелочью....
Member
Статус: Не в сети Регистрация: 12.12.2003 Откуда: Уфа
Daemon Щас немного читал на другом форуме, про .NET типа технология будущего, а как там с графическим интерфейсом программы? Удобно или нет? Может стоит на него переходить, ведь это технология будущего, по мнению M$, скоро Windows Vista выходит, там это вообще втроено.
А что такое QT и GTK? И где можно про это прочитать?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения