Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2012, 00:28   #1
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию Окно 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,120
По умолчанию

Leshiy1

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


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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
окно или не окно вот в чем вопрос 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 05:11
Открывать окно печати, окно просмотра и изменять масштаб. segail Microsoft Office Excel 1 08.08.2010 19:31
«Окно+символ». Создать класс, представляющий окно в текстовом режиме. RustreX Паскаль, Turbo Pascal, PascalABC.NET 1 11.11.2007 19:28