Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 37
1

Не могу создать окно WINAPI

21.09.2015, 16:41. Показов 1660. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#define WIN32_LEAN_AND_MEAN
#include<cstdlib>
#include<math.h>
#include<windows.h>
#include<windowsx.h>
LRESULT CALLBACK WinProc(HWND hwnd,UINT msg,WPARAM wparam, LPARAM lparam){
    PAINTSTRUCT ps;
    HDC hdc;
    switch(msg){
    case WM_CREATE:{
        return 0;
        }break;
    case WM_PAINT:{
        hdc=BeginPaint(hwnd,&ps);
        EndPaint(hwnd,&ps);
        return 0;
        }break;
    case WM_DESTROY:{
        PostQuitMessage(0);
        return 0;
        }break;
    default:break;
    }
    return DefWindowProc(hwnd,msg,wparam,lparam);
}
int WINAPI WinMain(HINSTANCE h,HINSTANCE hp,LPSTR lp,int cm){
    WNDCLASSEX wcx;
    wcx.cbSize=sizeof(WNDCLASSEX);
    wcx.style=CS_HREDRAW|CS_VREDRAW|CS_NOCLOSE|CS_OWNDC|CS_DBLCLKS;
    wcx.lpfnWndProc=WinProc;
    wcx.cbClsExtra=0;
    wcx.cbWndExtra=0;
    wcx.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wcx.hCursor=LoadCursor(NULL,IDC_WAIT);
    wcx.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH);
    wcx.lpszMenuName=NULL;
    wcx.lpszClassName="WINCLASS1";
    wcx.hIconSm=LoadIcon(NULL,IDI_APPLICATION);
    if(RegisterClassEx(&wcx)==NULL){
        MessageBeep(MB_ICONASTERISK);
        MessageBoxA(NULL,"Класс не зарегистрирован","Ошиибка",IDOK);
        return 0;
    }
    HWND hwnd;
    int error=0;
    if((hwnd=CreateWindowEx(NULL,"WINCLASS1","First Window",WS_VISIBLE,
        100,100,800,600,NULL,NULL,h,NULL))==NULL){
        MessageBeep(MB_ICONASTERISK);
        error=GetLastError();
        MessageBoxA(NULL,"Окно не создано","Ошибка",IDOK);
        //return error;
    }
    return error;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2015, 16:41
Ответы с готовыми решениями:

Создать окно WinAPI
выдает ошибку с2059: синтаксическая ошибка:, ругается на эту строчку hwnd =...

Как создать окно на WinAPI
Здравствуйте ,я хочу создать окно на WinAPI ,как я выяснил есть такая функция как CreateWindow();...

Как создать окно в WinAPI
У кого среда Rad Studio помогите!!! почему не создаётся окно через WinAPI, компиль ругается на 2...

Помогите создать окно на WinAPI c помощью классов
Добрый день всем.Хочу создать окно на основе классов,то есть регистрацию окна,создание,показ на...

3
43 / 43 / 21
Регистрация: 24.08.2015
Сообщений: 136
21.09.2015, 17:08 2
Лучший ответ Сообщение было отмечено banbezv1999 как решение

Решение

banbezv1999, Заполняй класс окна правильно, добавь wcx.hInstance=h;
1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
21.09.2015, 19:47 3
Вот посмотри:

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
//Тут всякие переменные 
TCHAR czClassName[] = L"myClass";   //имя класса окна произвольно
TCHAR czFormName[] = L"Это мое окно"; //название окна в заголовке
 
//тут заполняем класс окна, определяем так сказать как окно должно выглядить  
ATOM myRegistryClass(HINSTANCE hInst, int cmdMode)
{
    WNDCLASS cw;
 
    cw.style = CS_VREDRAW | CS_HREDRAW;
    cw.cbClsExtra = 0;
    cw.cbWndExtra = 0;
    cw.hbrBackground = (HBRUSH)(COLOR_WINDOW +2);
    cw.hCursor = LoadCursor(NULL, IDC_ARROW);
    cw.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    cw.hInstance = hInst;
    cw.lpfnWndProc = WndProc;
    cw.lpszClassName = czClassName;
    cw.lpszMenuName = NULL;
 
    RegisterClass(&cw);
 
    return 0;
}
 
 
//тут на базе класс создаем окно
BOOL InitInstance(HINSTANCE hInst, int Mode)
{
 
 
    hwndA = CreateWindow(
        czClassName, 
        czFormName,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, 
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        NULL,
        NULL,
        hInst,
        NULL);
 
    ShowWindow(hwndA, Mode);
    UpdateWindow(hwndA);
 
    return TRUE;
}
 
 
 
 
/*Главная функция, тут вход в программу*/
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR IpszCmdParam, int cmdShow)
{  
    MSG msg;
    
    myRegistryClass(hInst, cmdShow);
    InitInstance(hInst, cmdShow);
    
    while (GetMessage (&msg, NULL, 0, 0))
    {
        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }
 
    return 0;
}
Если чего моленько не так извиняйте вроде работать должно.
1
Brainsbreaker
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
21.09.2015, 20:45 4
n971030, в первом посте к коду уже добавили одно, там не хватало только этого:
C++
1
2
3
4
MSG msg;
 
while (GetMessage (&msg, NULL, 0, 0))
    DispatchMessage (&msg);
А в 13-й строке у тебя, так делать не надо. Это уже не серый цвет, который GRAY_BRUSH, а COLOR_MENUTEXT... какой-то.
1
21.09.2015, 20:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2015, 20:45
Помогаю со студенческими работами здесь

Как создать блокирующее окно используя WinAPI?
Необходимо создать окно, которое будет полностью блокировать работу пользователя, пока он его не...

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

Не могу понять как создать дочернее окно
Вот сам код где и что надо дописать? #include &lt;windows.h&gt; #include &lt;stdlib.h&gt; #include...

Winapi окно и кнопки
Результат задачи это пятнашки но моя задача просто создать кнопки.По этапам: 1.Создание окна...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru