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

📄 internals.h

📁 libminigui-1.3.0.tar.gz。 miniGUI的库函数源代码!
💻 H
字号:
/*** $Id: internals.h,v 1.32 2003/08/15 08:10:53 weiym Exp $**** internals.h: this head file declares all internal types and data.**** Copyright (C) 2003 Feynman Software.** Copyright (C) 1999 ~ 2002 Wei Yongming.**** Create date: 1999/05/22*/#ifndef GUI_INTERNALS_H    #define GUI_INTERNALS_H/******************* Internal data *******************************************/#ifdef __uClinux__  #define DEF_NR_TIMERS       8  #define DEF_MSGQUEUE_LEN    8  #define SIZE_CLIPRECTHEAP   16  #define SIZE_INVRECTHEAP    16  #define SIZE_QMSG_HEAP      8#else #ifdef _LITE_VERSION  #define DEF_NR_TIMERS       16  #define DEF_MSGQUEUE_LEN    16  #define SIZE_CLIPRECTHEAP   16  #define SIZE_INVRECTHEAP    32  #define SIZE_QMSG_HEAP      16 #else  #define DEF_NR_TIMERS       8  #define DEF_MSGQUEUE_LEN    16  #define SIZE_CLIPRECTHEAP   128  #define SIZE_INVRECTHEAP    128  #define SIZE_QMSG_HEAP      8 #endif#endif/******************* Internal data of fix string module **********************/#ifdef __uClinux__  #define MAX_LEN_FIXSTR      64  #define NR_HEAP             5  #define LEN_BITMAP          (1+2+4+8+16)#else #ifndef _LITE_VERSION  #define MAX_LEN_FIXSTR      2048  #define NR_HEAP             10  #define LEN_BITMAP          (1+2+4+8+16+32+64+128+256+512) #else  #define MAX_LEN_FIXSTR      64  #define NR_HEAP             5  #define LEN_BITMAP          (1+2+4+8+16) #endif#endif/******************** Handle type and child type. ***************************/#define TYPE_HWND           0x01    #define TYPE_MAINWIN    0x11    #define TYPE_CONTROL    0x12#define TYPE_HMENU          0x02    #define TYPE_MENUBAR    0x21    #define TYPE_PPPMENU    0x22    #define TYPE_NMLMENU    0x23#define TYPE_HACCEL         0x03#define TYPE_HCURSOR        0x05#define TYPE_HICON          0x07#define TYPE_HDC            0x08    #define TYPE_SCRDC      0x81    #define TYPE_GENDC      0x82    #define TYPE_MEMDC      0x83#ifdef __cplusplusextern "C" {#endif  /* __cplusplus */typedef struct _ZORDERNODE{     HWND hWnd;			// Handle of window      struct _ZORDERNODE* pNext;	// Next window}ZORDERNODE;typedef ZORDERNODE* PZORDERNODE;typedef struct _ZORDERINFO{    int nNumber;		// Number of windows    HWND hWnd;			// Handle of host window    PZORDERNODE pTopMost;	// the top most Z order node}ZORDERINFO;typedef ZORDERINFO* PZORDERINFO;typedef struct _SCROLLWINDOWINFO{    int iOffx;    int iOffy;    const RECT* rc1;    const RECT* rc2;}SCROLLWINDOWINFO;typedef SCROLLWINDOWINFO* PSCROLLWINDOWINFO;#define SBS_NORMAL      0x00#define SBS_DISABLED    0x01#define SBS_HIDE        0x02typedef struct _SCROLLBARINFO {    int  minPos;        // min value of scroll range.    int  maxPos;        // max value of scroll range.    int  curPos;        // current scroll pos.    int  pageStep;      // steps per page.    int  barStart;      // start pixel of bar.    int  barLen;        // length of bar.    BYTE status;        // status of scroll bar.}SCROLLBARINFO;typedef SCROLLBARINFO* PSCROLLBARINFO;typedef struct _CARETINFO {    int     x;              // position of caret    int     y;    void*   pNormal;        // normal bitmap.    void*   pXored;         // bit-Xored bitmap.        PBITMAP pBitmap;        // user defined caret bitmap.    int     nWidth;         // original size of caret    int     nHeight;    int     nBytesNr;       // number of bitmap bytes.#ifdef _USE_NEWGAL    BITMAP  caret_bmp;      // bitmap of caret.#else    int     nEffWidth;      // effective width    int     nEffHeight;     // effective height;#endif    BOOL    fBlink;         // does blink?    BOOL    fShow;          // show or hide currently.    HWND    hOwner;         // the window owns the caret.    UINT    uTime;          // the blink time.}CARETINFO;typedef CARETINFO* PCARETINFO;typedef struct _QMSG{    MSG                 Msg;    struct _QMSG*       next;}QMSG;typedef QMSG* PQMSG;typedef struct _MSGQUEUE MSGQUEUE;typedef MSGQUEUE* PMSGQUEUE;#ifndef _LITE_VERSIONtypedef struct _SYNCMSG{    MSG              Msg;    int              retval;    sem_t            sem_handle;    struct _SYNCMSG* pNext;}SYNCMSG;typedef SYNCMSG* PSYNCMSG;#elsetypedef BOOL (* IDLEHANDLER) (PMSGQUEUE msg_que);void SetIdleHandler (HWND hwnd, IDLEHANDLER idle_handler);#endif// the MSGQUEUE struct is a internal struct.// using semaphores to implement message queue.struct _MSGQUEUE{    DWORD dwState;              // message queue states#ifndef _LITE_VERSION    pthread_mutex_t lock;       // lock    sem_t wait;                 // wait semaphores#endif    PQMSG  pFirstNotifyMsg;     // head of the notify message queue    PQMSG  pLastNotifyMsg;      // tail of the notify message queue#ifndef _LITE_VERSION    PSYNCMSG pFirstSyncMsg;     // head of the sync message queue    PSYNCMSG pLastSyncMsg;      // tail of the sync message queue#else    IDLEHANDLER OnIdle;         // Idle handler#endif    MSG* msg;                   // post message buffer    int len;                    // buffer len    int readpos, writepos;      // positions for reading and writing#ifdef _LITE_VERSION    /*     * One MiniGUI application can support at most 16 timers.     */    HWND TimerOwner[DEF_NR_TIMERS];  // Timer owner    int  TimerID[DEF_NR_TIMERS];     // timer identifiers.    WORD TimerMask;             // used timer slots mask#else    /*     * One thread can only support eight timers.     * And number of all timers in a MiniGUI applicatoin is 16.     */    HWND TimerOwner[DEF_NR_TIMERS];  // Timer owner    int  TimerID[DEF_NR_TIMERS];     // timer identifiers.    BYTE TimerMask;             // used timer slots mask#endif};BOOL InitFreeQMSGList (void);void DestroyFreeQMSGList (void);BOOL InitMsgQueue (PMSGQUEUE pMsgQueue, int iBufferLen);void DestroyMsgQueue (PMSGQUEUE pMsgQueue);// this struct is an internal structtypedef struct _MAINWIN{    /*     * These fields are similiar with CONTROL struct.     */    short DataType;		// the data type.    short WinType;		// the window type.    int left, top;		// the position and size of main window.    int right, bottom;    int cl, ct;			// the position and size of client area.    int cr, cb;    DWORD dwStyle;		// the styles of main window.    DWORD dwExStyle;    // the extended styles of main window.        int iBkColor;		// the background color.    HMENU hMenu;		// handle of menu.    HACCEL hAccel;      // handle of accelerator table.    HCURSOR hCursor;	// handle of cursor.    HICON hIcon;		// handle of icon.    HMENU hSysMenu;     // handle of system menu.    PLOGFONT pLogFont;  // pointer to logical font.    HDC   privCDC;      // the private client DC.    INVRGN InvRgn;      // the invalid region of this main window.    PGCRINFO pGCRInfo;  // pointer to global clip region info struct.    PZORDERNODE pZOrderNode;                        // the Z order node.    PCARETINFO pCaretInfo;                        // pointer to system caret info struct.    DWORD dwAddData;    // the additional data.    DWORD dwAddData2;   // the second addtional data.    int (*MainWindowProc)(HWND, int, WPARAM, LPARAM);                       	// the address of main window procedure.    char* spCaption;    // the caption of main window.    int   id;           // the identifier of main window.    SCROLLBARINFO vscroll;                        // the vertical scroll bar information.    SCROLLBARINFO hscroll;                        // the horizital scroll bar information.    struct _MAINWIN* pMainWin;                        // the main window that contains this window.                        // for main window, always be NULL.    HWND hParent;       // the parent of this window.                         // for main window, always be HWND_DESKTOP.        /*     * Child windows.     */    HWND hFirstChild;	// the handle of first child window.    HWND hActiveChild;  // the currently active child window.    HWND hOldUnderPointer;  // the old child window under pointer.    HWND hPrimitive;    // the premitive child of mouse event.    NOTIFPROC NotifProc;    // the notification callback procedure.    /*     * Main Window hosting.      * The following members are only implemented for main window.     */    struct _MAINWIN* pHosting;                        // the hosting main window.    struct _MAINWIN* pFirstHosted;                        // the first hosted main window.    struct _MAINWIN* pNextHosted;                        // the next hosted main window.    PMSGQUEUE pMessages;                        // the message queue.    GCRINFO GCRInfo;                        // the global clip region info struct.                        // put here to avoid invoking malloc function.#ifdef _LITE_VERSION    unsigned int srv_wnd_age;                        // age for client, index for server.#else    pthread_t th;		// the thread which creates this main window.#endif}MAINWIN;typedef MAINWIN* PMAINWIN;/************************* Initialization/Termination ************************/#ifdef _LITE_VERSIONBOOL InitGUI (void);void TerminateGUI (int rcByGUI);// Common for server and client.BOOL InitDskMsgQueue (void);void DestroyDskMsgQueue (void);#ifdef _STAND_ALONEBOOL IdleHandler4StandAlone (PMSGQUEUE msg_que);BOOL StandAloneStartup (void);void StandAloneCleanup (void);#else// Only for server.BOOL IsOnlyMe (void);void* LoadSharedResource (void);void UnloadSharedResource (void);BOOL IdleHandler4Server (PMSGQUEUE msg_que);BOOL ServerStartup (void);void ServerCleanup (void);// Only for client.void* AttachSharedResource (void);void UnattachSharedResource (void);BOOL IdleHandler4Client (PMSGQUEUE msg_que);BOOL ClientStartup (void);void ClientCleanup (void);#endif#endifBOOL InitScreenDC (void);void TerminateScreenDC (void);BOOL InitGDI (void);void TerminateGDI (void);BOOL InitFixStr (void);void TerminateFixStr (void);BOOL InitMenu (void);void TerminateMenu (void);BOOL InitMainWinMetrics (void);BOOL InitWindowElementColors (void);BOOL InitDesktop (void);void TerminateDesktop (void);/* return main window contains hWnd. */PMAINWIN GetMainWindowPtrOfControl (HWND hWnd);/* check whether hWnd is main window and return pointer to main window hWnd. */PMAINWIN CheckAndGetMainWindowPtr (HWND hWnd);/* return the main window under specified point (x, y). */PMAINWIN GetMainWindowPtrUnderPoint (int x, int y);/* return message queue of window. */PMSGQUEUE GetMsgQueue (HWND hWnd); /* return global clipping region of window. */PGCRINFO GetGCRgnInfo (HWND hWnd); /* internal variables */typedef struct _TRACKMENUINFO* PTRACKMENUINFO;extern unsigned int __mg_timer_counter;extern HWND __mg_capture_wnd;extern HWND __mg_ime_wnd;extern MSGQUEUE __mg_dsk_msgs;extern PMAINWIN __mg_active_mainwnd;extern PTRACKMENUINFO __mg_ptmi;extern int DesktopWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam);#ifdef _LITE_VERSIONextern int __mg_csrimgsize;#ifdef _USE_NEWGALextern int __mg_csrimgpitch;#endif#elseextern pthread_mutex_t __mg_gdilock, __mg_mouselock;extern pthread_t __mg_desktop, __mg_parsor, __mg_timer;#endif#ifdef __cplusplus}#endif  /* __cplusplus */#endif // GUI_INTERNALS_H

⌨️ 快捷键说明

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