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

📄 scrolled.h

📁 Minigui 的嵌入式图形用户接口的库源码
💻 H
字号:
/*** $Id: scrolled.h,v 1.10 2004/10/18 00:49:28 snig Exp $ **** scrolled.h: header file of scrolled window support module.**** Copyright (C) 2004 Feynman Software.*/#ifndef _SCROLLED_H#define _SCROLLED_H#ifdef __cplusplusextern "C"{#endif/* default size and position values */#define HSCROLL                 5   // h scroll value#define VSCROLL                 15  // v scroll valuetypedef struct _scrdata{    unsigned short hScrollVal;    unsigned short vScrollVal;    unsigned short hScrollPageVal;    unsigned short vScrollPageVal;    /* scroll offset */    int nContX;    int nContY;    /* content range */    int nContWidth;    int nContHeight;    /* visible content range */    unsigned short visibleWidth;    unsigned short visibleHeight;    /* content margins */    unsigned short leftMargin;    unsigned short topMargin;    unsigned short rightMargin;    unsigned short bottomMargin;    HWND hSV;    /* scrollbar mode */    SBPolicyType sbPolicy;    void (*move_content) (HWND, struct _scrdata *, BOOL);} SCRDATA;typedef SCRDATA *PSCRDATA;int     DefaultScrolledProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam);int     scrolled_init (HWND hWnd, PSCRDATA pscrdata, int w, int h);void    scrolled_destroy (PSCRDATA pscrdata);void    scrolled_hscroll (HWND hWnd, PSCRDATA pscrdata, WPARAM wParam, LPARAM lParam);void    scrolled_vscroll (HWND hWnd, PSCRDATA pscrdata, WPARAM wParam, LPARAM lParam);void    scrolled_reset_content (HWND hWnd, PSCRDATA pscrdata);int     scrolled_set_cont_height (HWND hWnd, PSCRDATA pscrdata, int cont_h);int     scrolled_set_cont_width (HWND hWnd, PSCRDATA pscrdata, int cont_w);BOOL    scrolled_set_cont_pos (HWND hWnd, PSCRDATA pscrdata, int cont_x, int cont_y);BOOL    scrolled_make_pos_visible (HWND hWnd, PSCRDATA pscrdata, int pos_x, int pos_y);void    scrolled_refresh_container (HWND hWnd, PSCRDATA pscrdata);void    scrolled_set_scrollval (PSCRDATA pscrdata, int hval, int vval);void    scrolled_set_scrollpageval (PSCRDATA pscrdata, int hval, int vval);int     scrolled_set_hscrollinfo (HWND hWnd, PSCRDATA pscrdata);int     scrolled_set_vscrollinfo (HWND hWnd, PSCRDATA pscrdata);void    scrolled_init_contsize (HWND hWnd, PSCRDATA pscrdata);void    scrolled_set_visible (HWND hWnd, PSCRDATA pscrdata);int     scrolled_content_to_visible (PSCRDATA pscrdata, int *x, int *y);int     scrolled_visible_to_content (PSCRDATA pscrdata, int *x, int *y);void    scrolled_recalc_areas (HWND hWnd, PSCRDATA pscrdata, int new_w, int new_h);void    scrolled_init_margins (PSCRDATA pscrdata, int left, int top,                               int right, int bottom);void    scrolled_refresh_rect (PSCRDATA pscrdata, RECT *rc);void    scrolled_set_margins (PSCRDATA pscrdata, RECT *rc);static inline int scrolled_get_contwidth (PSCRDATA pscrdata){    return pscrdata->nContWidth;}static inline void scrolled_set_content (HWND hWnd, PSCRDATA pscrdata, BOOL visChanged){    pscrdata->move_content (hWnd, pscrdata, visChanged);}static inline void scrolled_get_content_rect (PSCRDATA pscrdata, RECT *rc){    if (rc) {        rc->left = -pscrdata->nContX;        rc->top = -pscrdata->nContY;        rc->right = rc->left + pscrdata->nContWidth;        rc->bottom = rc->top + pscrdata->nContHeight;    }}/* decides whether a position in the virtual content window is visible */static inline BOOL scrolled_is_pos_visible (PSCRDATA pscrdata, int x, int y){    if (x < pscrdata->nContX || x > pscrdata->nContX + pscrdata->visibleWidth ||               y < pscrdata->nContY || y > pscrdata->nContY + pscrdata->visibleHeight)        return FALSE;    return TRUE;}    /* ------------------------------------------------------------------------- */// newly addedstatic inline void scrolled_visible_to_window (PSCRDATA pscrdata, int *x, int *y){    if (x)        *x += pscrdata->leftMargin;    if (y)        *y += pscrdata->topMargin;}static inline void scrolled_window_to_visible (PSCRDATA pscrdata, int *x, int *y){    if (x)        *x -= pscrdata->leftMargin;    if (y)        *y -= pscrdata->topMargin;}static inline void scrolled_content_to_window (PSCRDATA pscrdata, int *x, int *y){    scrolled_content_to_visible (pscrdata, x, y);    scrolled_visible_to_window (pscrdata, x, y);}static inline void scrolled_window_to_content (PSCRDATA pscrdata, int *x, int *y){    scrolled_window_to_visible (pscrdata, x, y);    scrolled_visible_to_content (pscrdata, x, y);}static inline void scrolled_get_margins (PSCRDATA pscrdata, RECT *rc){    if (rc) {        rc->left = pscrdata->leftMargin;        rc->top = pscrdata->topMargin;        rc->right = pscrdata->rightMargin;        rc->bottom = pscrdata->bottomMargin;    }}static inline void scrolled_get_visible_rect (PSCRDATA pscrdata, RECT *rcVis){    if (rcVis) {        rcVis->left = pscrdata->leftMargin;        rcVis->top = pscrdata->topMargin;        rcVis->right = pscrdata->leftMargin + pscrdata->visibleWidth;        rcVis->bottom = pscrdata->topMargin + pscrdata->visibleHeight;    }}            static inline void scrolled_refresh_content (PSCRDATA pscrdata){    RECT rcVis;#if 1    scrolled_get_visible_rect (pscrdata, &rcVis);    InvalidateRect (pscrdata->hSV, &rcVis, TRUE);#else    InvalidateRect (pscrdata->hSV, NULL, TRUE);#endif}/* ------------------------------------------------------------------------- */#ifdef __cplusplus}#endif  /* __cplusplus */#endif  /* _SCROLLED_H */

⌨️ 快捷键说明

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