Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 17.11.2012, 00:28   #1
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
Репутация: 10
По умолчанию Окно Windows_Т

Здравствуйте всем. Только начал программировать на Devc++4.9.9.2

Код:

#include<windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 
// объявляем заголовок оконной функции, так как ссылка на нее используется //в функции WinMain при регистрации класса окна
static char szDevName[] = "Костин Андрей";
static char szDevName2[] = "гр. 7-78-2";
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
static char szAppName[] = "Andrew";
  HWND hwnd;            // описатель окна
  MSG msg;              // структура для хранения сообщения
WNDCLASSEX wndclass;  // структура класса окна
  // задаем параметры класса окна
wndclass.cbSize = sizeof(wndclass); // размер структуры
wndclass.style = CS_NOCLOSE | CS_HREDRAW | CS_VREDRAW;
// указатель на оконную функцию, обрабатывающую сообщения
wndclass.lpfnWndProc = WndProc; 
wndclass.cbClsExtra = 0; // не резервируем дополнительное
  // пространство в структуре класса и структуре окна
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance; // описатель экземпляра программы
  // используем в качестве значка приложения стандартную иконку 
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); // иконка
  wndclass.hCursor = LoadCursor(NULL, IDC_HELP); // курсор
  // цвет фона - светло-серый
  wndclass.hbrBackground = (HBRUSH):: GetStockObject(LTGRAY_BRUSH);
  wndclass.lpszMenuName = NULL; // меню отсутствует
  // название класса окна, объявлено выше
wndclass.lpszClassName = szAppName;
wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // маленькаяиконка
RegisterClassEx(&wndclass); // регистрируемнашклассокна
// создаем окно

  HMENU hMenu = CreateMenu ( ) ;
  HMENU hMenuPopup = CreateMenu ( ) ;
  AppendMenu (hMenuPopup, MF_STRING, 1 , "&Создать");
  AppendMenu (hMenuPopup, MF_STRING, 2 , "&Открыть");
  AppendMenu (hMenuPopup, MF_STRING, 3 , "&Сохранить");
  AppendMenu (hMenuPopup, MF_STRING, 4 , "&Сохранить как...");
  AppendMenu (hMenu, MF_POPUP,(UINT) hMenuPopup , "&Файл");

hwnd = CreateWindow(
szAppName,  // название класса окна
"Лабораторная работа №1", // заголовок окна
WS_OVERLAPPEDWINDOW, // стиль окна
    0,  // Позиция окна x
    0,  // позиция по y
    500,  // ширина в пикселях
    200,  // высота
NULL,   // родительского окна не существует
hMenu,   // меню 
hInstance,  // описатель экземпляра программы
NULL
  );
  // показываем окно на экране свернутым
ShowWindow(hwnd, SW_SHOW); 
UpdateWindow(hwnd);         // перерисовываем
  // цикл обработки событий
while(GetMessage(&msg, NULL, 0, 0)) { 
    // извлекаем сообщение из очереди, если это WM_QUIT, то цикл завершается
    // (получаем все сообщения от всех окон, созданных этой программой)
TranslateMessage(&msg);             
    // передаем структуру msg обратно в Windows для преобразования какого-либо //сообщения с клавиатуры
DispatchMessage(&msg);              
    // также  передает  структуру  msg  обратно  в Windows
  }
return msg.wParam;                    
  // поступило WM_QUIT - возвращаем wParam
}

// оконная функция, обработка сообщений
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) {
HDC hdc; // описатель контекста устройства для рисования
PAINTSTRUCT ps; // структура для рисования
RECT rect; // прямоугольник, в котором будем рисовать
HMENU hMenu;
switch(iMsg) {  
caseWM_PAINT: // обработкасообщенияWM_PAINT (перерисовать)
hdc = BeginPaint(hwnd, &ps); 
      // закрашиваем недействительный прямоугольник кистью фона, 
      // делаем его действительным и получаем описатель контекста устройства для
// рисования
SetTextAlign(hdc, TA_CENTER | TA_TOP); 
// устанавливаем положение базовой точки строки текста - сверху посередине
	GetClientRect(hwnd, &rect);
TextOut(hdc, rect.right/2, rect.bottom/2-10, szDevName, strlen(szDevName));  
TextOut(hdc, rect.right/2, rect.bottom/2+10, szDevName2, strlen(szDevName2)); 
EndPaint(hwnd, &ps);         // освобождаем описатель контекста устройства
return 0;
caseWM_DESTROY: // обработка запроса на завершение программы
PostQuitMessage(0); 
     // помещаем в очередь сообщение WM_QUIT, чтобы завершить программу
return 0;
  }
return DefWindowProc(hwnd, iMsg, wParam, lParam);  
// обрабатывает по умолчанию все сообщения, которые еще не были обработаны
}

Выдает такую ошибку: [Linker error] undefined reference to `GetStockObject@4'

Что не так?
Leshiy1 вне форума   Ответить с цитированием
Старый 17.11.2012, 10:58   #2
Rififi
Профессионал
 
Регистрация: 19.08.2009
Сообщений: 2,121
Репутация: 866
По умолчанию

Leshiy1

Выдает такую ошибку: [Linker error] undefined reference to `GetStockObject@4'
Что не так?


Не так то, что ты не подключил библиотеку.

как исправить ошибку:

- открываем браузер
- набираем www.google.com
- набираем имя функции на которую ругаетя линкер
- переходим по первой ссылке
- прокручиваем страницу внз
- ищем в таблице слово Library, узнаём, какая библиотека требуется
- дописываем библиотеку в список линковки компилятора
- ...
- PROFIT!
Rififi вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
окно или не окно вот в чем вопрос geologg Общие вопросы C/C++ 4 26.03.2012 14:30
Треугольное окно со сторонами A, B, C. Проверить, пройдёт ли в окно коробка цилиндрической формы (D и H) (паскаль) ihimaru Помощь студентам 5 02.10.2011 22:11
[?] Послать клавишу в чужое окно, не выводя окно на передний план. Moriarty Win Api 4 21.02.2011 06:11
Открывать окно печати, окно просмотра и изменять масштаб. segail Microsoft Office Excel 1 08.08.2010 19:31
«Окно+символ». Создать класс, представляющий окно в текстовом режиме. RustreX Паскаль 1 11.11.2007 20:28




06:05.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru