Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с регистрацией класса окна и не только, Ошибка при компиляции WinApi 
V
    Опции темы
DjoNIK
Дата 8.12.2006, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: нет
Всего: 5



Компилятор Borland C++ Bilder 6
Код

LRESULT CALLBACK MainWndProc(HWND, UNIT, UNIT, LONG);

char RegClassName[]="Win32"; // Но лучше вместо char - строковую
                             // переменную из из #include <string>

//---------------------------------------------------------------------------
#pragma argsused
WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hWnd;

WNDCLASS WC;
WC.style          =   CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;
WC.lpfnWndProc    =   MainWndProc;
WC.cbClsExtra     =   0;
WC.cbWndExtra     =   0;
WC.hInstance      =   hInst;
WC.hIcon          =   LoadIcon(NULL, IDI_APPLICATION);
WC.hCursor        =   LoadCursor(NULL, IDC_ARROW);
WC.hbrBackground  =   (HBRUSH) GetStockObject(WHITE_BRUSH);
WC.lpszMenuName   =   NULL;
WC.lpszClassName  =   RegClassName;

 if (!RegisterClass(&WC))
  {
   MessageBox(NULL, "Класс не создан!", "Error", MB_OK);
   return 0;
  }

  hWnd = CreateWindow(RegClassName, "Программа WinAPI №1",
                     WS_OVERLAPPEDWINDOW,
                     CW_USEDEFAULT, CW_USEDEFAULT,
                     CW_USEDEFAULT, CW_USEDEFAULT,
                     NULL, NULL,
                     hInst, NULL);

 if (!hWnd)
  {
   MessageBox(NULL, "Невозможно создать окно!", "Error", MB_OK);
   return 0;
  }



return 0;
}
//---------------------------------------------------------------------------


LRESULT CALLBACK MainWndProc(HWND hWnd, UINT Message,
                                             UINT wParam, LONG lParam)
{
 HDC hDC;
 PAINTSTRUCT PaintStruct;
 RECT Rect;
 switch (Message)
  {
   case WM_PAINT :
      hDC = BeginPaint(hWnd, &PaintStruct);
      GetClientRect(hWnd, &Rect);
      DrawText(hDC, "Hello, World!", -1, &Rect,
               DT_SINGLELINE | DT_CENTER | DT_VCENTER);
      EndPaint(hWnd, &PaintStruct);
      return 0;
   case WM_DESTROY :
      PostQuitMessage(0);
      return 0;
  }
 return DefWindowProc(hWnd, Message, wParam, lParam);
}



[C++ Error] Unit1.cpp(8): E2303 Type name expected   // дословно получается: "Ожидаемый тип имени", не пойму в чём ошибка
[C++ Error] Unit1.cpp(21): E2451 Undefined symbol 'MainWndProc' // Как здесь нужно определить MainWndProc чтобы компилятор не ругался

Это сообщение отредактировал(а) DjoNIK - 8.12.2006, 21:11


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
Fin
Дата 8.12.2006, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: нет
Всего: 10



А более полный код можно привести. Или хотя бы указать точно на какие строки компилятор ругается. Телепаты в отпуске отдыхают.

Ты заместо MainWndProc в коде сделал функцию  HelloWorldWndProc насколько я понял. Кстати окно у тебя не будет появляться. Так как в коде нету цикла опроса очереди. Подключен ли хэдэр windows.h?


--------------------
Пролетал мимо.
PM MAIL   Вверх
DjoNIK
Дата 8.12.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: нет
Всего: 5



Цитата

А более полный код можно привести.

Это собственно и есть полный код (за исключением отсутствия хэдэра windows.h)

Но как оказалось читабельность кода (так же как и постов smile ) в час ночи - дело неблагодарное.
Код

LRESULT CALLBACK MainWndProc(HWND, UNIT, UNIT, LONG);

,а должно быть:
Код

LRESULT CALLBACK MainWndProc(HWND, UINT, UINT, LONG);

UNIT - не есть UINT smile 

Прошу прощения за тупняки, виноват smile 

Это сообщение отредактировал(а) DjoNIK - 8.12.2006, 21:21


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0445 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.