Beispiel #1
0
ushort 
Gen_GetResponse(WINPTR w, STRING prompt, STRING response,
		BOOLEAN showresponse, short resplen, enum helpindex help)
    {
	WINPTR OldW = Win_Current, TmpW = w;
	char *cptr, *eptr;
	ushort c;
	short rcol, ask_mode;
	BOOLEAN ins_mode = TRUE;

	    rcol = strlen(prompt) + 2;	/* reserve space char on each side */
	    ask_mode = (*response != '(');	/* 0 => single character mode */
	if  (w == NULL)
	{
	    Win_1LineBorderSet();
	    TmpW = Win_Make(WIN_TILED | WIN_NONDESTRUCT | WIN_BORDER,
		       (77 - rcol - resplen) / 2, 10, rcol + resplen + 3, 1,
			    GEN_BORDER_ATTR, GEN_INSIDE_ATTR);
	}
	if  (TmpW)
	{
	    Win_Activate(TmpW);
	    if (ask_mode)
		Win_SetFlags(WIN_BLOKCURSOR);
	    cptr = eptr = response;	/* current, end pointers */
	    while (*eptr)
		eptr++;
	    for (;;)
	    {
		Win_Clear();
		Win_FastPutS(0, 1, prompt);
		if (showresponse)
		    Win_FastPutS(0, rcol, response);
		Win_PutCursor(0, rcol + (cptr - response));
		c = Kb_GetCh();
		if (ask_mode && c == KB_CRGRTN)
		    break;
		if ((!ask_mode || (eptr == response)) && c == KB_ESC)
		    break;
		if (c == KB_F1 || c == KB_ALT_H)
		    Hlp_IHelp(help);
		else if (ask_mode)
		    Gen_EditString(c, response, &eptr, &cptr, &ins_mode, resplen);
		else if ((char)c)
		{
		    if (c >= 'a' && c <= 'z')
			c -= 'a' - 'A';
		    if (strchr(response + 1, c) != NULL)
			if (c != ')')
			    break;
		}
	    }
	    Win_Clear();
	    if (w == NULL)
		Win_Free(TmpW);
	}
	if (OldW)
	    Win_Activate(OldW);
	return c;
    }
Beispiel #2
0
void 
Gen_ClearMessage(void)
{
    if (Gen_MessageWindow)
	Win_Free(Gen_MessageWindow);
    if (Gen_PrevWindow)
	Win_Activate(Gen_PrevWindow);
    Gen_MessageWindow = Gen_PrevWindow = NULL;
}
Beispiel #3
0
void 
Gen_ShowMessage(STRING message)
{
    if (Win_Current != Gen_MessageWindow)
	Gen_PrevWindow = Win_Current;
    if (Gen_MessageWindow == NULL)
    {
	Win_1LineBorderSet();
	Gen_MessageWindow = Win_Make(WIN_TILED | WIN_NONDESTRUCT | WIN_BORDER,
			    9, 10, 60, 1, GEN_BORDER_ATTR, GEN_INSIDE_ATTR);

    }
    if (Gen_MessageWindow)
    {
	Win_Activate(Gen_MessageWindow);
	Win_Clear();
	Win_FastPutS(0, 1, message);
    }
}
Beispiel #4
0
// main window procedure
STATIC LONG WINAPI Win_MainWndProc ( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) {
    switch( uMsg ) {
    case WM_MOUSEWHEEL:
        if( win.mouse.initialized == WIN_MOUSE_LEGACY ) {
            mouse_wheel_event( ( short )HIWORD( wParam ) );
        }
        break;
    case WM_MOUSEHWHEEL:
        if( win.mouse.initialized == WIN_MOUSE_LEGACY ) {
            mouse_hwheel_event( ( short )HIWORD( wParam ) );
        }
        break;

    case WM_NCMOUSEMOVE:
        if( win.mouse.initialized ) {
            // don't hide cursor
            IN_MouseEvent( -1, -1 );
        }
        break;

    case WM_MOUSEMOVE:
        if( win.mouse.initialized ) {
            int x = ( short )LOWORD( lParam );
            int y = ( short )HIWORD( lParam );

            IN_MouseEvent( x, y );
        }
        // fall through

    case WM_LBUTTONDOWN:
    case WM_LBUTTONUP:
    case WM_RBUTTONDOWN:
    case WM_RBUTTONUP:
    case WM_MBUTTONDOWN:
    case WM_MBUTTONUP:
    case WM_XBUTTONDOWN:
    case WM_XBUTTONUP:
        if( win.mouse.initialized == WIN_MOUSE_LEGACY ) {
            legacy_mouse_event( wParam );
        }
        break;

    case WM_HOTKEY:
        return FALSE;

    case WM_INPUT:
        if( wParam == RIM_INPUT && win.mouse.initialized == WIN_MOUSE_RAW ) {
            raw_input_event( ( HANDLE )lParam );
        }
        break;

    case WM_CLOSE:
        PostQuitMessage( 0 );
        return FALSE;

    case WM_ACTIVATE:
        Win_Activate( wParam );
        break;

    case WM_WINDOWPOSCHANGING:
        if( !( win.flags & QVF_FULLSCREEN ) ) {
            WINDOWPOS *pos = ( WINDOWPOS * )lParam;
            if( !( pos->flags & SWP_NOSIZE ) ) {
                resizing_event( hWnd, pos );
            }
        }
        break;

    case WM_SIZE:
        if( wParam == SIZE_RESTORED && !( win.flags & QVF_FULLSCREEN ) ) {
            int w = ( short )LOWORD( lParam );
            int h = ( short )HIWORD( lParam );

            win.rc.width = w;
            win.rc.height = h;

            win.mode_changed |= MODE_SIZE;
        }
        break;

    case WM_MOVE: 
        if( !( win.flags & QVF_FULLSCREEN ) ) {
            int x = ( short )LOWORD( lParam );
            int y = ( short )HIWORD( lParam );
            RECT r;

            // adjust for non-client area
            get_nc_area_size( hWnd, &r );
            win.rc.x = x + r.left;
            win.rc.y = y + r.top;

            win.mode_changed |= MODE_POS;
        }
        break;

    case WM_SYSCOMMAND:
        switch( wParam & 0xFFF0 ) {
        case SC_SCREENSAVE:
            return FALSE;
        case SC_MAXIMIZE:
            if( !vid_fullscreen->integer ) {
                VID_ToggleFullscreen();
            }
            return FALSE;
        }
        break;

    case WM_KEYDOWN:
    case WM_SYSKEYDOWN:
        legacy_key_event( wParam, lParam, qtrue );
        return FALSE;

    case WM_KEYUP:
    case WM_SYSKEYUP:
        legacy_key_event( wParam, lParam, qfalse );
        return FALSE;

    case WM_SYSCHAR:
    case WM_CHAR:
#if USE_CHAR_EVENTS
        Key_CharEvent( wParam );
#endif
        return FALSE;

    default:    
        break;
    }

    // pass all unhandled messages to DefWindowProc
    return DefWindowProc( hWnd, uMsg, wParam, lParam );
}