⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 agg_platform_support.cpp

📁 gnash 在pc和嵌入式下开发需要的源码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
            }            app->m_specific->m_input_flags = mouse_left | get_key_flags(wParam);            if(app->m_ctrls.on_mouse_button_up(app->m_specific->m_cur_x,                                                app->m_specific->m_cur_y))            {                app->on_ctrl_change();                app->force_redraw();            }            app->on_mouse_button_up(app->m_specific->m_cur_x,                                     app->m_specific->m_cur_y,                                     app->m_specific->m_input_flags);/*            if(!app->wait_mode())            {                app->on_idle();            }*/            break;        //--------------------------------------------------------------------        case WM_RBUTTONDOWN:            ::SetCapture(app->m_specific->m_hwnd);            app->m_specific->m_cur_x = int16(LOWORD(lParam));            if(app->flip_y())            {                app->m_specific->m_cur_y = app->rbuf_window().height() - int16(HIWORD(lParam));            }            else            {                app->m_specific->m_cur_y = int16(HIWORD(lParam));            }            app->m_specific->m_input_flags = mouse_right | get_key_flags(wParam);            app->on_mouse_button_down(app->m_specific->m_cur_x,                                       app->m_specific->m_cur_y,                                       app->m_specific->m_input_flags);/*            if(!app->wait_mode())            {                app->on_idle();            }*/            break;        //--------------------------------------------------------------------        case WM_RBUTTONUP:            ::ReleaseCapture();            app->m_specific->m_cur_x = int16(LOWORD(lParam));            if(app->flip_y())            {                app->m_specific->m_cur_y = app->rbuf_window().height() - int16(HIWORD(lParam));            }            else            {                app->m_specific->m_cur_y = int16(HIWORD(lParam));            }            app->m_specific->m_input_flags = mouse_right | get_key_flags(wParam);            app->on_mouse_button_up(app->m_specific->m_cur_x,                                     app->m_specific->m_cur_y,                                     app->m_specific->m_input_flags);/*            if(!app->wait_mode())            {                app->on_idle();            }*/            break;        //--------------------------------------------------------------------        case WM_MOUSEMOVE:            app->m_specific->m_cur_x = int16(LOWORD(lParam));            if(app->flip_y())            {                app->m_specific->m_cur_y = app->rbuf_window().height() - int16(HIWORD(lParam));            }            else            {                app->m_specific->m_cur_y = int16(HIWORD(lParam));            }            app->m_specific->m_input_flags = get_key_flags(wParam);            if(app->m_ctrls.on_mouse_move(                app->m_specific->m_cur_x,                 app->m_specific->m_cur_y,                (app->m_specific->m_input_flags & mouse_left) != 0))            {                app->on_ctrl_change();                app->force_redraw();            }            else            {                if(!app->m_ctrls.in_rect(app->m_specific->m_cur_x,                                          app->m_specific->m_cur_y))                {                    app->on_mouse_move(app->m_specific->m_cur_x,                                        app->m_specific->m_cur_y,                                        app->m_specific->m_input_flags);                }            }/*            if(!app->wait_mode())            {                app->on_idle();            }*/            break;        //--------------------------------------------------------------------        case WM_SYSKEYDOWN:        case WM_KEYDOWN:            app->m_specific->m_last_translated_key = 0;            switch(wParam)             {                case VK_CONTROL:                    app->m_specific->m_input_flags |= kbd_ctrl;                    break;                case VK_SHIFT:                    app->m_specific->m_input_flags |= kbd_shift;                    break;                default:                    app->m_specific->translate(wParam);                    break;            }                    if(app->m_specific->m_last_translated_key)            {                bool left  = false;                bool up    = false;                bool right = false;                bool down  = false;                switch(app->m_specific->m_last_translated_key)                {                case key_left:                    left = true;                    break;                case key_up:                    up = true;                    break;                case key_right:                    right = true;                    break;                case key_down:                    down = true;                    break;                case key_f2:                                            app->copy_window_to_img(agg::platform_support::max_images - 1);                    app->save_img(agg::platform_support::max_images - 1, "screenshot");                    break;                }                if(app->window_flags() & window_process_all_keys)                {                    app->on_key(app->m_specific->m_cur_x,                                app->m_specific->m_cur_y,                                app->m_specific->m_last_translated_key,                                app->m_specific->m_input_flags);                }                else                {                    if(app->m_ctrls.on_arrow_keys(left, right, down, up))                    {                        app->on_ctrl_change();                        app->force_redraw();                    }                    else                    {                        app->on_key(app->m_specific->m_cur_x,                                    app->m_specific->m_cur_y,                                    app->m_specific->m_last_translated_key,                                    app->m_specific->m_input_flags);                    }                }            }/*            if(!app->wait_mode())            {                app->on_idle();            }*/            break;        //--------------------------------------------------------------------        case WM_SYSKEYUP:        case WM_KEYUP:            app->m_specific->m_last_translated_key = 0;            switch(wParam)             {                case VK_CONTROL:                    app->m_specific->m_input_flags &= ~kbd_ctrl;                    break;                case VK_SHIFT:                    app->m_specific->m_input_flags &= ~kbd_shift;                    break;            }            break;        //--------------------------------------------------------------------        case WM_CHAR:        case WM_SYSCHAR:            if(app->m_specific->m_last_translated_key == 0)            {                app->on_key(app->m_specific->m_cur_x,                            app->m_specific->m_cur_y,                            wParam,                            app->m_specific->m_input_flags);            }            break;                //--------------------------------------------------------------------        case WM_PAINT:            paintDC = ::BeginPaint(hWnd, &ps);            app->m_specific->m_current_dc = paintDC;            if(app->m_specific->m_redraw_flag)            {                app->on_draw();                app->m_specific->m_redraw_flag = false;            }            app->m_specific->display_pmap(paintDC, &app->rbuf_window());            app->on_post_draw(paintDC);            app->m_specific->m_current_dc = 0;            ::EndPaint(hWnd, &ps);            break;                //--------------------------------------------------------------------        case WM_COMMAND:            break;                //--------------------------------------------------------------------        case WM_DESTROY:            ::PostQuitMessage(0);            break;                //--------------------------------------------------------------------        default:            ret = ::DefWindowProc(hWnd, msg, wParam, lParam);            break;        }        app->m_specific->m_current_dc = 0;        ::ReleaseDC(app->m_specific->m_hwnd, dc);        return ret;    }    //------------------------------------------------------------------------    void platform_support::message(const char* msg)    {        ::MessageBox(m_specific->m_hwnd, msg, "AGG Message", MB_OK);    }    //------------------------------------------------------------------------    bool platform_support::init(unsigned width, unsigned height, unsigned flags)    {        if(m_specific->m_sys_format == pix_format_undefined)        {            return false;        }        m_window_flags = flags;        int wflags = CS_OWNDC | CS_VREDRAW | CS_HREDRAW;        WNDCLASS wc;        wc.lpszClassName = "AGGAppClass";        wc.lpfnWndProc = window_proc;        wc.style = wflags;        wc.hInstance = g_windows_instance;        wc.hIcon = LoadIcon(0, IDI_APPLICATION);        wc.hCursor = LoadCursor(0, IDC_ARROW);        wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);        wc.lpszMenuName = "AGGAppMenu";        wc.cbClsExtra = 0;        wc.cbWndExtra = 0;        ::RegisterClass(&wc);        wflags = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;        if(m_window_flags & window_resize)        {            wflags |= WS_THICKFRAME | WS_MAXIMIZEBOX;        }        m_specific->m_hwnd = ::CreateWindow("AGGAppClass",                                            m_caption,                                            wflags,                                            100,                                            100,                                            width,                                            height,                                            0,                                            0,                                            g_windows_instance,                                            0);        if(m_specific->m_hwnd == 0)        {            return false;        }        RECT rct;        ::GetClientRect(m_specific->m_hwnd, &rct);        ::MoveWindow(m_specific->m_hwnd,   // handle to window                     100,                  // horizontal position                     100,                  // vertical position                     width + (width - (rct.right - rct.left)),                     height + (height - (rct.bottom - rct.top)),                     FALSE);           ::SetWindowLong(m_specific->m_hwnd, GWL_USERDATA, (LONG)this);        m_specific->create_pmap(width, height, &m_rbuf_window);        m_initial_width = width;        m_initial_height = height;        on_init();        m_specific->m_redraw_flag = true;        ::ShowWindow(m_specific->m_hwnd, g_windows_cmd_show);        return true;    }    //------------------------------------------------------------------------    int platform_support::run()    {        MSG msg;        for(;;)        {            if(m_wait_mode)            {                if(!::GetMessage(&msg, 0, 0, 0))                {                    break;                }                ::TranslateMessage(&msg);                ::DispatchMessage(&msg);            }            else            {                if(::PeekMessage(&msg, 0, 0, 0, PM_REMOVE))                {                    ::TranslateMessage(&msg);                    if(msg.message == WM_QUIT)                    {                        break;                    }                    ::DispatchMessage(&msg);                }                else                {                    on_idle();                }            }        }        return (int)msg.wParam;    }    //------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -