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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2011, 12:17   #1
Kalinin93
Новичок
Джуниор
 
Регистрация: 04.12.2011
Сообщений: 1
Счастье Графический редактор в С++

Добрый день. Прошу не много помощи я сам начал изучать С++ и вот мне предстоит задача сделать упрощенный "Графический редактор" . Не могу понять одной вещи:
-Надо сделать что бы максимальное число создаваемых фигур было не больше 10 ( когда пользователь создает 11 фигуру что бы она не создавалась )
-И подскажите или помогите как сделать что бы активная фигура выделялась другим цветом или более жирной линией )

Заранее благодарное спасибо .

Код:
#include <windows.h>
#include <math.h>
#include <stdio.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int x[10];
int y[10];
int R[10];
int t[10];
int v[10];
int n=-1, m;
char cC[10];
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{
HWND hMainWnd;
char szClassName[]=  "MyClass";              
MSG msg;
WNDCLASSEX wc;

wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = HBRUSH(COLOR_WINDOW);
wc.lpszMenuName = NULL;
wc.lpszClassName = szClassName;
wc.hIconSm = LoadIcon(NULL,IDI_APPLICATION);

if(!RegisterClassEx(&wc))
{ MessageBox(NULL,"Cannot register class", "Error", MB_OK);
return 0;}

hMainWnd = CreateWindow(
szClassName, "Test application", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,0,CW_USEDEFAULT,0,(HWND)NULL, (HMENU)NULL,(HINSTANCE)hInstance, NULL);

if (!hMainWnd) { 
MessageBox(NULL, "Cannot create main window", "Error", MB_OK); 
return 0; }
ShowWindow(hMainWnd, nCmdShow); 

while (GetMessage(&msg, NULL, 0, 0)) 
{ 
TranslateMessage(&msg); 
DispatchMessage(&msg); 
}
return msg.wParam; 
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 
{ 
HDC hDC; 
PAINTSTRUCT ps; 
RECT rect; 
float pi=3.14;
switch (uMsg)
{ 
case WM_PAINT: 
hDC = BeginPaint(hWnd, &ps);
for (int i=0;i<10;i++)
if (v[i]==1)
	{

if(t[i]==2)  
{MoveToEx(hDC,x[i]-R[i],y[i],NULL);
LineTo(hDC,x[i],y[i]-R[i]);
LineTo(hDC,x[i]+R[i],y[i]);
LineTo(hDC,x[i],y[i]+R[i]);
LineTo(hDC,x[i]-R[i],y[i]);}
if(t[i]==4)
{MoveToEx(hDC,x[i]-R[i],y[i],NULL);
LineTo(hDC,x[i]+R[i],y[i]);
MoveToEx(hDC,x[i],y[i]+R[i],NULL);
LineTo(hDC,x[i],y[i]-R[i]);}
if(t[i]==6)
{MoveToEx(hDC,R[i],2*R[i],NULL);
LineTo(hDC,3*R[i],2*R[i]);
LineTo(hDC,3*R[i]-R[i]*cos(pi/3),2*R[i]-R[i]*sin(pi/3));
LineTo(hDC,R[i],2*R[i]);}
};

EndPaint(hWnd, &ps);
break; 
case WM_LBUTTONDOWN:
x[n]=LOWORD(lParam);
y[n]=HIWORD(lParam);

GetClientRect(hWnd,&rect);
InvalidateRect(hWnd,&rect, -1);
UpdateWindow(hWnd);
break;
case WM_KEYDOWN:
if (wParam==VK_F2)
{n++;
x[n]=100;
y[n]=100;
R[n]=80;
v[n]=1;
t[n]=2;
GetClientRect(hWnd,&rect);
InvalidateRect(hWnd,&rect, -1);
UpdateWindow(hWnd);}
if (wParam==VK_F4)
{n++;
x[n]=100;
y[n]=100;
R[n]=80;
v[n]=1;
t[n]=4;
GetClientRect(hWnd,&rect);
InvalidateRect(hWnd,&rect, -1);
UpdateWindow(hWnd);}
if (wParam==VK_F6)
{n++;
x[n]=100;
y[n]=100;
R[n]=80;
v[n]=1;
t[n]=6;
GetClientRect(hWnd,&rect);
InvalidateRect(hWnd,&rect, -1);
UpdateWindow(hWnd);}
if (wParam==VK_UP)
{
R[n]=R[n]+10;
GetClientRect(hWnd,&rect);
InvalidateRect(hWnd,&rect, -1);
UpdateWindow(hWnd);}
if (wParam==VK_DOWN)
{
R[n]=R[n]-10;
GetClientRect(hWnd,&rect);
InvalidateRect(hWnd,&rect, -1);
UpdateWindow(hWnd);}
if (wParam==VK_LEFT)
{
n--;
GetClientRect(hWnd,&rect);
InvalidateRect(hWnd,&rect, -1);
UpdateWindow(hWnd);}
if (wParam==VK_RIGHT)
{
n++;
GetClientRect(hWnd,&rect);
InvalidateRect(hWnd,&rect, -1);
UpdateWindow(hWnd);}


break;


case WM_CLOSE: 
DestroyWindow(hWnd); 
break; 
case WM_DESTROY: 
PostQuitMessage(0); 
break; 
default: 
return DefWindowProc(hWnd, uMsg, wParam, lParam); 
}
return 0; 

}
Kalinin93 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
графический редактор BOKUBOH Помощь студентам 0 30.03.2011 21:31
графический редактор rita_angel_2010 Помощь студентам 30 04.04.2010 14:04
Графический редактор toxich Мультимедиа в Delphi 6 15.02.2010 19:28
Графический редактор... Alex2009 Мультимедиа в Delphi 12 18.04.2009 23:55
Графический редактор kommunist Общие вопросы .NET 1 13.01.2008 21:57