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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2012, 17:22   #1
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
Вопрос wc идентификатор не определен

Что за ошибка: скрин
Sylar9 вне форума Ответить с цитированием
Старый 05.04.2012, 17:25   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а переменная у вас под каким именем то обьявлена?
уж точно не wc.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.04.2012, 17:28   #3
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
Вопрос

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а переменная у вас под каким именем то обьявлена?
уж точно не wc.
wc.hbrBackground = (HBRUSH), GetStockObject(WHITE_BRUSH); чего у меня подчеркивается HBRUSH ?
Sylar9 вне форума Ответить с цитированием
Старый 05.04.2012, 17:29   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

выложите код по человечески.
и ошибки со студии отлично копируються текстом.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.04.2012, 17:32   #5
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
выложите код по человечески.
и ошибки со студии отлично копируються текстом.
окей допичатаю программу выложу
Sylar9 вне форума Ответить с цитированием
Старый 05.04.2012, 17:57   #6
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
По умолчанию

Вот код:
Код:
////////////////////////////////////////////////////////////////
// Hello.cpp
#include <Windows.h>

LRESULT CALLBACK WndProc();

//===========================================================
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    
	HWND hMainWnd; // ссылка на окно
	char szClassName[] = "MyClass";
	MSG msg;
	WNDCLASSEX wc;

	// Заполнение стуктур класса

	wc.cbSize = sizeof(wc);
	wc.style = CS_HREDRAW;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0; 
	wc.hInstance = hInstance;
	wc.hIcon = LoadIcon(NULL, IDI_ERROR);
	wc.hCursor = LoadCursor(NULL, IDC_HELP);
	wc.hbrBackground = (HBRUSH), GetStockObject(WHITE_BRUSH);
	wc.lpszMenuName = NULL;
	wc.lpszClassName = szClassName;
	wc.hIconSm = LoadIcon(NULL, IDI_ERROR);

	// Регистрация класса
	if(!RegisterClassEx(&wc))
	{
      MessageBox(NULL, "Cannot registr class", "Error", MB_OK);
	  return 0;
	}

	// Создаем основное окно приложения
	hMainWnd = CreateWindow( szClassName, "A Hello Win32 Api", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0,
 CW_USEDEFAULT, 0, (HWND)NULL, (WMENU)NULL, (HISTANCE)hInstance, NULL
		);

	if (!hMainWnd)
	{
    
	  MessageBox (NULL, "Cannot create main Windows", "Erro", MB_OK);
	  return 0;
	}
	// Показать окно
	ShowWindow(hMainWnd, nCmdShow);

	// Оброботка сообщений
	while (GetMessage(&msg, NULL, 0, 0))
	{
	  TranslateMessage(&msg);
	  DispatchMessage(&msg);
	}

   return msg.wParam;
}

//==================================================================================
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
   HDC hDC;
   PAINTSTRUCT ps;
   RECT rect;
   switch (uMsg)
   {
   case WM_PAINT:
	   hDC = BeginPaint (hWnd, &ps);

	   GetClientRectc(hWnd, &rect);
	   DrawText(hDC, "Hello Wordl", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

	   EndPaint(hWnd, &ps);
	   break;
	 
   case WM_CLOSE:
	    DestroyWindow(hWnd);
		break;
   case WM_DESTROY:
	    PostQuitMessage(0);
		break;
	 
   default:
	     return DefWindowProc(hWnd, uMsg, wParam, lParam);
		   
   }
      return 0;
}
Вот ошибки компилятора MS Visual C++ 2010

1>------ Построение начато: проект: Hello, Конфигурация: Debug Win32 ------
1>Построение начато 05.04.2012 16:56:02.
1>InitializeBuildStatus:
1> Обращение к "Debug\Hello.unsuccessfulbuild" .
1>ClCompile:
1> Hello.cpp
1>d:\my programs\hello\hello\hello.cpp(20): error C2440: =: невозможно преобразовать "LRESULT (__stdcall *)(void)" в "WNDPROC"
1> Для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>d:\my programs\hello\hello\hello.cpp(26): error C2059: синтаксическая ошибка: ,
1>d:\my programs\hello\hello\hello.cpp(40): error C2065: WMENU: необъявленный идентификатор
1>d:\my programs\hello\hello\hello.cpp(40): error C2143: синтаксическая ошибка: отсутствие ")" перед "константа"
1>d:\my programs\hello\hello\hello.cpp(40): error C2059: синтаксическая ошибка: )
1>d:\my programs\hello\hello\hello.cpp(72): error C3861: GetClientRectc: идентификатор не найден
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.91
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Последний раз редактировалось rpy3uH; 05.04.2012 в 19:44.
Sylar9 вне форума Ответить с цитированием
Старый 05.04.2012, 18:11   #7
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Рискну помочь.
Вот ты как-то упомянул, что имеешь представление о процедурном программировании.

Ответь себе, почему прототип функции написан так
Цитата:
LRESULT CALLBACK WndProc();
А реализация так
Цитата:
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Если требуется прикастовать один тип к другому, имя типа заключается в круглые скобки.
long x = (long) 123;

Зачем же помешать запятую как у тебя
wc.hbrBackground = (HBRUSH), GetStockObject(WHITE_BRUSH);

Цитата:
GetClientRectc: идентификатор не найден
Такой функции в winapi нет.
Есть GetClientRect.
EUGY вне форума Ответить с цитированием
Старый 06.04.2012, 09:09   #8
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
Вопрос

Цитата:
Сообщение от EUGY Посмотреть сообщение
Рискну помочь.
Вот ты как-то упомянул, что имеешь представление о процедурном программировании.

Ответь себе, почему прототип функции написан так
А реализация так


Если требуется прикастовать один тип к другому, имя типа заключается в круглые скобки.
long x = (long) 123;

Зачем же помешать запятую как у тебя
wc.hbrBackground = (HBRUSH), GetStockObject(WHITE_BRUSH);


Такой функции в winapi нет.
Есть GetClientRect.

А у тебя нет шаблона ?
Sylar9 вне форума Ответить с цитированием
Старый 06.04.2012, 13:49   #9
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Шаблон есть в твоей студии. Новый проект Win32, приложение Windows.
EUGY вне форума Ответить с цитированием
Старый 06.04.2012, 14:48   #10
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
Вопрос

Цитата:
Сообщение от EUGY Посмотреть сообщение
Шаблон есть в твоей студии. Новый проект Win32, приложение Windows.
Он какой-то сложный
Sylar9 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
идентификатор в паскале drcoxer Паскаль, Turbo Pascal, PascalABC.NET 28 13.11.2011 14:22
Определен. интеграл Dimon2010 Помощь студентам 2 18.05.2010 16:40
Идентификатор строки eda Microsoft Office Excel 9 25.08.2009 21:56
Как сделать чтобы через опред. время выполнялось определен. действие? zotox Помощь студентам 1 24.03.2009 17:27
Уникальный идентификатор romets Win Api 9 03.02.2008 02:30