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


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




 Сообщение от элементов на диалоговом окне / Примеры программ / Примеры разработки

Сообщение от элементов на диалоговом окне

Идея данного примера в организации централизованной обработки сообщений от элементов управления в диалоговом окне.

gif/32_1.gif (2187 b)

Мною "созданы" два класса:

CEditButtom  - поле с кнопкой.
CMyButton    - сама кнопка.

В CEditButtom::OnCreate(LPCREATESTRUCT lpCreateStruct) при создании поля создаем и кнопу, вот только ParentWnd у нее не CEditButtom , а ParentWnd для CEditButtom. Насколько это правильно, вопрос остается открытым, но для меня было так проще. Если родителем выступает CEditButtom, то необходимо решить такую проблему, как закрашивание кнопки фоном текста при установлении на поле фокуса.

CMyButton имеет хитрый член класса с типом INT /*уникальный код родителя в диалоге родителе*/, а при нажатии на кнопу посылает сообщение:

void CMyButton::OnClicked() 
{
     CMyButton::GetParent()->SendMessage(CMyButton::m_Mothclick,(WPARAM)m_ParentBy,0);
}

В диалоге CTMP5Dlg заводим свое сообщение.

............
UINT WM_MOTHCLICK =  RegisterWindowMessage((LPCTSTR) "MESSAGE_MOTHCLICK");
///////////////////////////////////////
// CAboutDlg dialog used for App About
............
BEGIN_MESSAGE_MAP(CTMP5Dlg, CDialog)
	//{{AFX_MSG_MAP(CTMP5Dlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_REGISTERED_MESSAGE(WM_MOTHCLICK ,OnMothClick)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

Описываем реакцию на сообщение.

class CTMP5Dlg : public CDialog
{
.......
	CEditButtom m_DlgEditButtom3;
	afx_msg LRESULT OnMothClick(WPARAM wParam, LPARAM lParam);
// Dialog Data
.......
};

afx_msg LRESULT CTMP5Dlg::OnMothClick(WPARAM wParam, LPARAM lParam)
{
	CDialogEditClient a1;
	CDialogEditDetal a2;
	switch ((int) wParam)
	{
		case IDC_EDIT1 :

			if (a1.DoModal()==IDOK)
			{
				AfxMessageBox("Edit1");
			}
			break;
		case IDC_EDIT3 :
			
			if (a2.DoModal()==IDOK)
			{
				AfxMessageBox("Edit2");
			}
			
			break;
	}
	
	return 0;
}

Просто пример, вывод разных диалогов. Далее уже понятно.


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