Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
#1

Не могу стартануть с WinApi - C++

15.07.2013, 17:04. Просмотров 716. Ответов 16
Метки нет (Все метки)

Решил после изучения С++ освоить WinApi, он всетаки и к С# применим и ко всему угодно на сколько я понял. Но никак не могу понять как начать его изучать. Не могу найти код с окном, который можно бы было вписать в MSVS2010, откомпилить и дальше по учебнику разбирать и пробовать каждый параметр по порядку. В сети советуют читать Петзольда, но там примеры на чистом С.

Вобщем посоветуйте учебник или ресурс с примером, которые можно скопипастить и откомпилить в MSVS2010 и по этому изучать дальше WinApi.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2013, 17:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу стартануть с WinApi (C++):

Не могу стартануть "Hello" - C++
Здравствуйте. В чем может быть проблема, пишу обычный Привет мир а компилятор ругается на ошибку. #include <iostream> using...

Как стартануть Windows 7? - Windows 7
Доброго времени суток! У меня стояла windows 7, решил на диск e поставить xp, так как в образе не было exe файла(установщика), я взял из...

LBA/Large Mode значение Auto не даёт стартануть компьютеру - Жесткие диски
Всем доброго времени суток! Проблема такова, когда я хотел переустановить ОС с семёрки макс х32 на хр sp 3 х32, выявил следующее...при...

WINAPI не могу разобраться - C++ WinAPI
Никак не могу понять. До того, как добавил кнопку для взятия адреса файла, всё работало. Видимо до меня не доходит, как сделать так,...

Не могу разобраться в WinApi - C++ WinAPI
Хочу сам выучить с++, скачал книжку Финогенова "Win32. Основы программирования", но ни один из кодов не работает. Например взял код...

Не могу создать окно WINAPI - C++ WinAPI
#define WIN32_LEAN_AND_MEAN #include<cstdlib> #include<math.h> #include<windows.h> #include<windowsx.h> LRESULT CALLBACK...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
15.07.2013, 17:13 #2
Лично я изучаю WinAPI по книге именно Петцольда. (а точнее, по древней "Программирование для Windows 95") Примеры на C практически не мешают. Единственное, приходиться изменять в примерах char на wchar_t. Ну и, соответственно, функции, работающие с этим типом. (например, strlen на wcslen и т.п.)
Объяснения в книге вполне понятны. Если есть книги получше по данной теме, то я про них, к сожалению, не слышал.
1
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
15.07.2013, 17:30  [ТС] #3
Я тоже начал изучать по этой книге по рекомендация гугла. Возможно тогда ты сможешь помочь мне, к примеру в 1-м томе его книги на ст. 22-24 приводится первый пробный код. Посмотри пожалуйста правильные ли я файлы создал, и как решить приведенную в скрине синтаксическую ошибку?
0
Миниатюры
Не могу стартануть с WinApi  
Avazart
Эксперт С++
7192 / 5366 / 280
Регистрация: 10.12.2010
Сообщений: 23,675
Записей в блоге: 17
15.07.2013, 17:34 #4
А если внимательнее читать то что тебе отвечают :
Цитата Сообщение от Discoverer Посмотреть сообщение
Единственное, приходиться изменять в примерах char на wchar_t.
1
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
15.07.2013, 17:36 #5
C++
1
static wchar_t szAppName[] = L"HelloWin";
Насчет файлов: я просто создавал пустой проект, добавлял cpp файл и в нем все прописывал. С make-файлами не хотелось как-то разбираться..) Вообще их не использовал.
1
Avazart
Эксперт С++
7192 / 5366 / 280
Регистрация: 10.12.2010
Сообщений: 23,675
Записей в блоге: 17
15.07.2013, 17:38 #6
Так вроде есть шаблон в M$VC++ для WinApi. Если знаешь С++ и прочитал "предыдущие главы по WinApi", то легко найти разницу от книжного варианта и поймешь что к чему.
0
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
15.07.2013, 17:43 #7
Есть. Но там сразу много непонятного кода для начинающего изучение. Все равно удалять приходилось.. Так что лучше уж пустой проект.
0
Avazart
Эксперт С++
7192 / 5366 / 280
Регистрация: 10.12.2010
Сообщений: 23,675
Записей в блоге: 17
15.07.2013, 17:47 #8
То шаблон от куда там "много кода" ?
Нефиг лезть в IDE пока не изучил все необходимые главы и не разобрал код по полочкам.
0
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
15.07.2013, 17:58 #9
Код, выводящий окно с меню "файл" и "справка" там. Лично мне он был абсолютно непонятен, когда я только начал изучать WinAPI. Насчет "много", да, я немного перебрал.
0
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
15.07.2013, 18:08  [ТС] #10
Вобщем привожу код, так как не компилиться ничего, при том что нету синтаксических ошибок. Кстати, что делает буква L перед перменной?

Мейк-файл
C++
1
2
3
4
5
6
7
#------------------------
# HELLOWIN.MAK make file
#------------------------
hellowin.exe : hellowin.obj
$(LINKER) $(GUIFLAGS) -OUT:hellowin.exe hellowin.obj $(GUILIBS)
hellowin.obj : hellowin.cpp
$(CC) $(CFLAGS) hellowin.cpp
Цпп-файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*------------------------------------------------------------
HELLOWIN.C -- Displays "Hello, Windows 95!" in client area
(c) Charles Petzold, 1996
------------------------------------------------------------*/
 
 
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static wchar_t szAppName[] = L"HelloWin";
HWND hwnd;
MSG msg;
WNDCLASSEX wndclass;
wndclass.cbSize = sizeof(wndclass);
wndclass.style = 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_ARROW);
wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wndclass);
hwnd = CreateWindow(
szAppName, // window class name
L"The Hello Program", // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL
); // creation parameters
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch(iMsg)
{
case WM_CREATE:
PlaySound(L"hellowin.wav", NULL, SND_FILENAME | SND_ASYNC);
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
DrawText(hdc, L"Hello, Windows 95!", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, iMsg, wParam, lParam);
}
Ошибка:
1>------ Построение начато: проект: 123, Конфигурация: Debug Win32 ------
1>Построение начато 15.07.2013 17:04:06.
1>InitializeBuildStatus:
1> Обращение к "Debug\123.unsuccessfulbuild".
1>ClCompile:
1> HELLOWIN.cpp
1>ManifestResourceCompile:
1> Для всех выходных данных обновления не требуется.
1>HELLOWIN.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__PlaySoundW@12 в функции "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup
1>C:\Users\Андрей\Documents\Visual Studio 2010\Projects\123\Debug\123.exe : fatal error LNK1120: 2 неразрешенных внешних элементов
0
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
15.07.2013, 18:16 #11
Префикс L указывает, что используются двухбайтовые символы.
1
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
15.07.2013, 18:39  [ТС] #12
Разобрался, у меня в MSVS2010 был создан консольный проэкт и ему что-то не хватало.

Кстати, работает без мейк-файла, зачем он нужен? Это последний вопрос в этой теме .
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
15.07.2013, 18:43 #13
а он и не нужен.
И вообще, лучше сразу в настройках проекта выбрать Multibyte character set
Тогда и ошибок не будет возникать с LPCWSTR
и в примерах никаких префиксов "L" не придётся приписывать.
Всё будет работать с простыми char*
2
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
15.07.2013, 18:47 #14
Кстати, у меня и в проекте Win32 ошибка линковщика с этим PlaySound была. Решилось с добавлением в дополнительные зависимости winmm.lib.
0
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
15.07.2013, 18:58  [ТС] #15
Честно говоря выражение - "Добавление в дополнительные зависимости winmm.lib" мне мало что говорит)). У меня это решилось закоментированием этой строки . Если не лень то обясни, или ссылочку кинь.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2013, 18:58
Привет! Вот еще темы с ответами:

WinAPI автокликер, не могу прикрутить форму - Delphi WinAPI
WinAPI автокликер, не могу прикрутить форму. код: unit Unit10; interface uses Windows, Messages, SysUtils, Variants,...

Не могу придумать тему на курсовую по WINAPI - C++ WinAPI
Помогите придумать тему для курсовой по WinApi. Хотелось бы написать игру правда какую не знаю.

WinAPI - Delphi WinAPI
Подскажите плиз книгу какуюнить по WinAPI для полного,полного чайника:)

WinAPI - Delphi WinAPI
Как мне программно совершить эти действия,которые показаны на видео? http://video.yandex.ua/users/romanzi777/view/1/


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.07.2013, 18:58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru