Заметки по работе с DirectX8.1 SDK и по созданию 3D-игр  
     
   
     
  [Базовые уроки по DirectX] [Основы DirectMusic на Delphi] [Основы DirectInput8 на Delphi] [Основы DirectSound8 на Delphi]  
  [Разработка компьютерной игры] [Пример игры Donuts3D]  
     
 

Что нужно знать для создания DirectX-приложений на C++ в среде Microsoft Visual Studio 2008

Урок 3 Создание Win32-приложений. Создание меню и простых диалоговых окон.

 
     
 

Данный урок является введением в программирование на C++ в MSVS 2008

Вам нужно иметь установленную среду Microsoft Visual Studio 2005 или 2008 (можно триал),

и DirectX SDK 9 версии, или лучше самой последней - DirectX SDK August 2008.

 
     
  [назад] [далее] [к содержанию]  
     
  Мы рассматриваем основы программирования на C++ в среде программирования MSVS 2008  
     
  В данном уроке мы рассмотрим как создается меню и простейшие окна диалогов.  
     
  Меню Win32-приложения создается как ресурс. Его создание похоже на создание меню в delphi 7.  
     
 

Для создания меню открываем окно ресурсов Resource View,

щелкаем правой кнопкой по пункту Resource.rc и выбираем Add Resource,

в окне выбора нового ресурса задаем требуемый тип (в нашем случае Menu) и нажимаем кнопку New

 
     
  будет создано окно с ресурсом меню, открытым для редактирования. По аналогии с созданием меню в delphi 7 нужно давать пунктам меню нужные идентификаторы в окне Properties и названия (свойство Caption)  
     
   
     
  Название идентификатора ресурса меню можно изменить щелкнув по ресурсу в окне ресурсов и вызвав окно Properties щелчком по вкладке Properties в правой части окна Visual Studio  
     
   
     
 

Для обработки команд меню в код необходимо внести дополнения

Внутри функции WndProc показан пример обработки пунктов меню About и Exit. По аналогии с этим нужно добавить обработку других пунктов меню.

 
     
  Работа с меню Win32-приложения описана в разделе MSVS 2008 > Help > Contents > Win32 and COM Development > User Interface > Windows User Experience > Windows Management > Windows User Interface > Resources > Menus  
     
 

Обработка нажатий на пункты меню Hints и Show FPS

в методе WndProc нажатия обрабатываются следующим образом -

case IDM_OPTIONS_HINT: {

bShowHelpText = !bShowHelpText;

if (bShowHelpText)
CheckMenuItem(GetMenu(hWnd), IDM_OPTIONS_HINT, MF_CHECKED);
else
CheckMenuItem(GetMenu(hWnd), IDM_OPTIONS_HINT, MF_UNCHECKED);

break;
}

case IDM_OPTIONS_SHOWFPS: {

m_bShowFPSOn = !m_bShowFPSOn;

if (m_bShowFPSOn)
CheckMenuItem(GetMenu(hWnd), IDM_OPTIONS_SHOWFPS, MF_CHECKED);
else
CheckMenuItem(GetMenu(hWnd), IDM_OPTIONS_SHOWFPS, MF_UNCHECKED);

break;
}

Дополнительно была введена функция InitD3DStuff, но пока ее назначение состоит лишь в -

void InitD3DStuff()
{
m_bShowFPSOn = TRUE;
bShowHelpText = TRUE;
}

 
     
 

Сама функция вызывается из InitInstance

В дальнейшем переменные m_bShowFPSOn и bShowHelpText перейдут в поля класса D3D-приложения

 
     
 

Для создания окна приложения с запрещенной кнопкой максимизации окна и неизменными размерами в коде функции InitInstance были внесены следующие изменения -

/*hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, 631, 380, NULL, NULL, hInstance, NULL); */

hWnd = CreateWindow(szWindowClass, szTitle,
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
CW_USEDEFAULT, 0, 631, 380, NULL, NULL, hInstance, NULL);

 
     
 

Разработка окна диалога для управления уровнем сложности

Работа с элементами управления Windows в приложениях Win32 описана в разделе справки -

MSVS 2008 > Help > Contents > Win32 and COM Development > User Interface > Windows User Experience > Windows Shell > Windows Controls > Control Library

 
     
 

Создание диалоговых окон приложения Win32 похоже на создание форм в Delphi 7. Однако не для всех элементов управления дело обстоит просто. Существует целая группа элементов управления добавление которых не автоматизировано в коде.

Например, если использовать для настройки уровня сложности ползунок Slider Control (TRACKBAR_CLASS), то для инициализации диалога с его использованием требуется вызов функции InitCommonControlsEx. Создание самого элемента управления нужно выполнять в коде приложения.

Поэтому если Вы добавили в свое приложение какой-то диалог и обнаружили, что он не работает, значит всё ясно - он содержит элемент управления для которого необходим дополнительный код.

Работа с элементами управления окон описана в разделе MSVS 2008 > Help > Contents > Win32 and COM Development > User Interface > Windows User Experience > Windows Shell > Windows Controls > General Control Information

 
     
  Чтобы не озадачивать себя на первых порах излишними сложностями попробуйте заменить нужный элемент управления каким-либо другим, не требующим введения кода. Например вместо ползунка Slider для задания уровня сложности можно вполне обойтись обычными RadioButtons и они прекрасно справляются с этой задачей.  
     
  Для использования окна диалога, вызываемого в ответ на выбор какого-либо пункта меню достаточно посмотреть код диалогового окна About автоматически создаваемый при создании оконного Win32-приложения и отталкиваясь от него создать свой собственный для нужного пункта меню и диалога.  
     
   
в следующем уроке - общие окна диалога, некоторые сопутствующие конструкции языка C++
 
             
  [назад] [далее] [к содержанию]  
             
 

Обновления и новости о развитии Delphi DirectX проекта
смотри на сайтах:

http://www.megainformaticsite.pochta.ru
http://www.megainformatic.narod.ru

 
             
             
  (c) Мега Информатик 2006-2009          
         
       

 

Hosted by uCoz