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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2012, 17:52   #1
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию Первое окно, но уже ошибки

Собственно код:

Код:
#include <Windows.h>

LRESULT CALLBACK WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI wWinMain (HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
	//Register the windows class
	const wchar_t CLASS_NAME[] = L"Sample Window Class";
	WNDCLASS wc = {};
	
	wc.lpfnWndProc = WindowProc;
	wc.hInstance = hInstance;
	wc.lpszClassName = CLASS_NAME;

	RegisterClass(&wc);

	//Creating windows
	HWND hwnd = CreatWindowEx(
		0,
		CLASS_NAME,
		L"Learn windows text",
		WS_OVERLAPPEDWINDOW,

		//Size and position
		CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,

		NULL, //Parent Window
		NULL, //Menu
		hInstance, //Instance handle
		NULL //Addition application data
		);

	if (hwnd == NULL)
	{
		return 0;
	}

	ShowWindow (hwnd, nCmdShow);

	//Run message loop
	MSG msg = {};
	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return 0;
}

LRESULT CALLBACK WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	case WM_PAINT:
		{
			PAINTSTRUCT ps;
			HDC hdc = BeginPaint(hwnd, &ps);
			FillRect (hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1));
			EndPaint (hwnd, &ps);
		}
		return 0;
	}
	return DefWindowProc (hwnd, uMsg, wParam, lParam);
}
Ошибка в CreatWindowEx, error C3861: 'CreatWindowEx': identifier not found.
Как сие решить?
L6go1as вне форума Ответить с цитированием
Старый 01.01.2012, 17:57   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

решение это написать имя функции правильно:
Цитата:
CreateWindowEx.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.01.2012, 18:02   #3
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
решение это написать имя функции правильно:
Спасибо, видать 1 число не для начала изучения нового языка
L6go1as вне форума Ответить с цитированием
Старый 01.01.2012, 18:28   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

естественно
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.01.2012, 18:33   #5
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Кстати, вопрос такой, а зачем использовать
Код:
const wchar_t CLASS_NAME[] = L"Sample Window Class";
Если данная надпись нигде не фигурирует?
L6go1as вне форума Ответить с цитированием
Старый 01.01.2012, 18:40   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)
Код:
wc.lpszClassName = CLASS_NAME;
2)
Код:
	HWND hwnd = CreatWindowEx(
		0,
		CLASS_NAME, //2
		L"Learn windows text",
		WS_OVERLAPPEDWINDOW,

		//Size and position
		CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,

		NULL, //Parent Window
		NULL, //Menu
		hInstance, //Instance handle
		NULL //Addition application data
		);
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.01.2012, 18:42   #7
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Ну не это понятно, что CLASS_NAME сам по себе фигурирует, но вот запись к примеру "Sample Window Class" - нигде.
Или же это просто описание, такой хелпер для программиста?
L6go1as вне форума Ответить с цитированием
Старый 01.01.2012, 18:52   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это константа, чтоб не писать по два(+) раза оно и тоже.
плюс сильное повышение надежности кода.

представьте что вы бы вставили сам текст внутрь вместо константы, и понадобилось бы изменить имя класса окна.
но вы бы моглм забыть изменить её во всех местах кода.

а так изменили константу и там где она применяется ничего менять не надо.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.01.2012, 18:53   #9
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Смотрика, логично
L6go1as вне форума Ответить с цитированием
Старый 01.01.2012, 19:03   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я так же выношу в константы даже банальные числовые значения.
так как идентификатор константы обычно говорит куда больше чем её значение:
Код:
const unsigned L_EOL=-2,L_EOF=-1,L_NULL=0;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти окно ошибки и нажать OK Shouldercannon Общие вопросы Delphi 8 01.05.2011 21:38
[?] Послать клавишу в чужое окно, не выводя окно на передний план. Moriarty Win Api 4 21.02.2011 05:11
Отследить и закрыть окно ошибки в другой программе Человек_Борща Общие вопросы Delphi 4 11.08.2010 11:54
Как уменьшить мое первое окно BOPOHA Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 29.12.2007 17:57
«Окно+символ». Создать класс, представляющий окно в текстовом режиме. RustreX Паскаль, Turbo Pascal, PascalABC.NET 1 11.11.2007 19:28