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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
GoodLife
9 / 9 / 3
Регистрация: 23.10.2012
Сообщений: 167
07.11.2012, 16:06     Создание окна API windows #1
Пример взят из книги Румянцева, азбука программирования в 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2012, 16:06     Создание окна API windows
Посмотрите здесь:

WIN API создание окна C++
C++ WIN32, Windows(Окна) . Создание Доп.окон.
создание окна windows C++
C++ Создание формы (окна)
C++ API: востановление "чужого" окна из min
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BuPy7
Нет ТЗ - давай досвидания
 Аватар для BuPy7
747 / 344 / 30
Регистрация: 01.12.2011
Сообщений: 2,027
07.11.2012, 16:58     Создание окна API windows #2
Убери int main(). Это вызов главного блока для консольных программ, а WinMain() - для оконных. И всё заработает. Проверил.
GoodLife
9 / 9 / 3
Регистрация: 23.10.2012
Сообщений: 167
07.11.2012, 18:54  [ТС]     Создание окна API windows #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);
        }
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,315
07.11.2012, 19:08     Создание окна API windows #4
Проект win32?
BuPy7
Нет ТЗ - давай досвидания
 Аватар для BuPy7
747 / 344 / 30
Регистрация: 01.12.2011
Сообщений: 2,027
07.11.2012, 19:33     Создание окна API windows #5
GoodLife, почитайте, как проект подготовить к работе с WinAPI.

Добавлено через 6 минут
Цитата Сообщение от GoodLife Посмотреть сообщение
Пример взят из книги Румянцева, азбука программирования в win32 API.
Как дойдёте до окон управления - закрывайте и читайте Петзолда. Или лучше сейчас читайте Петзолда.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
07.11.2012, 20:06     Создание окна API windows #6
Скорее всего, Вы не так что-то делаете, т.к. код рабочий. Результат:
Создание окна API windows
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,315
07.11.2012, 20:17     Создание окна API windows #7
Проект создаете консольное приложение а пишете под win32 вот ваша ошибка, вы main удаляете он не может найти точку входа. А если бы у вас был win32 то он вообще на ваше main не обращал внимание есть оно или нет
BuPy7
Нет ТЗ - давай досвидания
 Аватар для BuPy7
747 / 344 / 30
Регистрация: 01.12.2011
Сообщений: 2,027
07.11.2012, 20:24     Создание окна API windows #8
Автор, опишите, последовательно, что и как вы делаете.
GoodLife
9 / 9 / 3
Регистрация: 23.10.2012
Сообщений: 167
07.11.2012, 22:22  [ТС]     Создание окна API windows #9
Цитата Сообщение от Metallnote Посмотреть сообщение
Автор, опишите, последовательно, что и как вы делаете.
А я чет х его з, создавал консольное приложение, но это как я понял не правильно, тогда что, какой проект создавать?

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

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

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

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

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

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

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

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

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

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

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

Создание окна API windows
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
07.11.2012, 22:52     Создание окна API windows #13
Попробуйте project->application wizard
или project->SDI application
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2012, 23:37     Создание окна API windows
Еще ссылки по теме:

C++ Windows API и получение сообщений от мышки
Создание VPN сети, RAS API C++
Создание проекта win32 api в среде visual studio C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.11.2012, 23:37     Создание окна API windows #14
Другие - Консоль Визард - Убрать галку Косоль Апликейшен. Стереть всё, что будет и вставить свой код.
Миниатюры
Создание окна API windows  
Yandex
Объявления
07.11.2012, 23:37     Создание окна API windows
Ответ Создать тему
Опции темы

Текущее время: 02:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru