Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
1

Не могу разобраться в WinApi

22.06.2011, 11:43. Показов 2267. Ответов 15
Метки нет (Все метки)

Хочу сам выучить с++, скачал книжку Финогенова "Win32. Основы программирования", но ни один из кодов не работает. Например взял код простого окна winapi, что то исправил, но все равно ошибка, помогите исправить))
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
#include <windows.h>
#include <windowsx.h>
 
// прототип используемой в программе функции пользователя
LRESULT CALLBACK WndProc ( HWND, UINT, WPARAM, LPARAM); // оконная ф-ция
 
// главная ф-ция WinMain
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int){
char szClassName[]="MainWindow";                //Произвольное имя класса главного окна
char szTitle[]="Программа 4-1";                    //Произвольный заголовок окна
MSG Msg;                                        //Структура Msg типа MSG для получения сообщений Windows
WNDCLASS wc;                                    //Структура we типа WNDCLASS для задания характеристик окна
 
/*Зарегистрируем класс главного окна*/
 
ZeroMemory(&wc, sizeof(wc));                        //Обнуление всех членов структуры we
wc.lpfnWndProc=WndProc;                     // Определяем оконную процедуру для главного окна
wc.hInstance=hInst;                             //Дескриптор приложения
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);        //Стандартная пиктограмма
wc.hCursor=LoadCursor(NULL,IDC_ARROW);          //Стандартный курсор мыши
wc.hbrBackground=GetStockBrush(LTGRAY_BRUSH);   //Светло-серый фона окна
wc.lpszClassName=szClassName;                   //Имя класса окна
RegisterClass(&wc);                             //Вызов функции Windows регистрации класса окна
 
/*Создадим главное окно и сделаем его видимым*/
 
HWND hwnd=CreateWindow(szClassName,szTitle,     //Класс и заголовок окна
WS_OVERLAPPEDWINDOW,10,10,300,100,              //Стиль окна,координаты,размеры
HWND_DESKTOP,NULL,hInst,NULL);                  //Родитель, меню, другие параметры
ShowWindow (hwnd, SW_SHOWNORMAL);                   //Вызов функции Windows показа окна
 
/*Организуем цикл обнаружения сообщений*/
 
while(GetMessage(&Msg,NULL,0,0)){               // Если есть сообщение, передать его нам
DispatchMessage(&Msg);                          //и вызвать оконную процедуру WndProc
return 0;                                       //После выхода из цикла вернуться в Windows
}                                               //Конец функции WinMain
вылазит такая ошибка
1>------ Построение начато: проект: 3, Конфигурация: Debug Win32 ------
1> 3.cpp
1>c:\users\сипипи\3\3\3.cpp(39): fatal error C1075: конец файла обнаружен ранее, чем левая фигурная скобка "{" в "c:\users\zaur\заур\сипипи\3\3\3.cpp(9)"
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

что с ним делать?))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2011, 11:43
Ответы с готовыми решениями:

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

Только начал изучать WinAPI. Помогите разобраться.
Только начал так потихоньку вьезжать в WinAPI, вообще программирую на Qt. Написал я простейшую...

Не могу создать окно WINAPI
#define WIN32_LEAN_AND_MEAN #include&lt;cstdlib&gt; #include&lt;math.h&gt; #include&lt;windows.h&gt;...

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

15
MiThEoN
453 / 315 / 37
Регистрация: 31.10.2009
Сообщений: 518
Записей в блоге: 2
22.06.2011, 11:46 2
z-z, в конце фигурной скобки не хватает, перед return
0
Почетный модератор
7381 / 2626 / 279
Регистрация: 29.07.2006
Сообщений: 13,699
22.06.2011, 11:48 3
C++
1
while(GetMessage(&Msg,NULL,0,0)){
скобка открывается, а где закрывается?
0
186 / 173 / 18
Регистрация: 22.03.2010
Сообщений: 612
22.06.2011, 12:08 4
пхаха, ты сначала си поковыряй, с++, прежде чем браться за такие вещи. А то с такими ошибками на форум писать...
0
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
22.06.2011, 12:16  [ТС] 5
pito211, поковырял уже) я тут кусок кода просто пропустил, вот рабочий код
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
#include <windows.h>
#include <windowsx.h>
 
// прототип используемой в программе функции пользователя
LRESULT CALLBACK WndProc ( HWND, UINT, WPARAM, LPARAM); // оконная ф-ция
 
// главная ф-ция WinMain
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int){
char szClassName[]="MainWindow";                //Произвольное имя класса главного окна
char szTitle[]="Программа 4-1";                    //Произвольный заголовок окна
MSG Msg;                                        //Структура Msg типа MSG для получения сообщений Windows
WNDCLASS wc;                                    //Структура wc типа WNDCLASS для задания характеристик окна
 
/*Зарегистрируем класс главного окна*/
 
ZeroMemory(&wc, sizeof(wc));                    //Обнуление всех членов структуры wc
wc.lpfnWndProc=WndProc;                         // Определяем оконную процедуру для главного окна
wc.hInstance=hInst;                             //Дескриптор приложения
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);        //Стандартная пиктограмма
wc.hCursor=LoadCursor(NULL,IDC_ARROW);          //Стандартный курсор мыши
wc.hbrBackground=GetStockBrush(LTGRAY_BRUSH);   //Светло-серый фона окна
wc.lpszClassName=szClassName;                   //Имя класса окна
RegisterClass(&wc);                             //Вызов функции Windows регистрации класса окна
 
/*Создадим главное окно и сделаем его видимым*/
 
HWND hwnd=CreateWindow(szClassName,szTitle,     //Класс и заголовок окна
WS_OVERLAPPEDWINDOW,10,10,400,400,              //Стиль окна,координаты,размеры
HWND_DESKTOP,NULL,hInst,NULL);                  //Родитель, меню, другие параметры
ShowWindow (hwnd, SW_SHOWNORMAL);                   //Вызов функции Windows показа окна
 
/*Организуем цикл обнаружения сообщений*/
 
while(GetMessage(&Msg,NULL,0,0))                // Если есть сообщение, передать его нам
    DispatchMessage(&Msg);                          //и вызвать оконную процедуру WndProc
return 0;                                       //После выхода из цикла вернуться в Windows
}                                               //Конец функции WinMain
 
/*Оконная функция WndProc главного окна*/
 
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam){
switch(msg){                                    //Переход по значению msg - номеру сообщения
case WM_DESTROY:                                //При завершении приложения пользователем
    PostQuitMessage(0);                             //вызвать функцию Windows завершения приложения
return 0;                                       //Возврат в Windows
default:                                        //B случае всех остальных сообщений Windows обработка
    return(DefWindowProc(hwnd,msg,wParam,lParam)) ; //их по умолчанию
}                                               //Конец опера тора switch
}
но как тут можно фон поменять? врое как здесь:
wc.hbrBackground=GetStockBrush(LTGRAY_BRUSH);
но каким образом, не знаю.
и как на окно можно выводить что нибудь, текст или рисунки(линии)))
0
MiThEoN
453 / 315 / 37
Регистрация: 31.10.2009
Сообщений: 518
Записей в блоге: 2
22.06.2011, 12:28 6
Сам недавно скачал книгу , "WIN32 API, Эффективная разработка приложений" - Юрий Щупак, у него я все это нашел
2
1 / 1 / 0
Регистрация: 12.08.2010
Сообщений: 19
11.07.2011, 12:20 7
Z-Z, сделай так:
C++
1
2
3
4
5
6
7
wc.hbrBackground=GetStockBrush(LTGRAY_BRUSH);
 
// GetStockBrush(LTGRAY_BRUSH);
// Замени на 
// CreateSolidBrush (RGB(138, 169, 170));
//
wc.hbrBackground = CreateSolidBrush (RGB(138, 169, 170));
Выводить графику можно так ( это выполняется в функции обработки сообщений - CALLBACK WndProc ):
C++
1
2
3
4
5
6
7
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// Вывод текста
SetBkMode (hdc, TRANSPARENT); // Прозрачный фон текста
TextOut     (hdc, 305, 190, _T("Привет мир!!!"), 13);
EndPaint    (hWnd, &ps);
break;
Вывод линии и прямоугольника:
C++
1
2
3
4
5
6
7
8
9
10
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// Линия
MoveToEx   (hdc, 100, 100, NULL);
LineTo        (hdc, 300, 300);
 
// Прямоугольник
Rectangle (hdc, 100, 100, 300, 300);
EndPaint     (hWnd, &ps);
break;
0
Миниатюры
Не могу разобраться в WinApi  
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
11.07.2011, 12:38 8
Тебе бы стоило хоть немного в начале консольный с++ поучить.
0
nameless
11.07.2011, 13:28
  #9

Не по теме:

z-z, По WinAPI возьми, что-нибудь другое? более достойное, например, "Петцольд Ч. Программирование для Windows 95" или можно еще почитать "Саймон Р. Windows 2000", а ппотом можно и Рихтера взять. А вот Финогенов, мягко говоря не очень, пару раз листал книгу..

0
1 / 1 / 0
Регистрация: 12.08.2010
Сообщений: 19
11.07.2011, 16:22 10
СОРРИ ЗА ОФФТОП
z-z, Купи у себя в магазине или скачай книгу по Win32:
Технология программирования на C++. Win32 API-приложения
Н. А. Литвиненко
2010

Хорошая книга.
1
Изображения
 
1 / 1 / 0
Регистрация: 12.08.2010
Сообщений: 19
11.07.2011, 16:26 11
в начале консольный с++ поучить.
Зачем на консольке заморачиваться, пускай WinAPI изучает, очень гибко и просто...
0
nameless
11.07.2011, 16:29
  #12

Не по теме:

Цитата Сообщение от progvc Посмотреть сообщение
Зачем на консольке заморачиваться, пускай WinAPI изучает, очень гибко и просто...
Гибко - да, но уж создание приложений с использованием WinAPI простым явно не назовешь. Все таки первый год лучше консольные приложения.

0
1 / 1 / 0
Регистрация: 12.08.2010
Сообщений: 19
11.07.2011, 16:32 13
Да, не спорю, основы С++ поучить конечно же нужно в консольном!
0
186 / 173 / 18
Регистрация: 22.03.2010
Сообщений: 612
11.07.2011, 16:33 14
Цитата Сообщение от progvc Посмотреть сообщение
Зачем на консольке заморачиваться, пускай WinAPI изучает, очень гибко и просто...
человек матчасти не знает, какой ему WinApi. Если его такие ошибки ставят в тупик, ясно дело что он ноль полный в си

Добавлено через 36 секунд
да и с++ упомянутый в заголовке не к месту. В winApi им и не пахнет
0
95 / 95 / 5
Регистрация: 10.04.2011
Сообщений: 256
11.07.2011, 16:35 15
Цитата Сообщение от progvc Посмотреть сообщение
Зачем на консольке заморачиваться, пускай WinAPI изучает, очень гибко и просто...
У него просто не получиться сразу освоить WinAPI без знаний. Например если он возьмет ту же книгу Литвиненко, он не сможет понять код, который там написан...
0
1 / 1 / 0
Регистрация: 12.08.2010
Сообщений: 19
11.07.2011, 16:47 16
Цитата Сообщение от zuq Посмотреть сообщение
У него просто не получиться сразу освоить WinAPI без знаний. Например если он возьмет ту же книгу Литвиненко, он не сможет понять код, который там написан...
Это вполне логично, я прежде чем разобраться с Win32 потратил пол года, долго осмыслял и анализировал работу, много инфы перерыл. Самое главное желание и стремление, и для чего это всё надо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2011, 16:47

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

WinAPI C - Не могу понять как создать таблицу?
WinAPI C - Не могу понять как создать таблицу? На днях экзамен по информатике, и не как не могу...

Не могу добавить новые ACE , используя WinAPI функции
Добрый день, на msdn нашел функцию AddAceToObjectsSecurityDescriptor, которая позволяет...

не могу разобраться..
Вывести на экран все натуральные числа из диапазона от A до B, в записи которых цифра 7 встречается...

Не могу разобраться
Есть функция, которая считает количество файлов в каталоге и подкаталогах. если вот так задать...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

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