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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2012, 03:21   #1
Sylvos
 
Регистрация: 23.02.2012
Сообщений: 6
По умолчанию Рисование STATIC мышкой

Цитата:
Написать программу, рисующую статики.
Необходимо динамически создавать статики, размер которых определяется курсором мышки.
При нажати левой клавиши мышки запомнить её координаты, при отпускании рисовать статик с полученными координатами.
В верхней части программы реализовать панель управления:
чекбокс(если выбран, то на статики загружается картинка, иначе отображается индекс статика)
группа радиокнопок(1-статик с рамкой, 2 - статик без рамки, 3 - вдавленный статик)
При рисовании статика учитывать настройки на панели управления.
При двойном щелчке левой по статику в заголовок окна выводить индекс, координаты и размер статика.
При двойном щелчке правой - удалять статик.

Предусмотреть, чтобы нельзя было создавать статик размером менее чем 10 на 10 пикселей.
Сделал все кроме того что помеченного синим цветом. Не могли бы вы подсказать, как мне доделать это задание?
И еще хотел спросить как масштабировать или обрезать картинку чтобы та не отрисовывалась по своему размеру.
Вот то что уже готово:
Код:
#include<Windows.h>
#include"resource.h"
BOOL CALLBACK DlgProc(HWND hwnd,UINT msg,WPARAM wPAram,LPARAM lParam);
INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrew,LPSTR lpsz,INT nShow)
{
	return DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DlgProc);
}
HWND hSt;
DWORD X_CUR,Y_CUR,WX_CUR,HY_CUR;
HBITMAP hBmp;
INT i=0;
DWORD TMP;
BOOL CALLBACK DlgProc(HWND hwnd,UINT msg,WPARAM wPAram,LPARAM lParam)
{
	switch(msg)
	{
		case WM_INITDIALOG:
			hBmp=LoadBitmap(GetModuleHandle(0),MAKEINTRESOURCE(IDB_BITMAP1));
			SendMessage(GetDlgItem(hwnd,IDC_RADIO1),BM_SETCHECK,BST_CHECKED,0);
			return TRUE;
			break;
		case WM_LBUTTONDOWN:
			X_CUR=LOWORD(lParam);
			Y_CUR=HIWORD(lParam);
			return TRUE;
			break;
		case WM_LBUTTONUP:
			WX_CUR=LOWORD(lParam);
			HY_CUR=HIWORD(lParam);
			if(WX_CUR-X_CUR>10&&HY_CUR-Y_CUR>10)
			{
				TMP=WS_CHILD+WS_VISIBLE;
				i++;
				if(IsDlgButtonChecked(hwnd,IDC_CHECK1))
					TMP+=SS_BITMAP;
				else
					TMP+=SS_CENTER|SS_CENTERIMAGE;
				if(IsDlgButtonChecked(hwnd,IDC_RADIO1))
					TMP+=WS_DLGFRAME 		;
				if(IsDlgButtonChecked(hwnd,IDC_RADIO3))
					TMP+=WS_BORDER;
				TCHAR STR[10];
				wsprintf(STR,L"%d",i);
				hSt=CreateWindowEx(0,L"STATIC",STR,TMP,
					X_CUR,Y_CUR,WX_CUR-X_CUR,HY_CUR-Y_CUR,hwnd,NULL,GetModuleHandle(0),NULL);
				if(IsDlgButtonChecked(hwnd,IDC_CHECK1))
					SendMessage(hSt,STM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)hBmp);
			}
			return TRUE;
			break;
		case WM_LBUTTONDBLCLK:
			SetWindowText(hwnd,L"Двойной ЛКМ");
			return TRUE;
			break;
		case WM_RBUTTONDBLCLK:
			return TRUE;
			break;		
		case WM_CLOSE:
			EndDialog(hwnd,0);
			return TRUE;
			break;
	}
	return FALSE;
}
Вложения
Тип файла: rar Draws Static.rar (438.0 Кб, 8 просмотров)
Sylvos вне форума Ответить с цитированием
Старый 23.02.2012, 06:27   #2
Inv1s
Форумчанин
 
Аватар для Inv1s
 
Регистрация: 06.11.2011
Сообщений: 214
По умолчанию

Цитата:
При нажати левой клавиши мышки запомнить её координаты, при отпускании рисовать статик с полученными координатами.
-Всегда одного и того же размера изображение

Код:
При двойном щелчке левой по статику в заголовок окна выводить индекс, координаты и размер статика.
При двойном щелчке правой - удалять статик.
=> каждое нарисованное изображение должно иметь размеры и индекс, хранящиеся в массиве, и когда нажимаешь 2 раза, пробегать по нему и искать куда именно входят нажатые координаты
Помог, нажми на весы
html, js, php, С++, С#, OpenGl, DirectX, XNA, HLSL
Inv1s вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование мышкой Victor1963 Общие вопросы Delphi 0 01.07.2011 21:33
Рисование мышкой Victor1963 Общие вопросы Delphi 1 05.05.2011 14:36
Рисование мышкой Victor1963 Общие вопросы Delphi 5 04.05.2011 09:28
Рисование мышкой Victor1963 Помощь студентам 2 19.04.2011 12:43
Рисование мышкой vandrouny Win Api 1 03.10.2010 19:57