русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Switch (wmId)


Дата добавления: 2015-01-16; просмотров: 703; Нарушение авторских прав


{

case ID_FILE_EXIT:

SendMessage(hWnd, WM_CLOSE, 0, 0);

break;

case ID_SHAPE_SQUARE:

g_iShape = 0;

InvalidateRect(hWnd, NULL, TRUE);

break;

case ID_SHAPE_CIRCLE:

g_iShape = 1;

InvalidateRect(hWnd, NULL, TRUE);

break;

}

break;

// Вызывается, когда пользователь отпускает левую кнопку мыши

case WM_LBUTTONUP:

MessageBox(hWnd, TEXT(«Вы кликнули!»), TEXT(«событие»), MB_OK);

break;

// Вызывается, когда окно обновляется

case WM_PAINT:

hDC = BeginPaint(hWnd, &ps);

 

If (g_iShape)

Ellipse(hDC, 50, 50, 200, 200);

Else

Rectangle(hDC, 50, 50, 200, 200);

 

EndPaint(hWnd, &ps);

break;

// Вызывается, когда пользователь закрывает окно

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, iMsg, wParam, lParam);

}

 

return 0;

}

 

Как видно отличий от базового примера очень немного:

1. добавлено подключение заголовочного файла ресурсов resource.h;

2. добавлена глобальная переменная, задающая выводимую фигуру;

3. заполнено поле lpszMenuName класса окна, что подключает меню;

4. добавлен обработчик сообщения WM_COMMAND с внутренним переключателем switch для трех разных пунктов меню;

5. немного модифицирован обработчик WM_PAINT.

Помимо файла на языке программирования C++, в exe-файл должен быть слинкован специальный файл ресурсов с расширением rc (resource script):

 

// Microsoft Visual C++ generated resource script.

//

#include “resource.h”

 

#define APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////



//

// Generated from the TEXTINCLUDE 2 resource.

//

#include “afxres.h”

 

/////////////////////////////////////////////////////////////////////////////



#undef APSTUDIO_READONLY_SYMBOLS

 

/////////////////////////////////////////////////////////////////////////////



// Russian resources

 

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)

#ifdef _WIN32

LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT

#pragma code_page(1251)

#endif //_WIN32

 

/////////////////////////////////////////////////////////////////////////////



//

// Menu

//

 

IDR_MENU1 MENU

BEGIN

POPUP “&Файл”

BEGIN

MENUITEM “В&ыход”, ID_FILE_EXIT

END

POPUP “Ф&игура”

BEGIN

MENUITEM “&Квадрат”, ID_SHAPE_SQUARE

MENUITEM “&Окружность”, 104

END

END

 

#endif // Russian resources

/////////////////////////////////////////////////////////////////////////////



 

 

/////////////////////////////////////////////////////////////////////////////



// English (U.S.) resources

 

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)

#ifdef _WIN32

LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

#pragma code_page(1252)

#endif //_WIN32

 

#ifdef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////



//

// TEXTINCLUDE

//

 

1 TEXTINCLUDE

BEGIN

“resource.h\0”

END

 

2 TEXTINCLUDE

BEGIN

“#include “”afxres.h””\r\n”

“\0”

END

 

3 TEXTINCLUDE

BEGIN

“\r\n”

“\0”

END

 

#endif // APSTUDIO_INVOKED

 

#endif // English (U.S.) resources

/////////////////////////////////////////////////////////////////////////////



 

#ifndef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////



//

// Generated from the TEXTINCLUDE 3 resource.

//

 

 

/////////////////////////////////////////////////////////////////////////////



#endif // not APSTUDIO_INVOKED

 

Это обычный текстовый файл, зная синтаксис файлов, можно создать его в редакторе текстов. Однако, на практике этот файл автоматически генерируется визуальным редактором. Вторым сгенерированным файлом является resource.h для связи ресурсов с программой на Си:

 

//{{NO_DEPENDENCIES}}

// Microsoft Visual C++ generated include file.

// Used by menu.rc

//

#define IDR_MENU1 101

#define ID_FILE_EXIT 102

#define ID_SHAPE_SQUARE 103

#define ID_SHAPE_CIRCLE 104

 

// Next default values for new objects

//

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE 105

#define _APS_NEXT_COMMAND_VALUE 40001

#define _APS_NEXT_CONTROL_VALUE 1001

#define _APS_NEXT_SYMED_VALUE 101

#endif

#endif

 

Результат работы программы показан на рисунке 2.3.1. Следует отметить, что программы, обладающие сложным интерфейсом пользователя, с большим количеством элементов управления, редко разрабатываются на Си с использованием исключительно функций, предоставляемых операционной системой. Чаще всего для этого используются или специальные библиотеки классов, например, MFC (Microsoft Foundation Classes, отсутствует в бесплатной, express версии студии), Qt или с помощью специализированных сред быстрой разработки, например, Borland C++ Builder, MATLAB Guide и т.д.

Рисунок 2.3.1 – Подключение главного меню к программе

 

Контрольные вопросы

 

  1. Что такое визуальное программирование?
  2. Что такое файл ресурсов?
  3. Зачем нужен символ & в названии пункта меню «В&ыход»?
  4. Как подключить главное меню в программу?
  5. Какие сообщения генерируются при выборе пользователем пункта меню, как определить какой конкретно пункт был выбран?

 




<== предыдущая лекция | следующая лекция ==>
Организация интерфейса пользователя | Сетевые модели, протоколы и архитектура «клиент – сервер»


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.