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

Подскажите в чем ошибка?! - C++

Восстановить пароль Регистрация
 
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
29.08.2011, 00:12     Подскажите в чем ошибка?! #1
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
#include<windows.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE my_hinstance, HINSTANCE hPrevIinstance, LPSTR lpCmLine , int nCmShow)
{
    
    HWND myHwnd;
    LPCWSTR myClass =TEXT("Мой класс");
    WNDCLASSEX Wnd;
    MSG msg;
    
 
    Wnd.cbSize         =sizeof(WNDCLASSEX);
    Wnd.style          =CS_HREDRAW |CS_VREDRAW;
    Wnd.lpfnWndProc    =WndProc;
    Wnd.cbClsExtra     =0;
    Wnd.cbWndExtra     =0;
    Wnd.hInstance      =my_hinstance;
    Wnd.hIcon          =LoadIcon(NULL, IDI_APPLICATION);
    Wnd.hCursor        =LoadCursor(NULL, IDC_ARROW);
    Wnd.hbrBackground  =(HBRUSH)GetStockObject(WHITE_BRUSH);
    Wnd.lpszMenuName   =NULL;
    Wnd.lpszClassName  =myClass;
    
    if(RegisterClassEx(&Wnd))
    {
        MessageBox(NULL,L"         RegisterClassEx         ",L"Erroe",MB_OK);
        return 0;
    }
 
    myHwnd = CreateWindow(
        myClass,
        L"___________",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        0,
        CW_USEDEFAULT,
        0,
        (HWND)NULL,
        (HMENU)NULL,
        (HINSTANCE) my_hinstance,
        NULL);
    if(!myHwnd)
    {
        MessageBox(NULL, L"         CreateWindow         ", L"Error",MB_OK);
        return 0;
    }
 
    ShowWindow(myHwnd,nCmShow );
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
 
}
 
LRESULT CALLBACK WndProc(HWND myHwnd, UINT uMsg, WPARAM wParam,LPARAM lParam)
{
    HDC Hdc;
    RECT rect;
    PAINTSTRUCT ps;
    switch(uMsg)
    {
    case WM_PAINT:
 
            Hdc = BeginPaint(myHwnd, &ps);
            GetClientRect(myHwnd, &rect);
            DrawText(Hdc, L"++++++++",-1,&rect, DT_CENTER);
            EndPaint(myHwnd, &ps);
            break;
 
    case WM_CLOSE:
 
        DestroyWindow(myHwnd);
        break;
 
    case WM_DESTROY:
 
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(myHwnd, uMsg, wParam, lParam);
    }
    return 0;
}
Почему не создает окно приложения?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2011, 00:12     Подскажите в чем ошибка?!
Посмотрите здесь:

C++ Подскажите в чем ошибка
C++ Подскажите в чем ошибка
Подскажите в чем ошибка C++
C++ Подскажите в чем ошибка
подскажите в чем ошибка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Digit@ll
Brainsbreaker
 Аватар для Digit@ll
832 / 343 / 27
Регистрация: 01.02.2011
Сообщений: 1,484
29.08.2011, 02:42     Подскажите в чем ошибка?! #2
1. Wnd.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
2. if (!RegisterClassEx(&Wnd))// N.B.
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
29.08.2011, 13:02  [ТС]     Подскажите в чем ошибка?! #3
И? Все равно не выводит то что надо.
-=ЮрА=-
Заблокирован
Автор FAQ
29.08.2011, 15:39     Подскажите в чем ошибка?! #4
Цитата Сообщение от Ree.exe Посмотреть сообщение
myHwnd = CreateWindow(
* * * * * * * * myClass,
* * * * * * * * L"___________",
* * * * * * * * WS_OVERLAPPEDWINDOW,
* * * * * * * * CW_USEDEFAULT,
* * * * * * * * 0,
* * * * * * * * CW_USEDEFAULT,
* * * * * * * * 0,
* * * * * * * * (HWND)NULL,
* * * * * * * * (HMENU)NULL,
* * * * * * * * (HINSTANCE) my_hinstance,
* * * * * * * * NULL);
* * * * if(!myHwnd)
- может грабли со 2-м параметром???
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
29.08.2011, 16:27     Подскажите в чем ошибка?! #5
а что не так? какой компилятор? на что ругается?

Все равно не выводит то что надо
смотри Венгерские нотации может быть так что неверна эта строка HDC Hdc, вместо HDC hDc (префикс h в нотациях), или так что явное преобразование к типу LONG вместо LPCTSTR вот как в мой работе было (все работает).
C++
1
2
3
4
5
6
7
8
9
10
11
hWnd = CreateWindowEx(WS_EX_CLIENTEDGE, ClassPName, "Курсовая работа",
(WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX |\
WS_MAXIMIZEBOX) &~(WS_THICKFRAME), 250, 250, 600, 495, NULL, NULL,hInstance, NULL);
if(!hWnd){
      MessageBox(NULL,"не удается создать родительское окно",
            "Ошибка!", MB_OK);
      return 2;
}
......................................................
            rect.left = rect.left + 15;
            DrawText(hDC, "Оперативная память", -1, &rect, DT_LEFT | DT_TOP);

хотя нотации необязательны
An1ka
65 / 70 / 2
Регистрация: 30.06.2011
Сообщений: 176
29.08.2011, 16:48     Подскажите в чем ошибка?! #6
Во первых проверка на регистрацию класса:
C++
1
if( !RegisterClassEx(&Wnd)) { ... }
If the function fails, the return value is zero.

Во вторых структура WNDCLASSEX не до конца заполнена. Либо до конца заполнить все поля структуры, добавить:
C++
1
Wnd.hIconSm = LoadIcon( NULL, IDI_APPLICATION);
Либо обнулить при создании:
C++
1
WNDCLASSEX Wnd = { 0};
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
29.08.2011, 17:17  [ТС]     Подскажите в чем ошибка?! #7
Сори я немного оплашал, ошибка была исправлена во втором посте, тока теперь у меня вопрос насчёт курсора
C++
1
2
3
4
5
6
7
8
9
10
11
12
Wnd.cbSize         =sizeof(WNDCLASSEX);
    Wnd.style          =CS_HREDRAW |CS_VREDRAW;
    Wnd.lpfnWndProc    =WndProc;
    Wnd.cbClsExtra     =0;
    Wnd.cbWndExtra     =0;
    Wnd.hInstance      =my_hinstance;
    Wnd.hIcon          =LoadIcon(NULL, IDI_APPLICATION);
    Wnd.hCursor        =LoadIcon (NULL, IDC_ARROW);
    Wnd.hbrBackground  =(HBRUSH)GetStockObject(WHITE_BRUSH);
    Wnd.lpszMenuName   =NULL;
    Wnd.lpszClassName  =myClass;
    Wnd.hIconSm        =LoadIcon( NULL, IDI_APPLICATION);
Wnd.hCursor =LoadIcon (NULL, IDC_ARROW); IDC_ARROW должна ведь быть стандартная стрелка?!
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
29.08.2011, 18:20     Подскажите в чем ошибка?! #8
IDC_ARROW должна ведь быть стандартная стрелка?!
Digit@ll
Brainsbreaker
 Аватар для Digit@ll
832 / 343 / 27
Регистрация: 01.02.2011
Сообщений: 1,484
29.08.2011, 18:42     Подскажите в чем ошибка?! #9
Ree.exe, noob c++, не?
Ree.exe
29.08.2011, 22:42  [ТС]
  #10

Не по теме:

Цитата Сообщение от Digit@ll Посмотреть сообщение
Ree.exe, noob c++, не?
Ну может и недавно изучаю его, но вместо стандартного курсора в виде стрелочки у меня был какой-то прямоугольник!!!

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2011, 04:01     Подскажите в чем ошибка?!
Еще ссылки по теме:

подскажите в чем ошибка? C++
Подскажите в чем ошибка! C++
C++ Подскажите в чем ошибка

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

Или воспользуйтесь поиском по форуму:
Digit@ll
Brainsbreaker
 Аватар для Digit@ll
832 / 343 / 27
Регистрация: 01.02.2011
Сообщений: 1,484
30.08.2011, 04:01     Подскажите в чем ошибка?! #11
То был не прямоугольник, а иконка твоего приложения, а noob c++ это ник здесь есть такой, тоже "чудеса" творит. )
Yandex
Объявления
30.08.2011, 04:01     Подскажите в чем ошибка?!
Ответ Создать тему
Опции темы

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