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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,107
#1

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

05.05.2012, 23:01. Просмотров 446. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2012, 23:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите оптимизировать код (C++):

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

Оптимизировать код - C++
Доброго времени суток, как можно оптимизировать код что бы он быстрее работал ? Дана последовательность из n чисел a1, a2,..., an. C...

Оптимизировать код - C++
Первое число входного потока - количество чисел Дальше идут те самые числа Надо найти кол-во пар чисел, для которых выполняется nums &lt;=...

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

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

Нужно оптимизировать код - C++
Вобщем код не принемает сайт, немного нагружает и по времени не проходит задание Август и Беатриса играют в игру. Август загадал...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
05.05.2012, 23:05 #2
Цитата Сообщение от Helldrg Посмотреть сообщение
Меня, например, очень смущает типа такие записи HWND hWnd = General::_hWnd;
Чем они вас смущают? Это обычное сокращение. Можно вообще тупо писать вместо hWnd General::_hWnd и будет тоже самое.
0
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,107
05.05.2012, 23:09  [ТС] #3
А почему через указатель не работает? Так же по идее правильно будет))
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
05.05.2012, 23:10 #4
Helldrg, например?
0
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,107
05.05.2012, 23:13  [ТС] #5
типа HWND *hWnd = &General::_hWnd; ведь _hWnd сразу создается после создания объекта general? тогда так и должно быть))))
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
05.05.2012, 23:17 #6
Helldrg, интересно, только не понятно для чего здесь нужен указатель
0
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,107
05.05.2012, 23:20  [ТС] #7
ну я так понимаю, что указатель HWND *hWnd меньше весит переменной HWND hWnd
И вообще я не эксперт в ООП, а только учусь)) так что строго не суди)
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
05.05.2012, 23:26 #8
Helldrg, указатель весит ровно столько, сколько весит HWND.
Можно вообще сделать без затрат. Напишите так:
C++
1
HWND &hWnd = General::_hWnd;
Тогда не будет никаких затрат на память и на производительность.
Только стоит ли игра свеч из-за нескольких байт?
1
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,107
05.05.2012, 23:30  [ТС] #9
в данной ситуации конечно же нет! Но бывают случаи когда не в несколько байт, а больше разница будет
HWND &hWnd = General::_hWnd;
А это типа ссылки получается что ли?
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
05.05.2012, 23:32 #10
Helldrg, для конкретной ситуации конкретный код. В этот случае код вполне правильный.
Цитата Сообщение от Helldrg Посмотреть сообщение
типа ссылки получается что ли
Да, ссылка. Просто псевдоним переменной.
1
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,107
05.05.2012, 23:37  [ТС] #11
Спасибо за комментарии!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2012, 23:37
Привет! Вот еще темы с ответами:

Как оптимизировать код? - C++
Как оптимизировать код, чтобы работала программа быстрее #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iomanip&gt; using namespace...

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

Задача с E-olymp (оптимизировать код) - C++
Здравствуйте, уважаемые форумчане! Снова решаю задачи с сайта E-olymp. У меня возникла следующая проблема: Есть несложная задача: del И,...

Оптимизировать код и обьяснить с матрицами. - C++
Ниже предоставлены 3 кода. Я прошу вас, если это возможно, подсказать мне как можно их сделать короче или лучше, так же если есть варианты...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.05.2012, 23:37
Ответ Создать тему
Опции темы

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