Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2011, 23:01   #1
--=DroN=--
Пользователь
 
Регистрация: 13.01.2011
Сообщений: 10
Печаль на тему Win API в C++ - не могу понять

Задание. Для приведенных ниже вариантов заданий составить Windows-программу в среде Visual С++, в которой производится создание главного окна приложения и двух других окон различных стилей (временное, дочернее) с одинаковым цветом фона. В центре рабочей области каждого окна выводится заданный объект (текст, графическая фигура). При нажатии в рабочей области любого окна левой (правой) кнопки мыши или клавиш перемещения (влево, вправо, вверх, вниз, Home, End, Page Up, Page Down) в программе должны выполняться действия по изменению цвета, размеров, положения выводимого объекта согласно варианту задания.

Главное окно: 1.Выводимый объект - Заголовок лабораторной работы из 2 строк.
2.Клавиша "вверх" - Текст смещается вверх на 5 пикселей
Клавиша "вниз" - Текст смещается вниз на 5 пикселей

Дочернее окно: Прямоугольник. Клавиша "Home" - Фигура смещается в левый верхний угол окна. Клавиша "End" - Фигура смещается в правый нижний угол окна

Временное окно - Текстовая строка. Клавиша "Page Up" - Текст смещается к верхнему краю окна. Клавиша "Page Down" - Текст смещается к нижнему краю окна.


Я вроде программу написал - с трудом, но написал - и она запускается без ошибок - но работает не до конца - в дочернем окне прямоугольник на кнопки не реагирует - посмотрите на код, и подскажите в чем соль? или напишите правильный...
--=DroN=-- вне форума Ответить с цитированием
Старый 13.01.2011, 23:05   #2
--=DroN=--
Пользователь
 
Регистрация: 13.01.2011
Сообщений: 10
По умолчанию вот сам код

#include "stdafx.h"
#include <stdlib.h>

LRESULT CALLBACK MainWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK PopUpWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

---------------------------

Последний раз редактировалось --=DroN=--; 14.01.2011 в 14:40.
--=DroN=-- вне форума Ответить с цитированием
Старый 13.01.2011, 23:08   #3
--=DroN=--
Пользователь
 
Регистрация: 13.01.2011
Сообщений: 10
По умолчанию

RegisterClass(&wc3);
----------------------------

Последний раз редактировалось --=DroN=--; 14.01.2011 в 14:40.
--=DroN=-- вне форума Ответить с цитированием
Старый 13.01.2011, 23:11   #4
--=DroN=--
Пользователь
 
Регистрация: 13.01.2011
Сообщений: 10
По умолчанию

LRESULT CALLBACK MainWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
------------------

Последний раз редактировалось --=DroN=--; 14.01.2011 в 14:39.
--=DroN=-- вне форума Ответить с цитированием
Старый 13.01.2011, 23:13   #5
--=DroN=--
Пользователь
 
Регистрация: 13.01.2011
Сообщений: 10
По умолчанию

LRESULT CALLBACK PopUpWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
-----------------------

Последний раз редактировалось --=DroN=--; 14.01.2011 в 14:39.
--=DroN=-- вне форума Ответить с цитированием
Старый 13.01.2011, 23:15   #6
--=DroN=--
Пользователь
 
Регистрация: 13.01.2011
Сообщений: 10
По умолчанию

LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
static RECT childRect;
static RECT rc2;
GetClientRect(hWnd,&rc2);
static int xv,xn,yv,yn;
switch(msg)
{
case WM_CREATE:
{
xv=70;
xn=180;
yv=50;
yn=120;
}
break;

case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc;
hdc=BeginPaint(hWnd,&ps);
HPEN hPen=(HPEN)CreatePen(PS_SOLID,2,RGB (255,0,0));
HPEN hOldPen=(HPEN)SelectObject(hdc,hPen );
HBRUSH rnd=CreateSolidBrush(RGB(255,0,0));
HBRUSH old=(HBRUSH)SelectObject(hdc,rnd);
Rectangle (hdc, xv, yv, xn, yn);
SelectObject(hdc,hOldPen);
DeleteObject(hOldPen);
SelectObject(hdc,old);
DeleteObject(old);
EndPaint(hWnd,&ps);
};break;

case WM_KEYDOWN:
{
int nVKey=(int)wParam;
switch(nVKey)
{
case VK_HOME:
{
xv=rc2.left;
xn=rc2.left+110;
yv=rc2.top;
yn=rc2.top+70;
InvalidateRect(hWnd,&rc2,TRUE);
};break;
case VK_END:
{
xv=rc2.right-110;
xn=rc2.right ;
yv=rc2.bottom-70;
yn=rc2.bottom;
InvalidateRect(hWnd,&rc2,TRUE);
};break;
}
};
break;
default: return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0l;
}
--=DroN=-- вне форума Ответить с цитированием
Старый 13.01.2011, 23:16   #7
--=DroN=--
Пользователь
 
Регистрация: 13.01.2011
Сообщений: 10
По умолчанию

ВОТ В ПРИНЦИПЕ И ОН
--=DroN=-- вне форума Ответить с цитированием
Старый 14.01.2011, 00:33   #8
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

неужели Вы так думаете, что форумчане будут смотреть весь ваш код?
NiCola999 вне форума Ответить с цитированием
Старый 14.01.2011, 14:41   #9
--=DroN=--
Пользователь
 
Регистрация: 13.01.2011
Сообщений: 10
По умолчанию

ну да.. я не подумал... оставил код дочернего окна.. где не работает
--=DroN=-- вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Win API ( CИ) ПроГрам Помощь студентам 0 29.04.2010 21:43
Win API рисование Granus Win Api 11 29.06.2009 13:20
Win Api alexov Общие вопросы C/C++ 4 29.01.2009 13:33
Win API aleks_n Общие вопросы Delphi 0 15.09.2008 11:07