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

C++ и WinAPI

Войти
Регистрация
Восстановить пароль
 
efimka90
0 / 0 / 0
Регистрация: 22.04.2010
Сообщений: 7
#1

Использование механизма обмена сообщениями для управления окнами в ОС Windows - C++ WinAPI

22.04.2010, 17:27. Просмотров 913. Ответов 2
Метки нет (Все метки)

друзья, помогите кто чем может.
задание:

Разработать программу «рисования» дочерних окон на родительском окне. Рисования
производится следующим образом:
1. Активация режима рисования по нажатию левой кнопки мыши (сохранение первой
пары координат окна).
2. Растягивание элемента управления в соответствии с перемещением указателя мыши
(формирование второй пары координат окна).
3. Деактивация режима рисования по нажатию правой кнопки мыши (сохранение
второй пары координат окна).
Класс окна для рисования изменяется по нажатию на клавиатуре клавиши,
соответствующей первой букве в названии класса. Рисуются окна следующих классов:
BUTTON, COMBOBOX, EDIT, LISTBOX, SCROLLBAR.

чет прям не знаю, что и как
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2010, 17:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Использование механизма обмена сообщениями для управления окнами в ОС Windows (C++ WinAPI):

Использование механизма обмена сообщениями для управления окнами в ОС Windows - C++ WinAPI
Ошибка в строке wincl.lpszClassName = szClassName; собственно почему ругается??? #include "stdafx.h" #include <windows.h> #include...

Создать клиент/серверное сетевое приложение для обмена текстовыми сообщениями - C++
Создать клиент/серверное сетевое приложение для обмена текстовыми сообщениями через среду передачи данных стека TCP/IP. Для реализации...

api Windows функции для управления окнами - C++ Builder
Здравствуйте мне необходимо найти api Windows функции для управления окнами. В книге по С++ приведены только три функции (CloseWindow(),...

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

Разработка ActiveX для обмена сообщениями - C#
Здравствуйте. Начинаю изучать написание ActiveX на С#. Нужно написать для начала какойнить ActiveX который принимал бы сообщение и...

Создание программы для обмена сообщениями - C++
Здраствуйте! Я хочу создать программу для обмена сообщениями, что-то наподобие ICQ ! Прошу скинуть ссылку где подробно описано как это...

2
XuTPbIu_MuHTAu
Эксперт С++
2234 / 749 / 10
Регистрация: 27.05.2008
Сообщений: 1,498
30.04.2010, 03:12 #2
efimka90, За тебя писать не будем.Вопросы спрашивай. Если совсем не знаешь,что и как,начни с чтения про "цикл обработки сообщений".
0
efimka90
0 / 0 / 0
Регистрация: 22.04.2010
Сообщений: 7
30.04.2010, 15:17  [ТС] #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
#include "stdafx.h"
#include <windows.h>
#include <stdlib.h>
#include <string>
#include <iostream>
 
#define HEIGHT                        500
#define WIDTH                        1000
#define ID_BUTTON                     100
#define B                            0x42
#define C                            0x43
#define E                            0x45
#define L                            0x4c
#define S                            0x53
 
static TCHAR szWindowClass[] = "win32app";
 
static TCHAR szTitle[] = "LabWork8";
 
POINT lpPointActivate;
POINT lpPointDeactivate;
HINSTANCE hInst;
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void PaintElement(HWND, char*, char*);
 
// FUNCTION: int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
//
// PARAMETERS: [in]  hInstance      - дескриптор текущего экземпляра окна
//             [in]  hPrevInstance  - дескриптор предыдущего экземпляра окна
//             [in]  lpCmdLine      – указатель на командную строку
//             [in]  nCmdShow       – показывает состояние окна
//
// RETURN VALUE: значение выхода   - при принятии сообщения WM_QUIT
//               0                 - если функция завершается перед
//                                   вводом цикла сообщения
//
// COMMENTS: нет
//
int WINAPI WinMain(HINSTANCE hInstance
                   , HINSTANCE hPrevInstance
                   , LPSTR lpCmdLine
                   , int nCmdShow
                  )
{
    WNDCLASSEX wcex;
 
    wcex.cbSize         = sizeof(WNDCLASSEX);
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW + 1);
    wcex.lpszMenuName   = NULL;
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
 
    if (!RegisterClassEx(&wcex))
    {
        MessageBox(NULL
                   , "Call to RegisterClassEx failed!"
                   , "LabWork8"
                   , NULL
                  );
        return TRUE;
    }
 
    hInst = hInstance; 
 
    HWND hWindow = CreateWindow(szWindowClass
                                , szTitle
                                , WS_OVERLAPPEDWINDOW
                                , CW_USEDEFAULT
                                , CW_USEDEFAULT
                                , WIDTH
                                , HEIGHT
                                , NULL
                                , NULL
                                , hInstance
                                , NULL
                               );
 
    if (!hWindow)
    {
        MessageBox(NULL
                   , "Call to CreateWindow failed!"
                   , "LabWork8"
                   , NULL
                  );
        return TRUE;
    }
 
    ShowWindow(hWindow, nCmdShow);
    UpdateWindow(hWindow);
 
    MSG message2;
    while (GetMessage(&message2, NULL, 0, 0))
    {
        TranslateMessage(&message2);
        DispatchMessage(&message2);
    }
 
    return (int) message2.wParam;
}
 
/////////////////////////////////////////////////////////////////////////////////
// 
// FUNCTION: LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM)
//
// PARAMETERS: [in]  hWindow     - хэндл окна
//             [in]  message  - сообщение для окна
//             [in]  wParam   – дополнительная информация для сообщения
//             [in]  lParam   – дополнительная информация для сообщения
//
// RETURN VALUE: 0   - во всех случаях
//
// COMMENTS: нет
//
LRESULT CALLBACK WndProc(HWND hWindow
                         , UINT message
                         , WPARAM wParam
                         , LPARAM lParam
                        )
{
    switch (message)
    {
    case WM_LBUTTONDOWN:
        GetCursorPos(&lpPointActivate);
        ScreenToClient(hWindow, &lpPointActivate);
        break;
    case WM_RBUTTONDOWN:
        GetCursorPos(&lpPointDeactivate);
        ScreenToClient(hWindow, &lpPointDeactivate);
        break;
    case WM_KEYDOWN:
        switch(wParam)
        {
        case B:
            PaintElement(hWindow, "button", "Кнопка");
            break;
        case C:
            PaintElement(hWindow, "combobox", "");
            break;
        case E:
            PaintElement(hWindow, "edit", "edit");
            break;
        case L:
            PaintElement(hWindow, "listbox", "");
            break;
        case S:
            PaintElement(hWindow, "scrollbar", "");
            break;
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(NULL);
        break;
    default:
        return DefWindowProc(hWindow
                             , message
                             , wParam
                             , lParam
                            );
        break;
    }
 
    return FALSE;
}
 
/////////////////////////////////////////////////////////////////////////////
//
//  FUNCTION: void PaintElement(HWND, char*, char*)
//
//  PARAMETERS: [in]  hWnd       - хэндл окна
//              [in]  className  - класс окна
//              [in]  greeting   - подпись окна
//
//  RETURN VALUE: нет
//
//  COMMENTS: Функция рисования окна выбранного класса
//
void PaintElement(HWND hWindow, char* className, char* greeting)
{
    HWND child;
    child = CreateWindow(className
                         , greeting
                         , WS_CHILD | WS_BORDER | WS_VISIBLE 
                         , lpPointActivate.x
                         , lpPointActivate.y
                         , (lpPointDeactivate.x - lpPointActivate.x)
                         , (lpPointDeactivate.y - lpPointActivate.y)
                         , hWindow
                         , (HMENU)(int)(ID_BUTTON)
                         , hInst
                         , NULL
                        );
    ShowWindow(child, SW_NORMAL);
    UpdateWindow(child);
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2010, 15:17
Привет! Вот еще темы с ответами:

Программа для мгновенного обмена сообщениями - C++
Скажи, пожалуйста, если писать программу для обмена через Интернет, а не по локальной сети. То что для этого надо? Я так понимаю нужен...

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

Решение для обмена сообщениями внутри сайта - PHP
Доброго времени суток. Требуется найти решение для организации обмена сообщениями между пользователями сайта (должно иметь API для...

Программа для обмена сообщениями по локальной сети - Delphi
Необходимо создать прогрпммы для обмена сообщениями по локальной сети. Не могу понять в чем дело((( при компеляции выдает ошибку(смотрите...


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

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

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