Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,229
1

Помогите оптимизировать код

05.05.2012, 23:01. Просмотров 570. Ответов 10
Метки нет (Все метки)

Здравствуйте! Помогите, пожалуйста, оптимизировать его:
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "main.h"
///============================================================================================================
/// Name: WinMain
/// Desc:
///============================================================================================================
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow)
{
    General general(500, 500);
    general.MyRegisterClass(hInst);
    general.InitInstance(hInst, nCmdShow);
              
    MSG messages = general.messages;
    while ( messages.message != WM_QUIT )
    {
        if( PeekMessage( &messages, NULL, 0, 0, PM_REMOVE ) )
        {
            TranslateMessage(&messages);
            DispatchMessage(&messages);
        }
    }
    return messages.wParam;
}
main.h
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
#include <windows.h>
 
class General 
{
      public:
             General(int,int);
             static LRESULT CALLBACK WindowProcedure ( HWND, UINT, WPARAM, LPARAM );
             ATOM MyRegisterClass(HINSTANCE);
             BOOL InitInstance(HINSTANCE, int);
             MSG messages;
      private:
             int _iWidth;
             int _iHeight;
             HWND _hWnd;
              
             WNDCLASSEX _wcex;
              
};
///============================================================================================================
/// Name: General
/// Desc:
///============================================================================================================
General::General(int iWidth, int iHeight)
{
    General::_iWidth = iWidth;
    General::_iHeight = iHeight;
};
 
///============================================================================================================
/// Name: MyRegisterClass
/// Desc:
///============================================================================================================
ATOM General::MyRegisterClass(HINSTANCE hInst)
{
    WNDCLASSEX wcex = General::_wcex;
    wcex.hInstance          = hInst;
    wcex.lpszClassName      = "Class1";
    wcex.lpfnWndProc        = WindowProcedure;
    wcex.style              = CS_DBLCLKS;
    wcex.cbSize             = sizeof (WNDCLASSEX);
    wcex.hIcon              = LoadIcon (NULL, IDI_APPLICATION);
    wcex.hIconSm            = LoadIcon (NULL, IDI_APPLICATION);
    wcex.hCursor            = LoadCursor (NULL, IDC_ARROW);
    wcex.lpszMenuName       = NULL;
    wcex.cbClsExtra         = 0;
    wcex.cbWndExtra         = 0;
    wcex.hbrBackground      = (HBRUSH)GetStockObject(BLACK_BRUSH);
 
    return RegisterClassEx(&wcex);
}
///============================================================================================================
/// Name: InitInstance
/// Desc:
///============================================================================================================
BOOL General::InitInstance(HINSTANCE hInst, int nCmdShow)
{
    HWND hWnd = General::_hWnd;
    hWnd = CreateWindowEx ( 0, "Class1", "Application", WS_POPUP, 0, 0, General::_iWidth, General::_iHeight, HWND_DESKTOP, 0, hInst, 0 );
    ShowCursor(FALSE);
    ShowWindow (hWnd, nCmdShow);
    SetFocus(hWnd);
    UpdateWindow (hWnd);
    SetForegroundWindow(hWnd);
    return TRUE;
}
///============================================================================================================
/// Name: WindowProcedure
/// Desc:
///============================================================================================================
LRESULT CALLBACK General::WindowProcedure (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
           case WM_CLOSE:
           {
                              
           }
           break;
        case WM_KEYDOWN:
            switch( wParam )
            {
                case VK_ESCAPE:
                    PostQuitMessage(0);
                    break;
            }
            break;
 
        default:
            return DefWindowProc (hWnd, message, wParam, lParam);
            break;
    }
    return 0;
}
Меня, например, очень смущает типа такие записи HWND hWnd = General::_hWnd;
По идее их через указатель надо делать, но я пробывал у меня не получилось.
Заранее благодарен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2012, 23:01
Ответы с готовыми решениями:

Помогите оптимизировать код
Помогите пожалуйста разобраться, хотелось бы чтобы это прграммка наконец-то заработала. Задача...

Оптимизировать код
Доброго времени суток, как можно оптимизировать код что бы он быстрее работал ? Дана...

Оптимизировать код
Первое число входного потока - количество чисел Дальше идут те самые числа Надо найти кол-во пар...

Исправить и оптимизировать код
нужна помощь по исправлению ошибок Написал программу она работает все отлично но препод сказал...

10
Эксперт С++
516 / 420 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
05.05.2012, 23:05 2
Цитата Сообщение от Helldrg Посмотреть сообщение
Меня, например, очень смущает типа такие записи HWND hWnd = General::_hWnd;
Чем они вас смущают? Это обычное сокращение. Можно вообще тупо писать вместо hWnd General::_hWnd и будет тоже самое.
0
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,229
05.05.2012, 23:09  [ТС] 3
А почему через указатель не работает? Так же по идее правильно будет))
0
Эксперт С++
516 / 420 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
05.05.2012, 23:10 4
Helldrg, например?
0
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,229
05.05.2012, 23:13  [ТС] 5
типа HWND *hWnd = &General::_hWnd; ведь _hWnd сразу создается после создания объекта general? тогда так и должно быть))))
0
Эксперт С++
516 / 420 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
05.05.2012, 23:17 6
Helldrg, интересно, только не понятно для чего здесь нужен указатель
0
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,229
05.05.2012, 23:20  [ТС] 7
ну я так понимаю, что указатель HWND *hWnd меньше весит переменной HWND hWnd
И вообще я не эксперт в ООП, а только учусь)) так что строго не суди)
0
Эксперт С++
516 / 420 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
05.05.2012, 23:26 8
Helldrg, указатель весит ровно столько, сколько весит HWND.
Можно вообще сделать без затрат. Напишите так:
C++
1
HWND &hWnd = General::_hWnd;
Тогда не будет никаких затрат на память и на производительность.
Только стоит ли игра свеч из-за нескольких байт?
1
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,229
05.05.2012, 23:30  [ТС] 9
в данной ситуации конечно же нет! Но бывают случаи когда не в несколько байт, а больше разница будет
HWND &hWnd = General::_hWnd;
А это типа ссылки получается что ли?
0
Эксперт С++
516 / 420 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
05.05.2012, 23:32 10
Helldrg, для конкретной ситуации конкретный код. В этот случае код вполне правильный.
Цитата Сообщение от Helldrg Посмотреть сообщение
типа ссылки получается что ли
Да, ссылка. Просто псевдоним переменной.
1
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,229
05.05.2012, 23:37  [ТС] 11
Спасибо за комментарии!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2012, 23:37

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

Как оптимизировать код
Доброй ночи господа у меня к вам такая просьба как можно упростить данный код? #include &lt;iostream&gt;...

Нужно оптимизировать код
Нужно максимально сократить код #include &lt;iostream&gt; using namespace std; int main(int...

Оптимизировать и минимализировать код
Cделал легкую прогу. Понимаю логики 0 в коде. Можете помочь оптимизировать код? А заодно и сделать...

Как оптимизировать код?
Вот такой код, написанный для микроконтроллера импульсного блока питания. Просто интересно мнение,...


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

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

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