Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
17 / 17 / 10
Регистрация: 14.06.2012
Сообщений: 151
1

CreateWindow выдает ошибку

02.04.2013, 15:24. Просмотров 674. Ответов 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//#include <d3d9.h>
#include <Windows.h>
 
 
HWND MainWindowHandle = 0;
 
bool InitWindowsApp (HINSTANCE instanceHandle, int show);
 
int Run();
 
LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int nShowCmd)
{
    if (!InitWindowsApp(hInstance, nShowCmd))
    {
        ::MessageBox(0, L"Init Failed!", L"Error", MB_OK);
 
        int err = GetLastError();
        if(err!=0)
        {
            ::MessageBox(0, L"=(", 0, MB_OK); //это сообщение при условии !=0 не появляеться!
        }
 
        return 0;
    }
    
    return Run();
}
 
bool InitWindowsApp (HINSTANCE instanceHandle, int show)
{
    WNDCLASS wc;
 
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = instanceHandle;
    wc.hIcon = ::LoadIcon(0, IDI_APPLICATION);
    wc.hCursor = ::LoadCursor (0, IDC_ARROW);
    wc.hbrBackground = static_cast<HBRUSH>(::GetStockObject(WHITE_BRUSH));
    wc.lpszMenuName = 0;
    wc.lpszClassName = L"Каркас";
 
    if (!::RegisterClass(&wc))
    {
        ::MessageBox(0, L"Класс окна не удалось зарегестрировать!", 0, 0);
        return false;
    }
 
    MainWindowHandle = ::CreateWindow (L"Hello", L"Hello", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                                       0, 0, instanceHandle, 0);
 
    if (MainWindowHandle == 0)
    {
        ::MessageBox (0, L"Окно не возможно создать!", 0, 0);
        return false;
    }
 
    ::ShowWindow(MainWindowHandle, show);
    ::UpdateWindow(MainWindowHandle);
 
    return true;
}
 
int Run()
{
    MSG msg;
 
    ::ZeroMemory (&msg, sizeof(MSG));
 
    while(::GetMessage(&msg, 0, 0, 0))
    {
        ::TranslateMessage(&msg);
        ::DispatchMessage(&msg);
    }
 
    return msg.wParam;
}
 
LRESULT CALLBACK WndProc (HWND windowHandle, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg)
    {
    case WM_LBUTTONDOWN:
        ::MessageBox(0, L"Труляля", L"Left", MB_OK);
        return 0;
    case WM_KEYDOWN:
        if (wParam == VK_ESCAPE)
        {
            ::DestroyWindow(MainWindowHandle);
        }
        return 0;
    case WM_DESTROY:
        ::PostQuitMessage(0);
        return 0;
    }
    
    return ::DefWindowProc(windowHandle, msg, wParam, lParam);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2013, 15:24
Ответы с готовыми решениями:

СМА Hansa PG5510A412 s/n 04454930213108 после нескольких минут выдает ошибку, выдает ошибку
Hansa PG5510A412 s/n 04454930213108 отработала 2 месяца на этом же месте, магазин где брали...

При вызове CreateWindow в функции вылетает необработанное исключение (найти и исправить ошибку)
При вызове CreateWindow в функции HRESULT Render_CreateWindow(LPCTSTR wclass, LPCTSTR wname,...

Программа которая выдает платформу компьютера выдает ошибку
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

При решении программа выдаёт значение функции, равное 0 или выдаёт ошибку. Что не так?
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cmath&gt; using namespace std; long Fact(short...

3
2819 / 1629 / 252
Регистрация: 03.12.2007
Сообщений: 4,223
02.04.2013, 15:40 2
Регистрируешь класс "Каркас", а окно создаёшь класса "Hello".
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30308 / 19805 / 7745
Регистрация: 22.10.2011
Сообщений: 34,547
Записей в блоге: 6
02.04.2013, 15:42 3
Цитата Сообщение от XpertVision Посмотреть сообщение
В чем может быть ошибка?
Цитата Сообщение от XpertVision Посмотреть сообщение
C++
1
MainWindowHandle = ::CreateWindow (L"Hello", L"Hello",
Первый параметр - это что? Имя класса. У тебя зарегистрированный класс по-другому называется, если что.
1
17 / 17 / 10
Регистрация: 14.06.2012
Сообщений: 151
02.04.2013, 15:43  [ТС] 4
Всем спасибо.) Сам нашол, только хотел "отбой" написать.)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2013, 15:43

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

Подскажите как исправить ошибку. прога ломается на 79 строке. а ошибку не выдает
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int chisla(int...

В коде выдает ошибку на 15 строчке. Мне надо исправить эту ошибку
procedure TForm1.BOkClick(Sender: TObject); var e1, e2: double; begin Label1.Caption := '';...

Найти ошибку в программе: в visual studio выдает ошибку
#include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; int main() ...

Не могу найти ошибку. Нажимаю на клавишу, выдает ошибку
uses ABCObjects,GraphABC; const Image_0 = '0_765e9_6a3e424a_S.png'; var...


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

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

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