Пример #1
0
void CWindow::WinProc (unsigned int msg, WPARAM wParam, LPARAM lParam)
#endif
{
    switch (msg) 
    {
        case WM_CREATE:         OnCreate (m_hWnd, wParam, lParam);  break;
        case WM_INITDIALOG:     OnInitDialog (wParam, lParam);      break;
        case WM_ACTIVATEAPP:    OnActivateApp (wParam, lParam);     break;
        case WM_SIZE:           OnSize (wParam, lParam);            break;
        case WM_MOVE:           OnMove (wParam, lParam);            break;
        case WM_PAINT:          OnPaint (wParam, lParam);           break;
        case WM_KEYDOWN:        OnKeyDown (wParam, lParam);         break;
        case WM_KEYUP:          OnKeyUp (wParam, lParam);           break;
        case WM_COMMAND:        OnCommand (wParam, lParam);         break;
        case WM_SYSCOMMAND:     OnSysCommand (wParam, lParam);      break;
        case WM_CLOSE:          OnClose (wParam, lParam);           break;
        case WM_DESTROY:        OnDestroy (wParam, lParam);         break;
#ifndef WIN32
        case SDL_JOYAXISMOTION: OnJoystickAxis(wParam, lParam);		break;
        case SDL_JOYBUTTONDOWN:
        case SDL_JOYBUTTONUP:	OnJoystickButton(wParam, lParam);	break;
#endif
    }

#ifdef WIN32
        return DefWindowProc (m_hWnd, msg, wParam, lParam);
#else
        return;
#endif
}
Пример #2
0
LRESULT CFrameWnd::WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
	// Decode message.
	switch(iMsg)
	{
		// App is being activated.	
		case WM_ACTIVATEAPP:
			OnActivateApp(wParam);
			break;
		
		// Menu item selected.
		case WM_MENUSELECT:
#ifdef WIN16
			OnSelectMenu(LOWORD(lParam), wParam, (HMENU)wParam);
#else
			OnSelectMenu(HIWORD(wParam), LOWORD(wParam), (HMENU)lParam);
#endif
			break;

		// An application has realized its palette.
//		case WM_PALETTECHANGED:
			// If not us fall through to WM_QUERYNEWPALETTE.
//			if ((HWND) wParam == hWnd)
//				break;

		// Ask if the application wants to realize its palette.
//		case WM_QUERYNEWPALETTE:
//			{
//			CScreenDC	DC;
//			return OnRealizePalette(DC);
//			}
			
		// Can Windows terminate?
		case WM_QUERYENDSESSION:
			if (OnQueryClose())
				break;
			else
				return 0;

		// Application requesting termination.
		case WM_CLOSE:
			if (OnQueryClose())
				Destroy();
			break;

		// Call the default handler.
		default:
			return CPopupWnd::WndProc(hWnd, iMsg, wParam, lParam);
	}

	m_bMsgHandled = TRUE;
	m_lMsgResult  = 0;

	return 0;
}
Пример #3
0
LONG CSaverWnd::WndProc(UINT a_uMsg, WPARAM a_wParam, LPARAM a_lParam)
{
    switch (a_uMsg)
    {
    case WM_NCCREATE:
        return OnNCCreate(reinterpret_cast<CREATESTRUCT*>(a_lParam)) ;

    case WM_CREATE:
        return OnCreate(reinterpret_cast<CREATESTRUCT*>(a_lParam)) ? 0L : -1L ;
        
    case WM_ACTIVATEAPP:
        return OnActivateApp(a_wParam, a_lParam) ? 0L : -1L ;

    case WM_DESTROY:
        OnDestroy() ;
        return 0L ;
        
    case WM_NCDESTROY:
        OnNCDestroy() ;
        return 0L ;
        
    case WM_PAINT:
        return OnPaint() ? 0L : -1L ;

    case WM_MOUSEMOVE:
        POINT pt ;
        pt.x = LOWORD(a_lParam) ;
        pt.y = HIWORD(a_lParam) ;
        OnMouseMove(a_wParam, pt) ;
        return 0 ;
        
    case WM_SYSCOMMAND:
        if (OnSysCommand(a_wParam, a_lParam))
        {
            return 0 ;
        }
        break ;
    }

    return ::DefWindowProc(m_hWnd, a_uMsg, a_wParam, a_lParam) ;
}
Пример #4
0
LRESULT SwndContainerImpl::DoFrameEvent(UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    LRESULT lRet=0;
    AddRef();
    SetMsgHandled(TRUE);

    switch(uMsg)
    {
    case WM_MOUSEMOVE:
        OnFrameMouseMove((UINT)wParam,CPoint(GET_X_LPARAM(lParam),GET_Y_LPARAM(lParam)));
        break;
    case WM_MOUSEHOVER:
        OnFrameMouseEvent(uMsg,wParam,lParam);
        break;
    case WM_MOUSELEAVE:
        OnFrameMouseLeave();
        break;
    case WM_SETCURSOR:
        lRet=OnFrameSetCursor(CPoint(GET_X_LPARAM(lParam),GET_Y_LPARAM(lParam)));
        if(!lRet)
        {
            HCURSOR hCursor=GETRESPROVIDER->LoadCursor(IDC_ARROW);
            SetCursor(hCursor);
        }
        break;
    case WM_KEYDOWN:
        OnFrameKeyDown((UINT)wParam,(UINT)lParam & 0xFFFF, (UINT)((lParam & 0xFFFF0000) >> 16));
        break;
    case WM_SETFOCUS:
        OnActivate(WA_ACTIVE);
        break;
    case WM_KILLFOCUS:
        OnActivate(WA_INACTIVE);
        break;
    case WM_ACTIVATE:
        OnActivate(LOWORD(wParam));
        break;
    case WM_ACTIVATEAPP:
        OnActivateApp(wParam,lParam);
        break;
    case WM_IME_STARTCOMPOSITION:
    case WM_IME_ENDCOMPOSITION:
    case WM_IME_COMPOSITION:
    case WM_IME_CHAR:
        OnFrameKeyEvent(uMsg,wParam,lParam);
        break;
    case WM_MOUSEWHEEL:
    case 0x20E: //WM_MOUSEHWHEEL
        OnFrameMouseWheel(uMsg,wParam,lParam);
        break;
    default:
        if(uMsg>=WM_KEYFIRST && uMsg<=WM_KEYLAST)
            OnFrameKeyEvent(uMsg,wParam,lParam);
        else if(uMsg>=WM_MOUSEFIRST && uMsg <= WM_MOUSELAST)
            OnFrameMouseEvent(uMsg,wParam,lParam);
        else
            SetMsgHandled(FALSE);
        break;
    }

    Release();
    return lRet;
}
Пример #5
0
DWORD Window::WndProc(
    UINT message,
    WPARAM wParam,
    LPARAM lParam
) {
    switch (message) {
        case WM_CLOSE:
            OnClose();
            return 0;

        case WM_DESTROY:
            OnDestroy();
            return 0;

        case WM_PAINT:
            PAINTSTRUCT paint;
            BeginPaint(GetHWND(), &paint);
            OnPaint(paint.hdc, paint.rcPaint);
            EndPaint(GetHWND(), &paint);
            return 0;

        case WM_MOVE:
        case WM_SIZE:
            UpdateRect();
            RectChanged();
            break;

        case WM_TIMER:
            if (OnTimer())
                return 0;
            break;

        case WM_HSCROLL:
            if (OnHScroll((int)LOWORD(wParam), (short int) HIWORD(wParam), (HWND)lParam))
                return 0;
            break;

        case WM_VSCROLL:
            if (OnVScroll((int)LOWORD(wParam), (short int) HIWORD(wParam), (HWND)lParam))
                return 0;
            break;

        case WM_COMMAND:
            if (OnCommand(wParam, lParam))
                return 0;
            break;

        case WM_SYSCOMMAND:
            if (OnSysCommand(wParam & 0xFFF0, MakePoint(lParam)))
                return 0;
            break;

        case WM_ACTIVATE:
            if (OnActivate(LOWORD(wParam), HIWORD(wParam) != 0))
                return 0;
            break;

        case WM_ACTIVATEAPP:
            if (OnActivateApp(wParam != 0))
                return 0;
            break;

        case WM_CHAR:
            {
                KeyState ks;
                ks.vk = wParam;
                ks.bShift = (GetKeyState(VK_SHIFT) & 0x8000) != 0;
                ks.bControl = (GetKeyState(VK_CONTROL) & 0x8000) != 0;
                ks.countRepeat = LOWORD(lParam);

                return !OnChar(ks);
            }
            break;

        case WM_KEYDOWN:
        case WM_SYSKEYDOWN:
        case WM_KEYUP:
        case WM_SYSKEYUP:
            {
                KeyState ks;
                ks.vk = wParam;
                ks.bShift = (GetKeyState(VK_SHIFT) & 0x8000) != 0;
                ks.bControl = (GetKeyState(VK_CONTROL) & 0x8000) != 0;
                ks.bAlt = (message == WM_SYSKEYUP || message == WM_SYSKEYDOWN) 
                    && (lParam & (1 << 29)); // See help for WM_SYSKEYDOWN
                ks.bDown = (message == WM_KEYDOWN || message == WM_SYSKEYDOWN);
                ks.countRepeat = LOWORD(lParam);

                return !OnKey(ks);
            }
            break;
		
		case WM_MOUSEWHEEL: //imago 8/13/09
		case WM_XBUTTONDOWN:
		case WM_XBUTTONUP: 
        case WM_MOUSEHOVER: // imago --^
        case WM_LBUTTONDOWN:
        case WM_RBUTTONDOWN:
        case WM_MBUTTONDOWN:
        case WM_LBUTTONUP:
        case WM_RBUTTONUP:
        case WM_MBUTTONUP:
        case WM_MOUSEMOVE:
        case WM_MOUSELEAVE:
		case WM_NCMOUSEHOVER: //Imago 7/10
		case WM_NCMOUSELEAVE: //<--^
            {
                WinPoint pointMouse;
                if (message != WM_MOUSEWHEEL) {
                    WinPoint point(MakePoint(lParam));
                    pointMouse = WinPoint(point.X(),m_rectClient.YSize() - 1 - point.Y());
                    m_lastPointMouse = pointMouse;
                } else {
                    pointMouse = m_lastPointMouse;
                }

                //
                // Handle mouse leave
                //

                if (message == WM_MOUSELEAVE || message == WM_NCMOUSELEAVE) {
                    if (m_bMouseInside) {
                        m_bMouseInside = false;
                        OnMouseMessage(WM_MOUSELEAVE, 0, pointMouse);
                    }
                } else {
                    //
                    // Handle mouse enter
                    //

                    if (!m_bMouseInside && (message != WM_NCMOUSEHOVER && message != WM_MOUSEHOVER && message != 0)) {
                        m_bMouseInside = true;
                        OnMouseMessage(0, 0, pointMouse);

                        if (s_pfnTrackMouseEvent) {
                            TRACKMOUSEEVENT tme;

                            tme.cbSize      = sizeof(TRACKMOUSEEVENT);
                            tme.dwFlags     = TME_LEAVE;
                            tme.hwndTrack   = m_hwnd;
                            tme.dwHoverTime = HOVER_DEFAULT;

                            ZVerify(s_pfnTrackMouseEvent(&tme));
                        }
                    }

                    //
                    // Handle the mouse message
                    //

                    DWORD ret = 
                          OnMouseMessage(message, wParam, pointMouse)
                        ? 0
                        : 1;
                }

                return true;
            }
            break;

        case WM_SETCURSOR:
            //
            // use the custom cursor for the client area
            //

            if (LOWORD(lParam) == HTCLIENT) {
                ::SetCursor(NULL);
            } else {
                ::SetCursor(GetCursor());
            }

            break;

        case WM_WINDOWPOSCHANGING:
            if (OnWindowPosChanging((LPWINDOWPOS)lParam)) 
                return 0;
            break;
    }

    return m_pfnWndProc(m_hwnd, message, wParam, lParam);
}
Пример #6
0
//---------------------------------------------------------------------
LRESULT	Window::WindowProcedure(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {

#ifdef	_DEBUG
	/*
	char	buf[20];
	sprintf(buf, "0x%x : ", hWnd);
	OutputDebugString(buf);
	*/
	PutWindowMessage(message, wParam, lParam);
#endif

	if ( message==WM_CREATE )
	{
		LPCREATESTRUCT	pc = (LPCREATESTRUCT)lParam;
		Window*	pw = (Window*)(pc->lpCreateParams);
		pw->mWnd = hWnd;
		::SetWindowLong(hWnd, 0, (long)pw);
		bool b = pw->OnCreate(pc);

		gTaskbarCreatedMessage = ::RegisterWindowMessage(TEXT("TaskbarCreated"));

		return	b ? 0 : -1;
	}

	// マウスホイール対応
	if ( message == msgMOUSEWHEEL ) {
		message = WM_MOUSEWHEEL;
		DbgStr("MouseWheel fwKeys:%04x, zDelta:%d, xPos:%d, yPos:%d",
			LOWORD(wParam), (short)HIWORD(wParam),
			(short)LOWORD(lParam), (short)HIWORD(lParam) );
	}

	Window*	p=(Window*)(::GetWindowLong(hWnd, 0));
	if ( p == NULL )
		return	::DefWindowProc(hWnd, message, wParam, lParam);

	if ( message >= WM_USER && message <= 0x7FFF )
		return	p->OnUser(message, wParam, lParam);
	if ( message == gTaskbarCreatedMessage )
		return  p->OnTaskbarRestart();

	switch ( message ) {

	case WM_PAINT:
		{
			PAINTSTRUCT	thePS;
			HDC			theDC = ::BeginPaint(hWnd, &thePS);
			if (theDC != NULL) {
				p->OnPaint(theDC);
				::EndPaint(hWnd, &thePS);
			}
		}
		return	0;

	case WM_NCHITTEST:
		return	p->OnNCHitTest(MAKEPOINT(lParam));

	Handle(WM_ACTIVATE, OnActivate(LOWORD(wParam), HIWORD(wParam), (HWND)lParam));
	Handle(WM_ACTIVATEAPP, OnActivateApp(BOOL(wParam), (DWORD)lParam));
	Handle(WM_DISPLAYCHANGE, OnDisplayChange(LOWORD(lParam), HIWORD(lParam), wParam));
	/*case WM_DISPLAYCHANGE:
		p->OnDisplayChange(LOWORD(lParam), HIWORD(lParam), wParam);
		break;*/


	Handle(WM_COMMAND, OnCommand(HIWORD(wParam), LOWORD(wParam), (HWND)lParam));
	Handle(WM_INITMENU, OnInitMenu(HMENU(wParam)));
	Handle(WM_CLOSE, OnClose());
	Handle(WM_DESTROY, OnDestroy());

	Handle(MM_MCINOTIFY, OnMCINotify(WORD(wParam), LONG(lParam)));

	Handle(WM_LBUTTONDOWN, OnLButtonDown(MAKEPOINT(lParam), wParam));
	Handle(WM_MBUTTONDOWN, OnMButtonDown(MAKEPOINT(lParam), wParam));
	Handle(WM_RBUTTONDOWN, OnRButtonDown(MAKEPOINT(lParam), wParam));
	Handle(WM_LBUTTONUP, OnLButtonUp(MAKEPOINT(lParam), wParam));
	Handle(WM_MBUTTONUP, OnMButtonUp(MAKEPOINT(lParam), wParam));
	Handle(WM_RBUTTONUP, OnRButtonUp(MAKEPOINT(lParam), wParam));
	Handle(WM_LBUTTONDBLCLK, OnLButtonDoubleClick(MAKEPOINT(lParam), wParam));
	Handle(WM_MBUTTONDBLCLK, OnMButtonDoubleClick(MAKEPOINT(lParam), wParam));
	Handle(WM_RBUTTONDBLCLK, OnRButtonDoubleClick(MAKEPOINT(lParam), wParam));
	Handle(WM_MOUSEMOVE, OnMouseMove(MAKEPOINT(lParam), wParam));
	Handle(WM_MOUSEWHEEL, OnMouseWheel(LOWORD(wParam), (short)HIWORD(wParam), (short)LOWORD(lParam), (short)HIWORD(lParam)));
	Handle(WM_NCLBUTTONDBLCLK, OnNCLButtonDoubleClick(wParam, MAKEPOINT(lParam)));

	Handle(WM_KEYDOWN, OnKeyDown((int)wParam, (long)lParam));
	Handle(WM_KEYUP, OnKeyUp((int)wParam, (long)lParam));
	Handle(WM_DROPFILES, OnDropFiles(HDROP(wParam)));
	
	Handle(WM_TIMER, OnTimer(wParam, (TIMERPROC*)lParam));

	Handle(WM_DRAWCLIPBOARD, OnDrawClipboard());
	Handle(WM_CHANGECBCHAIN, OnChangeCBChain((HWND)wParam, (HWND)lParam));

	default:
		break;
	}
	return	::DefWindowProc(hWnd, message, wParam, lParam);
}
Пример #7
0
LRESULT CALLBACK CCustomPlayer::_MainWindowWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	switch(message) 
	{

		case WM_DROPFILES:		// Load any dropped file
		{

			char FileName[_MAX_PATH];
			HDROP hdrop=(HDROP)wParam;
			DragQueryFile(hdrop,0,FileName,_MAX_PATH);
			Reset();
			_Load(FileName);
			_FinishLoad();
			break;
		}	

	case WM_MOUSEMOVE:
		{
			// we allow window dragging enabled in the player.ini file !
			if (GetPAppStyle()->g_MouseDrag==1)
			{
				DoMMove(lParam,wParam);
			}
		}
	case WM_ACTIVATEAPP:
		{
			OnActivateApp(wParam);
		}
		break;

		// Minimum size of the player window
	case WM_GETMINMAXINFO:
		// this message is not very useful because
		// the main window of the player is not resizable ...
		// but perhaps it will change so we manage this message.
		{
			CCustomPlayer& player = CCustomPlayer::Instance();
			if((LPMINMAXINFO)lParam) {
				((LPMINMAXINFO)lParam)->ptMinTrackSize.x=MininumWindowedWidth();
				((LPMINMAXINFO)lParam)->ptMinTrackSize.y=MininumWindowedHeight();
			}
		}
		break;

		// Sends a Message "OnClick" or "OnDblClick" if any object is under mouse cursor
	case WM_LBUTTONDBLCLK:
	case WM_LBUTTONDOWN:
		{
			
			OnMouseClick(message);

			//  [2/18/2008 mc007]
			// we allow window dragging enabled in the player.ini file !
			if (GetPAppStyle()->g_MouseDrag)
			{
				StartMove(lParam);
			}
			
		}
		break;

		// Size and focus management
	case WM_SIZE:
		// if the window is maximized or minimized
		// we get/lost focus.
		{
			if (wParam==SIZE_MINIMIZED) {
				OnFocusChange(FALSE);
			} else if (wParam==SIZE_MAXIMIZED) {
				OnFocusChange(TRUE);
			}
		}
		break;

		// Manage system key (ALT + KEY)
	case WM_SYSKEYDOWN:	
		{
//			return OnSysKeyDownMainWindow(theApp.m_Config,(int)wParam);
		}
		break;

		// Repaint main frame
	case WM_PAINT:
		{
			OnPaint();
		}
		break;

		// The main windows has been closed by the user
	case WM_CLOSE:
		PostQuitMessage(0);
		break;

		// Focus management
	case WM_KILLFOCUS:
	case WM_SETFOCUS:
		{
			OnFocusChange(message==WM_SETFOCUS);
		}
		break;

	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
	}

	return DefWindowProc(hWnd, message, wParam, lParam);
}