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

📄 window.h

📁 这是一个介绍 linux 编程知识的文章。
💻 H
📖 第 1 页 / 共 3 页
字号:
#define LB_SETTOPINDEX          0xF197
#define LB_GETITEMRECT          0xF198
#define LB_GETITEMDATA          0xF199
#define LB_SETITEMDATA          0xF19A
#define LB_SELITEMRANGE         0xF19B
#define LB_SETANCHORINDEX       0xF19C
#define LB_GETANCHORINDEX       0xF19D
#define LB_SETCARETINDEX        0xF19E
#define LB_GETCARETINDEX        0xF19F
#define LB_SETITEMHEIGHT        0xF1A0
#define LB_GETITEMHEIGHT        0xF1A1
#define LB_FINDSTRINGEXACT      0xF1A2
#define LB_SETLOCALE            0xF1A5
#define LB_GETLOCALE            0xF1A6
#define LB_SETCOUNT             0xF1A7
#define LB_INITSTORAGE          0xF1A8
#define LB_ITEMFROMPOINT        0xF1A9
#define LB_SETTEXT              0xF1AA
#define LB_GETCHECKMARK         0xF1AB
#define LB_SETCHECKMARK         0xF1AC
#define LB_GETITEMADDDATA       0xF1AD
#define LB_SETITEMADDDATA       0xF1AE
#define LB_MSGMAX               0xF1B0

// Combo Box messages
#define CB_GETEDITSEL               0xF140
#define CB_LIMITTEXT                0xF141
#define CB_SETEDITSEL               0xF142
#define CB_ADDSTRING                0xF143
#define CB_DELETESTRING             0xF144
#define CB_DIR                      0xF145
#define CB_GETCOUNT                 0xF146
#define CB_GETCURSEL                0xF147
#define CB_GETLBTEXT                0xF148
#define CB_GETLBTEXTLEN             0xF149
#define CB_INSERTSTRING             0xF14A
#define CB_RESETCONTENT             0xF14B
#define CB_FINDSTRING               0xF14C
#define CB_SELECTSTRING             0xF14D
#define CB_SETCURSEL                0xF14E
#define CB_SHOWDROPDOWN             0xF14F
#define CB_GETITEMDATA              0xF150
#define CB_SETITEMDATA              0xF151
#define CB_GETDROPPEDCONTROLRECT    0xF152
#define CB_SETITEMHEIGHT            0xF153
#define CB_GETITEMHEIGHT            0xF154
#define CB_SETEXTENDEDUI            0xF155
#define CB_GETEXTENDEDUI            0xF156
#define CB_GETDROPPEDSTATE          0xF157
#define CB_FINDSTRINGEXACT          0xF158
#define CB_SETLOCALE                0xF159
#define CB_GETLOCALE                0xF15A
#define CB_GETTOPINDEX              0xF15b
#define CB_SETTOPINDEX              0xF15c
#define CB_GETHORIZONTALEXTENT      0xF15d
#define CB_SETHORIZONTALEXTENT      0xF15e
#define CB_GETDROPPEDWIDTH          0xF15f
#define CB_SETDROPPEDWIDTH          0xF160
#define CB_INITSTORAGE              0xF161
#define CB_MSGMAX                   0xF162

// Scroll bar messages
#define SBM_SETPOS                  0xF0E0 /*not in win3.1 */
#define SBM_GETPOS                  0xF0E1 /*not in win3.1 */
#define SBM_SETRANGE                0xF0E2 /*not in win3.1 */
#define SBM_SETRANGEREDRAW          0xF0E6 /*not in win3.1 */
#define SBM_GETRANGE                0xF0E3 /*not in win3.1 */
#define SBM_ENABLE_ARROWS           0xF0E4 /*not in win3.1 */
#define SBM_SETSCROLLINFO           0xF0E9
#define SBM_GETSCROLLINFO           0xF0EA

#define MSG_LASTCTRLMSG             0xFFFF

typedef struct _MSG
{
    HWND             hwnd;
    int              message;
    WPARAM           wParam;
    LPARAM           lParam;
    struct timeval   time;
    POINT            pt;
    void*            pAdd;
}MSG;
typedef MSG* PMSG;

typedef struct _QMSG
{
    MSG                 Msg;
    struct _QMSG*       next;
    BOOL                fromheap;
}QMSG;
typedef QMSG* PQMSG;

typedef struct _SYNCMSG
{
    MSG              Msg;
    int              retval;
    sem_t            sem_handle;
    struct _SYNCMSG* pNext;
}SYNCMSG;
typedef SYNCMSG* PSYNCMSG;

#define DEF_MSGQUEUE_LEN	16
// the MSGQUEUE struct is a internal struct.
// using semaphores to implement message queue.
#define QS_NOTIFYMSG        0x00000100
#define QS_SYNCMSG          0x00000200
#define QS_POSTMSG          0x00000400
#define QS_QUIT             0x00000800
#define QS_INPUT            0x00001000
#define QS_PAINT            0x00002000
#define QS_TIMER            0x000000FF
#define QS_EMPTY            0x00000000

typedef struct _MSGQUEUE
{
    DWORD dwState;              // message queue states

    pthread_mutex_t lock;       // lock
    sem_t wait;                 // wait semaphores

    PQMSG  pFirstNotifyMsg;     // head of the notify message queue
    PQMSG  pLastNotifyMsg;      // tail of the notify message queue

    PSYNCMSG pFirstSyncMsg;     // head of the sync message queue
    PSYNCMSG pLastSyncMsg;      // tail of the sync message queue

    MSG* msg;                   // post message buffer
    int len;                    // buffer len
    int readpos, writepos;      // positions for reading and writing

    /*
     * One thread can only support eight timers.
     * And number of all timers in a MiniGUI applicatoin is 16.
     */
    HWND TimerOwner[8];         // Timer owner
    int  TimerID[8];            // timer identifiers.
    BYTE TimerMask;             // used timer slots mask
}MSGQUEUE;
typedef MSGQUEUE* PMSGQUEUE;

// Free QMSG list
#define SIZE_QMSG_HEAP   64
typedef struct _FREEQMSGLIST
{
    pthread_mutex_t lock;
    PQMSG           head;
    PQMSG           tail;
    int             nr;
    PQMSG           heap;
    int             free;
}FREEQMSGLIST;
typedef FREEQMSGLIST* PFREEQMSGLIST;

BOOL GUIAPI InitMsgQueue(PMSGQUEUE pMsgQueue, int iBufferLen);
void GUIAPI DestroyMsgQueue(PMSGQUEUE pMsgQueue);

int GUIAPI GetMessage(PMSG pMsg, HWND hMainWnd);
BOOL GUIAPI HavePendingMessage(HWND hMainWnd);

#define PM_NOREMOVE     0x0000
#define PM_REMOVE       0x0001
#define PM_NOYIELD      0x0002
BOOL GUIAPI PeekPostMessage (PMSG pMsg, HWND hWnd, int iMsgFilterMin, 
                        int iMsgFilterMax, UINT uRemoveMsg);
                        
int GUIAPI PostMessage(HWND hWnd, int iMsg, WPARAM wParam, LPARAM lParam);
int GUIAPI SendMessage(HWND hWnd, int iMsg, WPARAM wParam, LPARAM lParam);
int GUIAPI PostSyncMessage(HWND hWnd, int iMsg, WPARAM wParam, LPARAM lParam);
int GUIAPI SendAsyncMessage(HWND hWnd, int iMsg, WPARAM wParam, LPARAM lParam);
int GUIAPI SendNotifyMessage(HWND hWnd, int iMsg, WPARAM wParam, LPARAM lParam);

int GUIAPI BroadcastMessage(int iMsg, WPARAM wParam, LPARAM lParam);
int GUIAPI PostQuitMessage(HWND hWnd);
int GUIAPI TranslateMessage(PMSG pMsg);
int GUIAPI DispatchMessage(PMSG pMsg);

int GUIAPI ThrowAwayMessages (HWND pMainWnd);

int GUIAPI TranslateAccelerator(HWND hWnd, HACCEL hAccel, PMSG pMsg);

/******************************* Hooks support *******************************/
#define HOOK_OK         0
#define HHOOK_INVALID   -1

#define HOOK_STOP       1
#define HOOK_GOON       2

typedef struct _KEYHOOK
{
    HWND hWnd;
    KEYMSGHOOK hook;
}KEYHOOK;

typedef struct _MOUSEHOOK
{
    HWND hWnd;
    MOUSEMSGHOOK hook;
}MOUSEHOOK;

HHOOK GUIAPI RegisterKeyMsgHook (HWND hWnd, KEYMSGHOOK hook);
HHOOK GUIAPI RegisterMouseMsgHook (HWND hWnd, MOUSEMSGHOOK hook);

int GUIAPI UnregisterHook (HHOOK hHook);

/******************************* Style definitions ***************************/
/* Class styles */
#define CS_VREDRAW          0x0001
#define CS_HREDRAW          0x0002

#define CS_OWNDC            0x0020
#define CS_CLASSDC          0x0040
#define CS_PARENTDC         0x0080

#define CS_SAVEBITS         0x0800

#define CS_DBLCLKS          0x0008

#define CS_BYTEALIGNCLIENT  0x1000
#define CS_BYTEALIGNWINDOW  0x2000

#define CS_NOCLOSE          0x0200

#define CS_KEYCVTWINDOW     0x0004
#define CS_NOKEYCVT         0x0100

#define CS_GLOBALCLASS      0x4000

/* Window Styles */

/* Basic window types */
#define WS_OVERLAPPED       0x00000000L
#define WS_POPUP            0x80000000L
#define WS_CHILD            0x40000000L

/* Clipping styles */       // not supported

/* Generic window states */
#define WS_VISIBLE          0x08000000L
#define WS_DISABLED         0x04000000L

/* Main window states */
#define WS_MINIMIZE         0x02000000L
#define WS_MAXIMIZE         0x01000000L

/* Main window styles */
#define WS_CAPTION          0x20000000L
#define WS_SYSMENU          0x10000000L
#define WS_DLGFRAME         0x00800000L
#define WS_BORDER           0x00400000L
#define WS_THICKFRAME       0x00200000L
#define WS_THINFRAME        0x00100000L
#define WS_VSCROLL          0x00080000L
#define WS_HSCROLL          0x00040000L
#define WS_MINIMIZEBOX      0x00020000L
#define WS_MAXIMIZEBOX      0x00010000L

/* Control window styles */
#define WS_GROUP            0x00020000L
#define WS_TABSTOP          0x00010000L

/* Common Window Styles */
#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED  | \
                             WS_CAPTION     | \
                             WS_SYSMENU     | \
                             WS_THICKFRAME  | \
                             WS_MINIMIZEBOX | \
                             WS_MAXIMIZEBOX )
                             
#define WS_POPUPWINDOW      (WS_POPUP       | \
                             WS_BORDER      | \
                             WS_SYSMENU)

#define WS_CHILDWINDOW      (WS_CHILD)

/* Extended Window Styles */
#define WS_EX_NONE              0x00000000L     // supported
#define WS_EX_DLGMODALFRAME     0x00000001L
#define WS_EX_USEPRIVATECDC     0x00000002L     // supported
#define WS_EX_NOPARENTNOTIFY    0x00000004L
#define WS_EX_TOPMOST           0x00000008L     // supported
#define WS_EX_ACCEPTFILES       0x00000010L
#define WS_EX_TRANSPARENT       0x00000020L
#define WS_EX_MDICHILD          0x00000040L
#define WS_EX_TOOLWINDOW        0x00000080L
#define WS_EX_WINDOWEDGE        0x00000100L
#define WS_EX_CLIENTEDGE        0x00000200L
#define WS_EX_CONTEXTHELP       0x00000400L

#define WS_EX_RIGHT             0x00001000L
#define WS_EX_LEFT              0x00000000L
#define WS_EX_RTLREADING        0x00002000L
#define WS_EX_LTRREADING        0x00000000L
#define WS_EX_LEFTSCROLLBAR     0x00004000L
#define WS_EX_RIGHTSCROLLBAR    0x00000000L

#define WS_EX_CONTROLPARENT     0x00010000L
#define WS_EX_STATICEDGE        0x00020000L
#define WS_EX_APPWINDOW         0x00040000L

#define WS_EX_IMECOMPOSE        0x10000000L     // supported

#define WS_EX_OVERLAPPEDWINDOW  (WS_EX_WINDOWEDGE | \
                                 WS_EX_CLIENTEDGE)

#define WS_EX_PALETTEWINDOW     (WS_EX_WINDOWEDGE | \
                                 WS_EX_TOOLWINDOW | \
                                 WS_EX_TOPMOST)

/****** control styles ******************************************************/

/* Static Control Styles */
#define SS_LEFT             0x00000000L
#define SS_CENTER           0x00000001L
#define SS_RIGHT            0x00000002L
#define SS_ICON             0x00000003L
#define SS_BLACKRECT        0x00000004L
#define SS_GRAYRECT         0x00000005L
#define SS_WHITERECT        0x00000006L
#define SS_BLACKFRAME       0x00000007L
#define SS_GRAYFRAME        0x00000008L
#define SS_WHITEFRAME       0x00000009L
#define SS_GROUPBOX         0x0000000AL
#define SS_SIMPLE           0x0000000BL
#define SS_LEFTNOWORDWRAP   0x0000000CL
#define SS_OWNERDRAW        0x0000000DL
#define SS_BITMAP           0x0000000EL
#define SS_ENHMETAFILE      0x0000000FL
#define SS_TYPEMASK         0x0000000FL

#define SS_NOPREFIX         0x00000080L

#define SS_ETCHEDHORZ       0x00000010L
#define SS_ETCHEDVERT       0x00000011L
#define SS_ETCHEDFRAME      0x00000012L
#define SS_ETCTYPEMAKS      0x0000001FL

#define SS_NOTIFY           0x00000100L
#define SS_CENTERIMAGE      0x00000200L
#define SS_RIGHTJUST        0x00000400L
#define SS_REALSIZEIMAGE    0x00000800L

    /* not supported styles */
    // #define SS_SUNKEN           0x00001000L
    // #define SS_ENDELLIPSIS      0x00004000L
    // #define SS_PATHELLIPSIS     0x00008000L
    // #define SS_WORDELLIPSIS     0x0000C000L
    // #define SS_ELLIPSISMASK     0x0000C000L


/* Button Styles */
#define BS_PUSHBUTTON       0x00000000L
#define BS_DEFPUSHBUTTON    0x00000001L
#define BS_CHECKBOX         0x00000002L
#define BS_AUTOCHECKBOX     0x00000003L
#define BS_RADIOBUTTON      0x00000004L
#define BS_3STATE           0x00000005L
#define BS_AUTO3STATE       0x00000006L
#define BS_GROUPBOX         0x00000007L
#define BS_USERBUTTON       0x00000008L
#define BS_AUTORADIOBUTTON  0x00000009L
#define BS_OWNERDRAW        0x0000000BL
#define BS_TYPEMASK         0x0000000FL

#define BS_TEXT             0x00000000L
#define BS_LEFTTEXT         0x00000020L
#define BS_ICON             0x00000040L
#define BS_BITMAP           0x00000080L
#define BS_CONTENTMASK      0x000000F0L

#define BS_LEFT             0x00000100L
#define BS_RIGHT            0x00000200L
#define BS_CENTER           0x00000300L
#define BS_TOP              0x00000400L
#define BS_BOTTOM           0x00000800L
#define BS_VCENTER          0x00000C00L
#define BS_ALIGNMASK        0x00000F00L

#define BS_PUSHLIKE         0x00001000L
#define BS_MULTLINE         0x00002000L
#define BS_NOTIFY           0x00004000L
#define BS_FLAT             0x00008000L
#define BS_RIGHTBUTTON      BS_LEFTTEXT

#define BST_UNCHECKED       0x0000
#define BST_CHECKED         0x0001
#define BST_INDETERMINATE   0x0002
#define BST_PUSHED          0x0004
#define BST_FOCUS           0x0008

/* User Button notification codes */
#define BN_CLICKED          0
#define BN_PAINT            1
#define BN_HILITE           2
#define BN_UNHILITE         3
#define BN_DISABLE          4
#define BN_DOUBLECLICKED    5
#define BN_PUSHED           BN_HILITE
#define BN_UNPUSHED         BN_UNHILITE
#define BN_DBLCLK           BN_DOUBLECLICKED
#define BN_SETFOCUS         6
#define BN_KILLFOCUS        7

/* Edit control styles */
#define ES_LEFT             0x00000000L
#define ES_CENTER           0x00000001L
#define ES_RIGHT            0x00000002L
#define ES_MULTILINE        0x00000004L
#define ES_UPPERCASE        0x00000008L
#define ES_LOWERCASE        0x00000010L
#define ES_PASSWORD         0x00000020L
#define ES_AUTOVSCROLL      0x00000040L
#define ES_AUTOHSCROLL      0x00000080L
#define ES_NOHIDESEL        0x00000100L
#define ES_OEMCONVERT       0x00000400L
#define ES_READONLY         0x00000800L

⌨️ 快捷键说明

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