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

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

Войти
Регистрация
Восстановить пароль
 
Alukard Integral
0 / 0 / 0
Регистрация: 03.11.2008
Сообщений: 6
#1

Зависаем-с конкретно... - C++

04.11.2008, 23:35. Просмотров 912. Ответов 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
//   Демонстрация модального  диалога
#include <Windows.h> 
#include <String.h> 
#include <Stdio.h> 
#include "MyHeader.h"
 
LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM); BOOL CALLBACK DialogFunc(HWND,UINT,WPARAM,LPARAM);
 
char szWinName[] = "МоеОкно";  // Имя класса окна
HINSTANCE hInst;
 
HBITMAP hBit1;
HBITMAP hBit2;
int X=1, Y=1; 
 
int WINAPI WinMain(HINSTANCE hThisInst, 
                   HINSTANCE hPrevInst, 
                   LPSTR     lpszArgs, 
                   int       nWinMode) 
   {
   HWND     hwnd;
   MSG      msg;
   WNDCLASS wcl;
   HACCEL   hAccel;
   // Определение класса окна:
   wcl.hInstance=hThisInst;   // Дескриптор приложения
   wcl.lpszClassName=szWinName;  // Имя класса окна
   wcl.lpfnWndProc=WindowFunc;      // Функция окна
   wcl.style=0;                  // Стиль по умолчанию
   wcl.hIcon=LoadIcon(NULL,IDI_APPLICATION); // Иконка   
   wcl.hCursor=LoadCursor(NULL,IDC_ARROW);   // Курсор   
   wcl.lpszMenuName="MYMENU";                // Меню
   wcl.cbClsExtra=0;             // Без дополнительной
   wcl.cbWndExtra= 0;            // информации
   // Определить заполнение окна белым цветом   
   wcl.hbrBackground=
                  (HBRUSH)GetStockObject(WHITE_BRUSH);
   // Зарегистрировать класс окна
   if(!RegisterClass(&wcl))
      return 0;
   // Создать окно
   hwnd=CreateWindow(szWinName,     // Имя класса 
                     "Диалоги",     // Заголовок 
                     WS_OVERLAPPEDWINDOW,  // Стиль 
                     CW_USEDEFAULT, // Х-координата 
                     CW_USEDEFAULT, // Y-координата
                     CW_USEDEFAULT, // Ширина
                     CW_USEDEFAULT, // Высота 
                     HWND_DESKTOP,  // Нет родит. окна 
                     NULL,          // Нет меню
                     hThisInst, // Дескрип. приложения 
                     NULL);  // Без дополн. аргументов
 
   hInst=hThisInst; // Сохранить дескриптор приложения
   // Загрузить акселераторы:
   hAccel=LoadAccelerators(hThisInst,"MYMENU");
   // Показать окно и перерисовать содержимое: 
   ShowWindow(hwnd,nWinMode); 
   UpdateWindow(hwnd);   // Запустить цикл обработки сообщений: 
     
   hBit1=LoadBitmap(hThisInst,"MyBit2");  // Загр. растр
   hBit2=LoadBitmap(hThisInst,"MyBit3");  
 
   while(GetMessage(&msg,NULL,0,0)) 
      {
      if(!TranslateAccelerator(hwnd,hAccel,&msg))
         {
         TranslateMessage(&msg); // Использ. клавиатуру
         DispatchMessage (&msg); // Вернуться к Windows
         }
      }
      return msg.wParam;
   }
 
//  Следующая функция вызывается операционной системой 
//  Windows и получает в качестве параметров сообщения //  из очереди сообщений данного приложения
 
LRESULT CALLBACK WindowFunc (HWND   hwnd, 
                             UINT   message,                     
                             WPARAM wParam, 
                             LPARAM lParam)
   {
    HDC DC;
  HDC memDC;
// PAINTSTRUCT paintstruct;
 
   switch(message)
      {
         case WM_COMMAND: 
         switch(LOWORD(wParam))
         { 
     case IDM_DIALOG1:
         DialogBox(hInst,"MYDB",hwnd,
                 DialogFunc);
             break; 
           case IDM_HELP:
            MessageBox(hwnd, 
                "Помощь","Помощь",
                MB_OK) ;
            break;
         }
         break;
 
     case WM_PAINT:      // Перерисовка рабочей области         
                  DC=GetDC(hwnd);                   // Получить DC
                memDC=CreateCompatibleDC(DC);     // Совместимый DC
                SelectObject(memDC,hBit1);
                BitBlt(DC,X,Y,77,77,
                    memDC,0,0,SRCCOPY); // Вывод растра на экран
                ReleaseDC(hwnd,DC);        // Освободить DC
                DeleteDC(memDC);      
                   break;
 
            case  WM_LBUTTONDOWN:
                DC=GetDC(hwnd);                   // Получить DC
                memDC=CreateCompatibleDC(DC);     // Совместимый DC
                SelectObject(memDC,hBit1);
                BitBlt(DC,LOWORD(lParam),HIWORD(lParam),77,77,
                    memDC,0,0,SRCCOPY); // Вывод растра на экран
                ReleaseDC(hwnd,DC);        // Освободить DC
                DeleteDC(memDC);           // Освободить DC памяти
    
                  X = LOWORD(lParam);   // В X и Y записываются 
                  Y = HIWORD(lParam);   // текущие координаты мыши
                  InvalidateRect(hwnd,NULL,1); // Перерисов. экран
                   break;
                   
      case WM_DESTROY:     // Завершение программы   
         PostQuitMessage(0); 
         break;
 
      default:
         // Все сообщения, не обрабатываемые в данной 
         // функции, направляются на обработку по 
         // умолчанию
         return DefWindowProc(hwnd,   message, 
                              wParam, lParam);
      }
   return 0;
   }
 
// Простая функция диалога
BOOL CALLBACK DialogFunc (HWND   hdwnd,
                          UINT   message, 
                          WPARAM wParam, 
                          LPARAM lParam) 
   {
    HDC DC;
  HDC memDC;
 //  PAINTSTRUCT paintstruct;
   switch(message)
      {
      case WM_COMMAND:   // Обр-ка командных сообщений
         switch(LOWORD(wParam))
            {
        case WM_PAINT:      // Перерисовка рабочей области         
                  DC=GetDC(hdwnd);                   // Получить DC
                memDC=CreateCompatibleDC(DC);     // Совместимый DC
                SelectObject(memDC,hBit1);
                BitBlt(DC,350,100,77,77,
                    memDC,0,0,SRCCOPY); // Вывод растра на экран
                ReleaseDC(hdwnd,DC);        // Освободить DC
                DeleteDC(memDC);      
                   break;
 
            case IDD_RED:
                DC=GetDC(hdwnd);                   // Получить DC
                memDC=CreateCompatibleDC(DC);     // Совместимый DC
                SelectObject(memDC,hBit1);
                BitBlt(DC,350,100,77,77,
                    memDC,0,0,SRCCOPY); // Вывод растра на экран
                ReleaseDC(hdwnd,DC);        // Освободить DC
                DeleteDC(memDC);           // Освободить DC памяти
    
                MessageBox(hdwnd,
                    "Выбран Красный",
                    "Красный", MB_OK);
                InvalidateRect(hdwnd,NULL,1); // Перерисов. экран
 
 
               return 1; 
 
            case IDD_GREEN:
                DC=GetDC(hdwnd);                   // Получить DC
                memDC=CreateCompatibleDC(DC);     // Совместимый DC
                SelectObject(memDC,hBit2);
                BitBlt(DC,350,100,77,77,
                    memDC,0,0,SRCCOPY); // Вывод растра на экран
                
                ReleaseDC(hdwnd,DC);        // Освободить DC
                DeleteDC(memDC);           // Освободить DC памяти
                MessageBox(hdwnd,
                    "Выбран Зеленый",
                    "Зеленый", MB_OK);
                InvalidateRect(hdwnd,NULL,1); // Перерисов. экран
               return  1;
 
               
            case IDCANCEL:
                EndDialog(hdwnd,0);
                return 1; 
            }
      }
   return   0;
   }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2008, 23:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Зависаем-с конкретно... (C++):

Взялся за Cи, конкретно за Си, без инкремента. - C++
Взялся за Cи, конкретно за Си, без инкремента. До этого пол года изучал Delphi, в консольном режиме.Как мне кажется способности к изучению...

Объясните пожалуйста, как конкретно работает код - C++
Программа считывает из файла фамилии, имена, годы рождения и балы студентов, и записывает в другой файл фамилии, начинающейся с букв А и Б...

Как вывести конкретно тот товар,который соответствует условию ? - C++
Как вывести конкретно тот товар,который соответствует условию ? Постоянно выводит последний товар в списке. int max=0,min=99999; ...

Для каких элементов можно конкретно поставить задачу сортировки? - C++
Для каких элементов можно конкретно поставить задачу сортировки?

Что конкретно означает оператор . (точка) при вызове каких либо функций? - C++
Например, функция s.size() вычисляет длину строки s. Так есть где-нибудь определение этой точки? В Википедии написано &quot;Обращение к члену...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Inlight
43 / 42 / 2
Регистрация: 17.09.2008
Сообщений: 98
05.11.2008, 10:03 #2
Код
Cannot open include file: 'MyHeader.h': No such file or directory
А где файл?
0
Alukard Integral
0 / 0 / 0
Регистрация: 03.11.2008
Сообщений: 6
05.11.2008, 13:44  [ТС] #3
Cannot open include file: 'MyHeader.h': No such file or directory
А где файл?
Извиняюсь, мой косяк.
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
// Пример файла ресурсов, описывающего меню и диалог
#include "Mydialog.h"
#include <Windows.h>
 
MYMENU MENU
   {
   MENUITEM "Диалог &1", IDM_DIALOG1
   MENUITEM "Помощь",    IDM_HELP
   }
 
MYMENU ACCELERATORS 
   {
   VK_F1, IDM_DIALOG1,  VIRTKEY
   VK_F3, IDM_HELP,      VIRTKEY
   }
 
MYDB DIALOG 18, 18, 300, 150
CAPTION "Первый диалог"
STYLE DS_MODALFRAME|WS_POPUP|WS_CAPTION|WS_SYSMENU
   {
   DEFPUSHBUTTON "Батя", IDD_RED, 12, 40, 36, 14,  
                  WS_CHILD|WS_VISIBLE|WS_TABSTOP
   PUSHBUTTON "Матушка",  IDD_GREEN, 54, 40, 36, 14, 
                  WS_CHILD|WS_VISIBLE|WS_TABSTOP
 PUSHBUTTON "Кошка",  IDD_BLUE, 98, 40, 36, 14, 
                  WS_CHILD|WS_VISIBLE|WS_TABSTOP
   PUSHBUTTON "Сброс",    IDCANCEL,  52, 65, 37, 14,
                  WS_CHILD|WS_VISIBLE|WS_TABSTOP
   }
 
MyCur CURSOR MyCur.cur
MyIcon ICON MyIcon.ico
 
MyBit2 BITMAP F2.bmp
MyBit3 BITMAP M2.bmp
MyBit4 BITMAP K.bmp
 
//MyHeader.h
#define IDM_DIALOG1 100 
#define IDM_DIALOG2 101 
#define IDM_HELP    102
#define IDD_RED     103 
#define IDD_GREEN   104
#define IDD_BLUE   105
Надо будет сделать bmp-ки чтобы заработало. Мои не грузятся. :'(
0
Inlight
43 / 42 / 2
Регистрация: 17.09.2008
Сообщений: 98
05.11.2008, 13:54 #4
#include "Mydialog.h"
а этот файл где искать? Бмп-шки упакуй в zip-архив. а лучше запакуй и кинь весь проект (сpp, h, ресурсы...)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2008, 13:54
Привет! Вот еще темы с ответами:

Посоветуйте конкретно БП до 100$ - Блоки питания
Посоветуйте конкретно БП до 100$. i7-3770K NH-U12P SE2 ASUS P8Z77-V DDR3 RAM 8Gb Samsung 1333 - 2шт SSD OCZ Vertex...

Что конкретно сломалось? - Компьютерное железо
Подскажите, все было нормально, потом на мониторе появились полосы, сверху в низ, по ощущению вроде как это не монитор, а видео карта. ...

Конкретно заглючил комп - Компьютерное железо
Сегодня начались сильные глюки,сейчас опишу по порядку: 1.Случился непонятный глюк-комп работает,но монитор перешел в режим ожидания(так...

Силь конкретно для IE 8 - HTML, CSS
Всем доброго времени суток. У меня такой вопрос как задать стиль конкретно для IE 8.


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

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

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