Ejemplo n.º 1
0
		bool BaseForm::ProcessMessage(WinMessage msg)
		{
			bool rs = BaseControl::ProcessMessage(msg);
			switch (msg.message)
			{
			case WM_CLOSE:
				{
					WindowCloseEventArgs args;
					args.Cancel = false;
					OnClose.Invoke(this, args);
					if (!args.Cancel)
					{
						closed = true;
						SetVisible(false);
						if (Application::GetMainFormHandle() == handle)
						{
							Application::Terminate();
						}
					}
				}
				return true;
			case WM_SHOWWINDOW:
				{
					EventArgs e;
					if (msg.wParam == TRUE)
					{
						OnShow.Invoke(this, e);
						UpdateAccel();
					}
				}
				return false;
			case WM_COMMAND:
				{
					Object * obj = Application::GetObject(LOWORD(msg.wParam));
					MenuItem * mn = dynamic_cast<MenuItem *>(obj);
					if (mn)
					{
						mn->Clicked();
					}
				}
				return false;
			case WM_INITMENUPOPUP:
				{
					Object * obj = Application::GetComponent((HWND)msg.wParam);
					CustomMenu * mn = dynamic_cast<CustomMenu *>(obj);
					if (mn)
					{
						mn->OnPopup();
					}
				}
				return false;
			case WM_ACTIVATE:
				UpdateAccel();
				return false;
			default:
				return false;
			}

			return false;
		}