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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2012, 17:38   #1
ProgStud
Новичок
Джуниор
 
Регистрация: 08.06.2012
Сообщений: 3
По умолчанию Окно Windows-приложения

Я учусь писать приложения в Visal Studio 2010 и сразу же столкнулся с проблемой: не работает простенькая программа, которая просто создает окно. Возникли две ошибки:1)синтаксическая ')';2)не может найти одноименный .exe файл,наверно потому что я его не создавал(но по книги и не требовалось).

У кого есть опыт работы в Visual Studio 2010, подскажите что не так? Так как код стандартный и у вас не должен вызвать вопросов,поэтому бросаю его весь, посмотрите пожалуйста у себя почему появляются эти ошибки?

Код:
#include <Windows.h>
#include <tchar.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM , LPARAM);
TCHAR WinName[]=_T("MainFrame");
int APIENTRY _tWinMain(HINSTANCE This, HINSTANCE Prev, LPTSTR cmd, int mode)
 {
	 HWND hWnd;
	 MSG msg;
	 WNDCLASS wc;
	 wc.hInstance=This;
	 wc.lpszClassName=WinName;
	 wc.lpfnWndProc=WndProc;
	 wc.style=CS_HREDRAW | CS_VREDRAW;
	 wc.hIcon=LoadIcon(NULL, IDI_APPLICATION);
	 wc.hCursor=LoadCursor(NULL, IDC_ARROW);
	 wc.lpszMenuName=NULL;
	 wc.cbClsExtra=0;
	 wc.cbWndExtra=0;
	 wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
	 if(!RegisterClass(&wc)) return 0;
	 hWnd=CreateWindow(WinName,
		 _T("Каркас Window-приложения"),
		 WS_OVERLAPPEDWINDOW,
		 CW_USEDEFAULT,
		 CW_USEDEFAULT,
		 CW_USEDEFAULT,
		 HWND_DESKTOP,
		 NULL,
		 This,
		 NULL);
	 ShowWindow(hWnd, mode);
	 while(GetMessage(&msg, NULL,0,0))
	 {
		 TranslateMessage(&msg);
		 DispatchMessage(&msg);
	 }
	 return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
	case WM_DESTROY:PostQuitMessage(0);
		break;
	default:return DefWindowProc(hWnd,message,wParam,lParam);
	}
	return 0;
}

Последний раз редактировалось ACE Valery; 08.06.2012 в 22:06.
ProgStud вне форума Ответить с цитированием
Старый 08.06.2012, 20:17   #2
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

Мне кажется что учить сейчас winapi не целесообразно, во-первых создания на нем программ это еще та морока, как вы могли уже убедиться сколько сил уходит на то чтобы создать простое окно, а если учесть что по мнению winapi все контроли это окна, сложности с правильной перерисовки окон. Сейчас корпорация Майкрософт пропагандирует 2 метода разработки программ через. Net, и через WinRT который появится с windows 8 и планируется что он заменит winapi

Ну и по теме
в программе есть пару лишних пробелов, но я думаю это вина копипаста, а так вы в программе забыли вставить еще одни CW_USEDEFAUL в функции CreateWindow.

Последний раз редактировалось rUs_LAN; 08.06.2012 в 20:37.
rUs_LAN вне форума Ответить с цитированием
Старый 08.06.2012, 22:14   #3
ProgStud
Новичок
Джуниор
 
Регистрация: 08.06.2012
Сообщений: 3
По умолчанию

Да может быть)С CW_USEDEFAUL действительно можно запутаться. Пробелы тоже посмотрю,но копипаста там нет, возможная ошибка это результат кропотливого набирания кода с книжки) Жаль что winapi устарело, теперь задумаюсь что дальше учить.Спасибо!

Последний раз редактировалось ProgStud; 08.06.2012 в 22:18.
ProgStud вне форума Ответить с цитированием
Старый 08.06.2012, 22:17   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

ProgStud, имеются ввиду пробелы, которые появляются после копирования кода из среды разработки на форум.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 08.06.2012, 22:20   #5
ProgStud
Новичок
Джуниор
 
Регистрация: 08.06.2012
Сообщений: 3
По умолчанию

CW_USEDEFAULT не хватало.Заработало!Может winapi и не безнадежен, вместе со мной?)Еще раз спасибо!
ProgStud вне форума Ответить с цитированием
Старый 09.06.2012, 07:44   #6
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Цитата:
Сообщение от rUs_LAN Посмотреть сообщение
Мне кажется что учить сейчас winapi не целесообразно, во-первых создания на нем программ это еще та морока, как вы могли уже убедиться сколько сил уходит на то чтобы создать простое окно, а если учесть что по мнению winapi все контроли это окна, сложности с правильной перерисовки окон. Сейчас корпорация Майкрософт пропагандирует 2 метода разработки программ через. Net, и через WinRT который появится с windows 8 и планируется что он заменит winapi
Моё мнение такое. Не стоит отговаривать человека изучать Win Api. В начале своего пути новичок очень
доверчив. И может понять ваши слова буквально. Программистский фронт очень широк. Есть области, где
используют только классическое программирование под Windows (т.е. на Win Api).

Википедия:
Цитата:
Работа через Windows API — это наиболее близкий к системе способ взаимодействия с ней из прикладных программ. Более низкий уровень доступа, необходимый только для драйверов устройств
Есть такие области программирования, где нужно знать, как на самом деле работает программа (процесс). А так же
нужно знать архитектуру ЭВМ (а для этого учить ассемблер). А учить - это значит применять на практике!
Здесь и я тоже перегибаю палку, так как есть масса областей, где не нужно знать всего этого. К примеру,
Web программирование. Хотя я занимался web программированием совсем немного, на уровне html, и могу ошибаться... Но всё-таки есть области, где можно до конца жизни абстрагироваться от системных вызовов операционной системы и ассемблера.
8Observer8 вне форума Ответить с цитированием
Старый 09.06.2012, 07:54   #7
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от rUs_LAN Посмотреть сообщение
Мне кажется что учить сейчас winapi не целесообразно, во-первых создания на нем программ это еще та морока, как вы могли уже убедиться сколько сил уходит на то чтобы создать простое окно, а если учесть что по мнению winapi все контроли это окна, сложности с правильной перерисовки окон. Сейчас корпорация Майкрософт пропагандирует 2 метода разработки программ через. Net, и через WinRT который появится с windows 8 и планируется что он заменит winapi
1. WinAPI подразумевает использование ресурсов и диалогов. При этом окно вместе со всеми его компонентами набрасывается в визуальном редакторе, а в программе формируется единственным вызовом.
2. Как 2000, так и XP не содержат встроенных средств для работы как с одним, так и с другим. В то же время, обе эти системы будут стоять на компьютерах пользователей еще, минимум, несколько лет.
Дурной тон - рекомендовать пользователю (тем более - начинающему) способы, которые неизбежно будут приводить к неработоспособности написанных им программ на многих компьютерах.
3. Чем бы программист ни пользовался в дальнейшем, всегда очень полезным для него будет представление о низкоуровневом программировании. Без этого, как показывает практика, написанные программистом программы страшно тормозят, а сам программист не имеет представления, как с этим бороться. WinAPI - хотя и не самый низкий уровень, но все-таки...
s-andriano вне форума Ответить с цитированием
Старый 09.06.2012, 08:01   #8
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
3. Чем бы программист ни пользовался в дальнейшем, всегда очень полезным для него будет представление о низкоуровневом программировании. Без этого, как показывает практика, написанные программистом программы страшно тормозят, а сам программист не имеет представления, как с этим бороться. WinAPI - хотя и не самый низкий уровень, но все-таки...
В предыдущем своём сообщении я "перегнул палку" насчёт того, что "перегнул палку"!

P.S. ProgStud, вас может заинтересовать вот эта тема: http://www.programmersforum.ru/showthread.php?t=202764

Последний раз редактировалось 8Observer8; 09.06.2012 в 08:56. Причина: добавил P.S.
8Observer8 вне форума Ответить с цитированием
Старый 09.06.2012, 23:50   #9
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

Ну может я был сильно категоричен, конечно с winapi надо ознакомиться, пробовать писать какие-то простенькие программы для того чтобы понять как оно работает (саму концепцию сообщений и как их обрабатывать), но не более, для того чтобы писать программы не требующих высокой производительности существуют гораздо удобные технологии.

это мое личное мнение, которое каждый год имеет привычку меняться, но на данный момент оно таково
rUs_LAN вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как посмотреть на главное окно приложения в MVS? Sylar9 Win Api 3 07.01.2012 15:45
Интегрировать консольное окно с окном приложения aleks.halk Помощь студентам 0 05.03.2011 22:40
Создать окно, отображающее загрузку приложения Лукманов Александр Общие вопросы Delphi 3 04.03.2009 19:39
Как активизировать окно моего приложения? _ozzy_ Общие вопросы Delphi 3 10.04.2008 13:25
Делаю сайты, пишу маленькие/большие скрипты. Пишу веб-приложения и приложения под Windows. SkyM@n Фриланс 3 29.12.2007 16:21