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 руб./мес


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




 62 - Смена курсора по нажатию кнопки / Диалоговые окна / Visual C++

Шаг 62 - Смена курсора по нажатию кнопки

Мы можем применить прошлый код немного его модернизировав. Во-первых, заведем переменную, которая будет отвечать за идентификатор курсора.

class CTestDDVDlg : public CDialog
{
// Construction
public:
	CTestDDVDlg(CWnd* pParent = NULL);	// standard constructor
	int ID_C;
....
};

И инициализируем ее идентификатором курсора из ресурсов.

CTestDDVDlg::CTestDDVDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTestDDVDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTestDDVDlg)
	m_Ed1 = 20.0f;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a
	// subsequent DestroyIcon in Win32
	ID_C=IDC_POINTER;
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

В самой функции изменим код, чтобы идентификатор получался из переменной.

BOOL CTestDDVDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
	// TODO: Add your message handler code here and/or call default
	SetCursor(AfxGetApp()->LoadCursor(ID_C));
	return TRUE;
}

Отлично. Все получается совсем просто. Заводим второй курсор.

62_1.gif (2590 b)

Теперь нам нужно просто поменять идентификатор и послать самому себе сообщение WM_SETCURSOR. Все это делаем по нажатию на кнопку.

void CTestDDVDlg::OnButton1() 
{
	ID_C=IDC_CURSOR1;
	SendMessage(WM_SETCURSOR);
}

Запускаем приложение – курсор один.

62_2.gif (2756 b)

Нажимаем на кнопку, курсор другой.

62_3.gif (2795 b)


| |
Автор Каев Артем.
[AD]