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

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

Войти
Регистрация
Восстановить пароль
 
lylu
Сообщений: n/a
#1

4 прямоугольника и клиенское окно - C++

05.11.2013, 12:32. Просмотров 191. Ответов 0
Метки нет (Все метки)

Не получается выйти с клиентской области при навигации курсора, без закрашивания (нужно чтобы не закрашивал при выходе с клиентской области(окна), выходя за границы области курсором) Возможно не доходит сообщение

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
#include "windows.h"
 
LRESULT CALLBACK WindowProc(
  HWND,     
  UINT,      
  WPARAM,  
  LPARAM);   
 
int WINAPI WinMain(
  HINSTANCE hInstance,      
  HINSTANCE hPrevInstance,  
  LPSTR lpCmdLine,          
  int nCmdShow              
)
{   
    WNDCLASS wc = {0};
    wc.style = CS_HREDRAW|CS_VREDRAW;
    wc.hInstance = hInstance;
    wc.lpszClassName = "Classretertert";
    wc.lpfnWndProc = WindowProc;
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
 
    if (0 == RegisterClass(&wc))
        return 0;
     
    HWND hwndmain = CreateWindow(
        wc.lpszClassName,  
        "Window1", 
        WS_OVERLAPPEDWINDOW,        
        100,                
        100,                
        600,           
        600,          
        NULL,      
        NULL,          
        hInstance,  
        NULL);
      
    ShowWindow(hwndmain, nCmdShow);
    UpdateWindow(hwndmain);
 
    MSG Msg;
    while (GetMessage(&Msg, 0,0,0))
        DispatchMessage(&Msg);
    return 0;
}
 
    LRESULT CALLBACK WindowProc(
        HWND hWnd,      
        UINT uMsg,      
        WPARAM wParam,  
        LPARAM lParam   
)
{   
    switch (uMsg) {
 
    case WM_SIZE:{ 
        InvalidateRect(hWnd,NULL,TRUE);
        return 0;
                 }
 
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
 
 
    case WM_PAINT:{
        HDC hdc;
        PAINTSTRUCT ps;
        RECT rect;
 
        hdc=BeginPaint(hWnd,&ps);
        GetClientRect(hWnd,&rect);
        
        LONG xCenter = rect.right/2;
        LONG yCenter = rect.bottom/2;
 
        Rectangle(hdc, rect.left, yCenter, rect.right, yCenter + 2);
        Rectangle(hdc, xCenter, rect.top, xCenter + 1, rect.bottom);
    
    }
 
 
        InvalidateRect(hWnd,0,FALSE);
        return 0;
 
    LRESULT CALLBACK WindowProc(
        HWND hwnd,      // handle to window
        UINT uMsg,       // WM_NCMOUSEMOVE
        WPARAM wParam,   // hit-test value 
        LPARAM lParam    // cursor position 
    
 
);
 
     case WM_MOUSEMOVE:{
            HDC hdc;
            POINT ptCursor;
            char szMsg[128];
            RECT rect;
            GetClientRect(hWnd,&rect);        
            LONG xCenter = rect.right/2;
            LONG yCenter = rect.bottom/2;
    
            hdc=GetDC(hWnd);
            GetCursorPos(&ptCursor);
            ScreenToClient(hWnd,&ptCursor);
                                
            if (ptCursor.x<xCenter && ptCursor.y<yCenter){
                SelectObject(hdc, CreateSolidBrush(RGB(255, 40, 140)));
                Rectangle(hdc, rect.left, rect.top, xCenter, yCenter);}
                
            else {SelectObject(hdc, CreateSolidBrush(RGB(255, 255, 255)));
                Rectangle(hdc, rect.left, rect.top, xCenter, yCenter);}
    
            
            if (ptCursor.x<rect.right && ptCursor.y<yCenter && ptCursor.x>xCenter){
                SelectObject(hdc, CreateSolidBrush(RGB(255, 40, 140)));
                Rectangle(hdc, xCenter + 1, rect.top, rect.right, yCenter);}
                
            else {SelectObject(hdc, CreateSolidBrush(RGB(255, 255, 255)));
                Rectangle(hdc, xCenter + 1, rect.top, rect.right, yCenter);}
    
            
            if (ptCursor.x<xCenter && ptCursor.y<rect.bottom && ptCursor.y>yCenter){
                SelectObject(hdc, CreateSolidBrush(RGB(255, 40, 140)));
                Rectangle(hdc, rect.left, yCenter + 1, xCenter, rect.bottom);}
           
            else {SelectObject(hdc, CreateSolidBrush(RGB(255, 255, 255)));
                Rectangle(hdc, rect.left, yCenter + 1, xCenter, rect.bottom);}
            
 
            if (ptCursor.x>xCenter && ptCursor.y>yCenter && ptCursor.x<rect.right && ptCursor.y<rect.bottom){
                SelectObject(hdc, CreateSolidBrush(RGB(255, 40, 140)));
                Rectangle(hdc, xCenter + 1, yCenter + 1, rect.right, rect.bottom);}
           
            else {SelectObject(hdc, CreateSolidBrush(RGB(255, 255, 255)));
                Rectangle(hdc, xCenter + 1, yCenter + 1, rect.right, rect.bottom);}
                
 
            ReleaseDC(hWnd,hdc);
       
            return 0;
 
                          
                          }
   }
    
    return DefWindowProc(hWnd,uMsg,wParam,lParam);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2013, 12:32     4 прямоугольника и клиенское окно
Посмотрите здесь:

Метод прямоугольника - C++
Дамы и господа!!! Выручайте!!! Надо найти площадь Q способом Монте Карло и способом прямоугольника! Метод Монте карло работает вроде...

Построение прямоугольника - C++
Здравствуйте! Помогите пожалуйста построить прямоугольник шириной 30 и высотой 10! Заранее очень благодарна!

Площадь прямоугольника - C++
Написать программу вычисления площади прямоугольника.

движение прямоугольника - C++
как уменьшить скорость движения? #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;graphics.h&gt; #define BGIPATH...

Площадь прямоугольника - C++
Возникла проблема с С++. Недавно начал изучать. Такая задача. Найти площадь прямоугольника, задав с клавиатуры значение длинны и ширины. ...

Контур прямоугольника - C++
Доброй ночи. Подскажите пожалуйста, пытаюсь написать программку которая выводит на экран пустотелый прямоугольник. в чем ошибка? #include...

Движение прямоугольника - C++
Здравствуйте! У меня проблема с этой работой. Программа идет. Но прямоугольник движется по диагонали,а мне нужно,чтобы он двигался по...

Найти площадь прямоугольника - C++
пожалуйста помогите разобратся в Рекурсии. не могу понять етот код: #include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; ...

Описать класс прямоугольника - C++
help!!!!! описать класс прямоугольника с полями: координаты левого верхнего и правого нижнего углов.Задать функцию сравнения периметров...

Столкновения прямоугольника с окружностью - C++
Пишу арканоид. Есть окружность (биток) и прямоугольник. Реализовал столкновение между ними: Прямоугольник, это 4 уравнения прямой...

Три прямоугольника в окне С++ - C++
Помогите решить задачу: нужно нарисовать 3 прямоугольника мышкой в окне так, чтобы они рисовались по очереди, но оставались в окне после...

Периметр и площадь прямоугольника - C++
Только начали изучать этот язык и не могу понять в чём ошибка.. Задание написать прогу для общёта периметра и площади прямоугольника.. ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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