C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 155 - Борьба с однообразием, круглое окно / MFC шаг за шагом / Visual C++

Шаг 155 - Борьба с однообразием, круглое окно

Сначала посмотрите как работает. Я просто в шоке. Сначало обычный запуск.

155_1.gif (2715 b)

Теперь нажмем правую кнопку мыши.

155_2.gif (2392 b)

При некоторой доли сноровки можно добиться и такого эффекта.

155_3.gif (3019 b)

Нажмете левую кнопку и окно вернется к начальному виду.

Итак, создаем приложение как MFC AppWizard. Пусть оно будет SDI и имя у него будет tt. В классе приложения заведем переменную типа регион.

class CTtApp : public CWinApp
{
public:
	HRGN rgn;
	CTtApp();
........
};

И сохраним регион окна при инициализации окна.

////////////////////////////////////
// CTtApp initialization

BOOL CTtApp::InitInstance()
{
	.......
	GetWindowRgn(m_pMainWnd->m_hWnd,rgn);
	return TRUE;
}

Вот теперь окно можно будет востановить. Код при нажатии на правую кнопку мыши.

void CTtView::OnRButtonDown(UINT nFlags, CPoint point) 
{
 AfxGetApp()->m_pMainWnd->SetWindowRgn( CreateEllipticRgn(40, 40, 300, 200),true);	
 CView::OnRButtonDown(nFlags, point);
}

И левую при востановлении.

void CTtView::OnLButtonDown(UINT nFlags, CPoint point) 
{
    CTtApp* tt=(CTtApp*)AfxGetApp();
    AfxGetApp()->m_pMainWnd->SetWindowRgn(tt->rgn,true);
    CView::OnLButtonDown(nFlags, point);
}

Вот и всё. Смотрите на код. Основой этого года является понятие регион. Это давайте договоримся что это область окна. Её можно получить использовав функцию GetWindowRgn. И поменять SetWindowRgn помня, что все эти функции находятся в классе CWinApp. Регионы бывают разные. Например, эллипсоидные. Вот такой регион мы и делаем. Чем же регион отличается от класса CRect. Только тем, что CRect всегда прямоугольник, а регион может принимать разные формы.


Загрузить проект | | |
Автор Каев Артем.
[AD]