Пример #1
0
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
            //WM_NOTIFY
            case 78:
                NMSHN nm = (NMSHN)Marshal.PtrToStructure(m.LParam, typeof(NMSHN));
                NotificationWithSoftKeys n = m_notifications[nm.idFrom];

                switch (nm.code)
                {
                case SHNN.DISMISS:
                    n.OnBalloonChanged(new BalloonChangedEventArgs(false));
                    break;

                case SHNN.SHOW:
                    n.OnBalloonChanged(new BalloonChangedEventArgs(true));
                    break;

                case SHNN.LINKSEL:
                    string link = Marshal.PtrToStringUni((IntPtr)nm.union1);
                    n.OnResponseSubmitted(new ResponseSubmittedEventArgs(link));
                    break;

                case SHNN.NAVNEXT:
                    n.OnSpinnerClick(new SpinnerClickEventArgs(true));
                    break;

                case SHNN.NAVPREV:
                    n.OnSpinnerClick(new SpinnerClickEventArgs(false));
                    break;
                }
                break;

            //WM_COMMAND
            case 0x0111:
            {
                uint value = ((uint)m.WParam & 0xFFFF);
                int  id    = (int)(value >> 8);
                byte index = (byte)(value & 0xFF);

                NotificationWithSoftKeys z = m_notifications[id];
                if (index == 0)
                {
                    z.OnLeftSoftKeyClick(EventArgs.Empty);
                }
                else
                {
                    z.OnRightSoftKeyClick(EventArgs.Empty);
                }
            }
            break;
            }

            //do base wndproc
            base.WndProc(ref m);
        }