С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
GoodLife
9 / 9 / 3
Регистрация: 23.10.2012
Сообщений: 174
#1

Создание окна API windows - C++

07.11.2012, 16:06. Просмотров 1656. Ответов 13
Метки нет (Все метки)

Пример взят из книги Румянцева, азбука программирования в win32 API. Должно быть показано окно с надписью Hello World, вот код примера
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
72
#include <windows.h>
 
LRESULT CALLBACK HelloWorldWndProc(HWND,UINT,UINT,LONG);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdParam, int nCmdShow)
{
HWND hWnd;
WNDCLASS WndClass;
MSG Msg;
char szClassName[]="HelloWorld";
 
WndClass.style=CS_HREDRAW|CS_VREDRAW;
WndClass.lpfnWndProc=HelloWorldWndProc;
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=szClassName;
 
if(!RegisterClass(&WndClass))
        {
        MessageBox(NULL,"Cannot register class","Error",MB_OK);
        return 0;
        }
 
hWnd = CreateWindow(szClassName,"Program No 1",
                        WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT,CW_USEDEFAULT,
                        CW_USEDEFAULT,CW_USEDEFAULT,
                        NULL,NULL,
                        hInstance,NULL);
 
if(!hWnd)
        {
        MessageBox(NULL,"Cannot createwindows","Error",MB_OK);
        return 0;
        }
 
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
 
while(GetMessage(&Msg,NULL,0,0))
        {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
        }
return Msg.wParam;
}
 
LRESULT CALLBACK HelloWorldWndProc(HWND hWnd,UINT Message,
                                UINT wParam,LONG lParam)
        {
        HDC hDC;
        PAINTSTRUCT PaintStruct;
        RECT Rect;
        switch(Message)
                {
                case WM_PAINT:hDC=BeginPaint(hWnd,&PaintStruct);
                        GetClientRect(hWnd,&Rect);
                        DrawText(hDC,"Hello, World",-1,&Rect,
                                DT_SINGLELINE|DT_CENTER|DT_VCENTER);
                        EndPaint(hWnd,&PaintStruct);
                        return 0;
                case WM_DESTROY:
                        PostQuitMessage(0);
                        return 0;
                }
        return DefWindowProc(hWnd,Message,wParam,lParam);
        }
Компилятор на него не ругается, все проходит, но окна, когда код вставляешь в Билдер 6 не возникает. В моем коде в билдере торчит еще main , вот его код:

C++
1
2
3
4
int main(int argc, char* argv[])
{
        return 0;
}
Стандартный маин пустой.
Может быть его надо затереть? Опять когда его затираешь ошибка вылазит
Создание окна API windows
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2012, 16:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание окна API windows (C++):

Создание окна windows - C++
я работаю под ОС windows язык DEV C++ как создать обыкновенное окно,и допустим одну кнопку что бы после нажатие высвечивалась ну скажем...

WIN32, Windows(Окна) . Создание Доп.окон. - C++
Снова я) Есть програмка. Программная среда -VisualStudio - проект Win32 . Есть основное окно. Нужно создать ещё одно. Как я понял ,...

Создание VPN сети, RAS API - C++
Здравствуйте, я создал небольшой чат, основанный на сокетах. Чтобы клиент подключился к серверу с другого ПК требуется VPN. Хотелось бы...

Создание проекта win32 api в среде visual studio - C++
Скажите как создать проект win32 api, но с конструктором(не чистый winapi)В среде visual studio

API: востановление "чужого" окна из min - C++
Знатоки! Может кто знает какие API-функции вызываются при восстановлении минимизированного окна при щелчке на значке в панели задач. ...

Windows API и получение сообщений от мышки - C++
Хотел спросить можно ли при помощи программы сделать так чтобы система получала сообщения от мышки, т.е. думала что мышка двигается. И...

13
BuPy7
Нет ТЗ - давай досвидания
730 / 358 / 35
Регистрация: 01.12.2011
Сообщений: 2,178
07.11.2012, 16:58 #2
Убери int main(). Это вызов главного блока для консольных программ, а WinMain() - для оконных. И всё заработает. Проверил.
1
GoodLife
9 / 9 / 3
Регистрация: 23.10.2012
Сообщений: 174
07.11.2012, 18:54  [ТС] #3
Цитата Сообщение от Metallnote Посмотреть сообщение
И всё заработает. Проверил.
Ну не работает, ошибка в чем-то, написал же сверху маин убираю, вылазит ошбка линкера, и фото там есть (сверху) с ошибкой, вот код без маина, проект на основе Wizard Console, без VCL и всякой лабуды... А зачем? если я хочу чисто с апи винды поработать.
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
72
73
74
75
76
77
78
79
80
//---------------------------------------------------------------------------
#include <windows.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
//---------------------------------------------------------------------------
 
LRESULT CALLBACK HelloWorldWndProc(HWND,UINT,UINT,LONG);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdParam, int nCmdShow)
{
HWND hWnd;
WNDCLASS WndClass;
MSG Msg;
char szClassName[]="HelloWorld";
 
WndClass.style=CS_HREDRAW|CS_VREDRAW;
WndClass.lpfnWndProc=HelloWorldWndProc;
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=szClassName;
 
if(!RegisterClass(&WndClass))
        {
        MessageBox(NULL,"Cannot register class","Error",MB_OK);
        return 0;
        }
 
hWnd = CreateWindow(szClassName,"Program No 1",
                        WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT,CW_USEDEFAULT,
                        CW_USEDEFAULT,CW_USEDEFAULT,
                        NULL,NULL,
                        hInstance,NULL);
 
if(!hWnd)
        {
        MessageBox(NULL,"Cannot createwindows","Error",MB_OK);
        return 0;
        }
 
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
 
while(GetMessage(&Msg,NULL,0,0))
        {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
        }
return Msg.wParam;
}
 
LRESULT CALLBACK HelloWorldWndProc(HWND hWnd,UINT Message,
                                UINT wParam,LONG lParam)
        {
        HDC hDC;
        PAINTSTRUCT PaintStruct;
        RECT Rect;
        switch(Message)
                {
                case WM_PAINT:hDC=BeginPaint(hWnd,&PaintStruct);
                        GetClientRect(hWnd,&Rect);
                        DrawText(hDC,"Hello, World",-1,&Rect,
                                DT_SINGLELINE|DT_CENTER|DT_VCENTER);
                        EndPaint(hWnd,&PaintStruct);
                        return 0;
                case WM_DESTROY:
                        PostQuitMessage(0);
                        return 0;
                }
        return DefWindowProc(hWnd,Message,wParam,lParam);
        }
0
SergProgC++
Эксперт GPSS
315 / 317 / 59
Регистрация: 02.07.2010
Сообщений: 1,365
07.11.2012, 19:08 #4
Проект win32?
1
BuPy7
Нет ТЗ - давай досвидания
730 / 358 / 35
Регистрация: 01.12.2011
Сообщений: 2,178
07.11.2012, 19:33 #5
GoodLife, почитайте, как проект подготовить к работе с WinAPI.

Добавлено через 6 минут
Цитата Сообщение от GoodLife Посмотреть сообщение
Пример взят из книги Румянцева, азбука программирования в win32 API.
Как дойдёте до окон управления - закрывайте и читайте Петзолда. Или лучше сейчас читайте Петзолда.
1
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
07.11.2012, 20:06 #6
Скорее всего, Вы не так что-то делаете, т.к. код рабочий. Результат:
Создание окна API windows
1
SergProgC++
Эксперт GPSS
315 / 317 / 59
Регистрация: 02.07.2010
Сообщений: 1,365
07.11.2012, 20:17 #7
Проект создаете консольное приложение а пишете под win32 вот ваша ошибка, вы main удаляете он не может найти точку входа. А если бы у вас был win32 то он вообще на ваше main не обращал внимание есть оно или нет
1
BuPy7
Нет ТЗ - давай досвидания
730 / 358 / 35
Регистрация: 01.12.2011
Сообщений: 2,178
07.11.2012, 20:24 #8
Автор, опишите, последовательно, что и как вы делаете.
1
GoodLife
9 / 9 / 3
Регистрация: 23.10.2012
Сообщений: 174
07.11.2012, 22:22  [ТС] #9
Цитата Сообщение от Metallnote Посмотреть сообщение
Автор, опишите, последовательно, что и как вы делаете.
А я чет х его з, создавал консольное приложение, но это как я понял не правильно, тогда что, какой проект создавать?

Добавлено через 30 секунд
Система Билдер шестой.....

Добавлено через 1 минуту
закрывал проект с формой, открывал проект Wizard console, вставлял туда код этот, вот, консоль я не правильно открывал, тогда что, какой проект создавать? Там нет чтобы надпись была типа такого Win32, я запутался, помогоите...
0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
07.11.2012, 22:23 #10
Может там есть что-то на подобии
GUI?
1
GoodLife
9 / 9 / 3
Регистрация: 23.10.2012
Сообщений: 174
07.11.2012, 22:41  [ТС] #11
Цитата Сообщение от Croessmah Посмотреть сообщение
там есть что-то на подобии
GUI?
не нашел, я не знаю что это, вот что есть
Создание окна API windows

Создание окна API windows

Создание окна API windows

Создание окна API windows

Создание окна API windows
0
GoodLife
9 / 9 / 3
Регистрация: 23.10.2012
Сообщений: 174
07.11.2012, 22:49  [ТС] #12
Остальные: (во вкладке Project пусто)
Создание окна API windows

Создание окна API windows

Создание окна API windows

Создание окна API windows

Создание окна API windows

Создание окна API windows

Создание окна API windows
0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
07.11.2012, 22:52 #13
Попробуйте project->application wizard
или project->SDI application
1
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.11.2012, 23:37 #14
Другие - Консоль Визард - Убрать галку Косоль Апликейшен. Стереть всё, что будет и вставить свой код.
1
Миниатюры
Создание окна API windows  
07.11.2012, 23:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2012, 23:37
Привет! Вот еще темы с ответами:

Окно Windows/Linux на с++ без всяких api - C++
Основная суть вопроса в заголовке.теперь пояснения. Как сделать окно на чистом С++без всяких opengl,winapi просто имея Пакет языка с++ и...

Win32 API, MFC, или Windows Forms? - C++
Здравствуйте! У меня очень простая задача на С++, нужно построить графики по точкам (данные из файлов) в разных окнах, масштабировать их...

Создание Output окна с++ - C++
Добрый вечер, как в с++ VS13 создать своё Output окно, чтобы всё писалось в стандартное output window и при определёной метке еще и в...

Создание текстового окна - C++
Добрый день. Пробую создать текствое окно на плюсах. Среда разработки - Qt Creator, компилятор - MinGW. Код следующий: #include...


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

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

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