PMG
http://forum.pmg.org.ru/

Помогите очередному новичку.
http://forum.pmg.org.ru/viewtopic.php?f=4&t=6682
Страница 2 из 3

Автор:  Maxi_daxi [ 10 июн 2008 15:53 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

Цитата:
Чем отличается BOOL от boolean и чем отличается NULL от 0 ???

На первую часть ответить не могу(не знаю), но на вторую могу ответить точно: NULL от 0 абсолютно ничем не отличается
int* a = NULL и int* a = 0 эквивалентны, как и int a = NULL и int a = 0

Автор:  Maxi_daxi [ 10 июн 2008 15:57 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

eger_666
Цитата:
To Infrno... к примеру в главах где рассказывается про добавление ресурсов, он говорит про какой то файл .Ж
Или к примеру он пишет вместо #include, ftinctude

Какая-то палёная у тя кинижка eger_666 :-D

Автор:  eger_666 [ 10 июн 2008 15:57 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

А чёже тогда многие пишут где НУЛЛ, а где 0? Для разнообразия???
И кстати при переходе в другой режим клавишей Ф1 появляется ошибка о невозможности зарегить окно. Вот щад думаю почему...

Автор:  eger_666 [ 10 июн 2008 15:58 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

Плёная книжка))) А где можно нормальную скачать???

Автор:  Maxi_daxi [ 10 июн 2008 16:10 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

Цитата:
И кстати при переходе в другой режим клавишей Ф1 появляется ошибка о невозможности зарегить окно. Вот щад думаю почему...


В конце TerminateGLWindow пропущено:
Код:
if( !UnregisterClass( "OpenGL", hInstance ) )
{
   MessageBox( NULL, "Could Not Unregister Class.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION );
   hInstance = NULL;
}

Не забывай, что имена должны совпадать! здесь имя - "OpenGL"

Цитата:
Плёная книжка))) А где можно нормальную скачать???

Получше скан предложить не могу, но могу подкинуть исходный код на email к обоим книгам ЛаМота!

Цитата:
А чёже тогда многие пишут где НУЛЛ, а где 0? Для разнообразия???

Ты прав, по моему та же тема в Паскале с NIL

Автор:  eger_666 [ 10 июн 2008 16:17 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

Цитата:
Получше скан предложить не могу, но могу подкинуть исходный код на email к обоим книгам ЛаМота!

Ну если можешь, то давай. Думаю имейл ты уже знаешь :-D
Цитата:
Ты прав, по моему та же тема в Паскале с NIL

Да, в Delphi тоже некоторые любят nil ставить...

Автор:  eger_666 [ 10 июн 2008 16:56 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

Короче с чего лучше начать? С Уроков NeHe или с Лемота?

Автор:  Maxi_daxi [ 10 июн 2008 17:24 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

eger_666
Цитата:
Короче с чего лучше начать? С Уроков NeHe или с Лемота?

Я такой же новичок, как и ты.
Наверное лучше сначала по NeHe и RedBook(ссылка на нее есть на http://pmg.org.ru/nehe/index.html в разделе Навигатор), так
будет хоть какая-то база на OpenGL.Прикол в этих уроках в том,что ты сразу переходишь к практике.Качаешь исходный код, смотришь, что должно получиться, затем делишь свой экран на две части: в одной страничка с уроком NeHe, в другой ты кодишь сторока за строкой.Больше всего париться нужно в первом уроке, в остальных используется код первого урока и просто изменяется
DrawGLScene.Особо большие части, как загрузка куба можно и скопировать.
(это все имеет смысл на протяжении первых 20и уроков, далле вы, набив руку, копируте полностью код и спокойно читаете урок).

Потом Сокобан, змейка, тетрис.Как это сделать? Я сам еще их не делал только собираюсь, но знаю ,что это обясняется у Мозгового "Занимательное программирование", там все на Delphi и Pascal, поэтому Си - кодеру надо изучать OpenGl(у меня так).И никого С++ не нужно, достаточно знаний о С++ из приложения(в конце книг Программирование игр для Windows) Ламота.
Если ты написал эти игры , все равно хоть какое-то знание OpenGl не повредит.

Если кому надо, качайте исходники к Ламоту Программирование игр для Windows:
http://ifolder.ru/6925166
Если запускаете в оконном режиме, не забывайте, что глубина цвета(количество бит на пиксель) у окна и рабочего стола должны совпадать.У Ламота это 16 бит.

Автор:  eger_666 [ 10 июн 2008 18:42 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

Круто! Я нашёл где можно скачасть обе книги Лемота вместе с файлами!!! На торрентс ру недавно появилось!!!

Автор:  eger_666 [ 10 июн 2008 21:34 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

Код:
#include <windows.h>
#include <windowsx.h>
#include <stdio.h>
#include <math.h>
#define DXE_WND_CLASSNAME "DXE Alpha"
#define WIN32_LEAN_AND_MEAN   //No fucking MCF!   

//Global variables

//Functions

LRESULT CALLBACK WindowProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
   PAINTSTRUCT ps;
   HDC         hDC;
   
   switch(msg)
   {
   case WM_CREATE:
      {
         //Actions for initialization
         return(0);
      } break;
   case WM_PAINT:
      {
         hDC = BeginPaint( hWnd, &ps);
         //Everything of picture painting
         EndPaint( hWnd, &ps);
         return(0);   //Successful complete
      } break;
   case WM_DESTROY:
      {
         //Shutdown application
         PostQuitMessage(0);

         //Sucessful complete
         return(0);
      } break;
   default: break;
   }   //switch

   return (DefWindowProc ( hWnd, msg, wParam, lParam ));
}   //WindowProc

/////////////////////WINMAIN/////////////////////

int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
   WNDCLASSEX  dxeWnd;
   HWND      hWnd;
   MSG         msg;

   dxeWnd.cbSize = sizeof(WNDCLASSEX);
   dxeWnd.style = CS_DBLCLKS |CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
   dxeWnd.lpfnWndProc = WindowProc;
   dxeWnd.cbClsExtra = 0;
   dxeWnd.cbWndExtra = 0;
   dxeWnd.hInstance = hInstance;
   dxeWnd.hIcon = LoadIcon( NULL, IDI_APPLICATION );
   dxeWnd.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
   dxeWnd.hCursor = LoadCursor( NULL, IDC_ARROW );
   dxeWnd.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
   dxeWnd.lpszMenuName = NULL;
   dxeWnd.lpszClassName = DXE_WND_CLASSNAME;
   
   //Class registration
   if( !RegisterClassEx(&dxeWnd)) return(0);

   //Window creation
   if( !(hWnd = CreateWindowEx(NULL, DXE_WND_CLASSNAME, "Alpha", NULL, 0, 0, 400, 400, NULL, NULL, hInstance, NULL )))
   {
      return(0);
   }

   //Main event cycle
   while(GetMessage(&msg, NULL, 0, 0))
   {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }   //while

   //Return to Windows
   return(msg.wParam);
}   //WinMain

Окно не появляется, но прога появляется в процессах. В чём ошибка???

Автор:  Maxi_daxi [ 10 июн 2008 22:07 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

Так должно работать:
Код:
ShowWindow(hWnd, nShowCmd); //НОВОЕ

  //Main event cycle
  while(GetMessage(&msg, NULL, 0, 0))
  {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
  }   //while

Автор:  eger_666 [ 10 июн 2008 22:27 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

Спасибо. Блин, как же я пропустил эту мелочь?..

Автор:  Maxi_daxi [ 10 июн 2008 22:45 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

Цитата:
Спасибо. Блин, как же я пропустил эту мелочь?..

Ты ,кажется, сделал все ошибки, которые только можно сделать! =)
Скорее Ламота качай =) , там хорошо рассказано программирование на Windows.

Автор:  eger_666 [ 10 июн 2008 23:07 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

Этот код именно из его книги. Факт в том, что прога не хочет уходить из памяти. Я в прошлый раз сам как-то исправил, но щас что-то не помогает...
Цитата:
Скорее Ламота качай

Да я уже скачал обе книги вместе с CD =)

Автор:  Maxi_daxi [ 10 июн 2008 23:36 ]
Заголовок сообщения:  Re: Помогите очередному новичку.

Молодец ,что пишешь построчно, но ведь нужно же сверяться и с работающим исходным кодом к книге!
У меня сейчас на коленях первая книга Ламота. Я понял, что это листинг 2.3, в CreateWindowEx там где у тебя стоит NULL у Ламота:
Код:
hWnd = CreateWindowEx(NULL, DXE_WND_CLASSNAME, "Alpha", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0 , 0, 400, 400, NULL, NULL, hInstance, NULL )

WS_OVERLAPPEDWINDOW - добавляет возможность выхода нажав на крестик, свернуть окно.
WS_VISIBLE - эквивалентно ShowWindow(hWnd, nShowCmd), если так оставить, то ShowWindow можно и не прописывать.

Страница 2 из 3 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/