window.h
上传用户:sdaoma
上传日期:2013-08-07
资源大小:3838k
文件大小:200k
源码类别:

GPS编程

开发平台:

C/C++

  1.  *
  2.  * sa IsControl, IsWindow
  3.  */
  4. BOOL GUIAPI IsMainWindow (HWND hWnd);
  5. /**
  6.  * fn BOOL GUIAPI IsControl (HWND hWnd)
  7.  * brief Determines whether a window is a control.
  8.  *
  9.  * This function determines whether the specified window a hWnd is a control.
  10.  *
  11.  * param hWnd The handle to the window.
  12.  * return TRUE for control, otherwise FALSE.
  13.  *
  14.  * sa IsMainWindow, IsWindow
  15.  */
  16. BOOL GUIAPI IsControl (HWND hWnd);
  17. /**
  18.  * fn BOOL GUIAPI IsWindow (HWND hWnd)
  19.  * brief Determines whether a window handle identifies an existing window.
  20.  *
  21.  * This function determines whether the specified window handle a hWnd 
  22.  * identifies an existing window.
  23.  *
  24.  * param hWnd The window handle.
  25.  * return TRUE for window, otherwise FALSE.
  26.  *
  27.  * sa IsMainWindow, IsControl
  28.  */
  29. BOOL GUIAPI IsWindow (HWND hWnd);
  30. /**
  31.  * fn HWND GUIAPI GetParent (HWND hWnd)
  32.  * brief Retrieves the handle to a child window's parent window.
  33.  *
  34.  * This function retrieves the handle to the specified child window's parent window.
  35.  *
  36.  * param hWnd The handle to the child window.
  37.  * return The handle to the parent, HWND_INVALID indicates an error.
  38.  *
  39.  * note For a main window, this function always returns HWND_DESKTOP.
  40.  *
  41.  * sa GetMainWindowHandle
  42.  */
  43. HWND GUIAPI GetParent (HWND hWnd);
  44. /**
  45.  * fn HWND GUIAPI GetMainWindowHandle (HWND hWnd)
  46.  * brief Retrives the handle to the main window contains a window.
  47.  *
  48.  * This function retrives the handle to the main window which contains the
  49.  * specified window a hWnd.
  50.  *
  51.  * param hWnd The handle to the window.
  52.  * return The handle to the main window, HWND_DEKSTOP indicates an error.
  53.  *
  54.  * note For a main window, this function always returns the handle to itself.
  55.  *
  56.  * sa GetParent
  57.  */
  58. HWND GUIAPI GetMainWindowHandle (HWND hWnd);
  59. /**
  60.  * fn BOOL GUIAPI IsWindowVisible (HWND hWnd)
  61.  * brief Retrieves the visibility state of a window.
  62.  *
  63.  * This function retrives the visibility state of the specified window a hWnd.
  64.  *
  65.  * param hWnd The handle to the window.
  66.  * return TRUE if visible, otherwise FALSE.
  67.  *
  68.  * sa ShowWindow
  69.  */
  70. BOOL GUIAPI IsWindowVisible (HWND hWnd);
  71. /**
  72.  * fn BOOL GUIAPI GetWindowRect (HWND hWnd, PRECT prc)
  73.  * brief Retrives the dimensions of the bounding rectangle of a window. 
  74.  *
  75.  * This function retrives the dimension of the bounding rectangle of
  76.  * the specified window a hWnd. The dimensions are given in screen coordinates 
  77.  * that are relative to the upper-left corner of the screen.
  78.  *
  79.  * param hWnd The handle to the window.
  80.  * param prc The pointer to a RECT structure which will contains the window rectangle.
  81.  * return TRUE on success, otherwise FALSE.
  82.  *
  83.  * sa GetClientRect
  84.  */
  85. BOOL GUIAPI GetWindowRect (HWND hWnd, PRECT prc);
  86. /**
  87.  * fn HWND GUIAPI GetNextChild (HWND hWnd, HWND hChild)
  88.  * brief Retrives the next control in a window.
  89.  *
  90.  * This function retrives the next child of the specified 
  91.  * window a hWnd. If you pass HWND_DESKTOP for the argument
  92.  * of a hChild, the function will return the first child of the window.
  93.  *
  94.  * param hWnd The handle to the window.
  95.  * param hChild The handle to a child of the window.
  96.  * return The handle of the next child. If you pass HWND_DESKTOP for
  97.  *      the argument of a hChild, it will return the first child 
  98.  *      of the window. When the child you passed is the last one, 
  99.  *      this function will return HWND_DESKTOP. If hWnd is not the parent
  100.  *      of hChild, this function will return HWND_INVALID.
  101.  *
  102.  * sa GetNextMainWindow
  103.  *
  104.  * Example:
  105.  *
  106.  * include nextcontrol.c
  107.  */
  108. HWND GUIAPI GetNextChild (HWND hWnd, HWND hChild);
  109. /**
  110.  * fn HWND GUIAPI GetNextMainWindow (HWND hMainWnd)
  111.  * brief Retrives the next main window in the system.
  112.  *
  113.  * This function retrives the next main window of the specified 
  114.  * main window a hMainWnd. If you pass HWND_DESKTOP for the argument
  115.  * of a hChild, the function will return the topmost main window in 
  116.  * the system.
  117.  *
  118.  * param hMainWnd The handle to the main window.
  119.  * return The handle of the next main window. If you pass HWND_DESKTOP for
  120.  *      the argument of a hMainWnd, it will return the topmost main window.
  121.  *      When the main window you passed is the bottommost one, this function 
  122.  *      will return HWND_DESKTOP. If hMainWnd is not a main window, the function
  123.  *      will return HWND_INVALID.
  124.  *
  125.  * sa GetNextChild
  126.  */
  127. HWND GUIAPI GetNextMainWindow (HWND hMainWnd);
  128. /**
  129.  * fn HWND GUIAPI GetHosting (HWND hMainWnd)
  130.  * brief Retrives the hosting main window of a main window.
  131.  *
  132.  * This function retrives the hosting main window of the specified 
  133.  * main window a hWnd. The hosting main window creates the message queue,
  134.  * which shared with all hosted main window of it.
  135.  *
  136.  * param hMainWnd The handle to the main window.
  137.  * return The handle to the hosting main window.
  138.  *
  139.  * sa GetFirstHosted, GetNextHosted
  140.  */
  141. HWND GUIAPI GetHosting (HWND hMainWnd);
  142. /**
  143.  * fn HWND GUIAPI GetFirstHosted (HWND hHosting)
  144.  * brief Retrives the first hosted main window of a main window.
  145.  *
  146.  * This function retrives the first hosted main window of 
  147.  * the specified main window a hMainWnd.
  148.  *
  149.  * param hHosting The handle to the hosting main window.
  150.  * return The handle to the first hosted main window.
  151.  *
  152.  * sa GetHosting, GetNextHosted
  153.  */
  154. HWND GUIAPI GetFirstHosted (HWND hHosting);
  155. /**
  156.  * fn HWND GUIAPI GetNextHosted (HWND hHosting, HWND hHosted)
  157.  * brief Retrives the next hosted main window of a main window.
  158.  *
  159.  * This function retrives the next hosted main window of the specified
  160.  * main window a hHosting.
  161.  *
  162.  * param hHosting The handle to the hosting main window.
  163.  * param hHosted The handle to a known hosted main window. This function
  164.  * will return the next hosted main window.
  165.  * return Handle to the next hosted main window, HWND_DESKTOP when 
  166.  * a hHosted is the last hosted main window.
  167.  *
  168.  * sa GetFirstHosted
  169.  */
  170. HWND GUIAPI GetNextHosted (HWND hHosting, HWND hHosted);
  171. /**
  172.  * fn int GUIAPI GetWindowTextLength (HWND hWnd)
  173.  * brief Retrieves the length of a window's text.
  174.  *
  175.  * This function retrieves the length, in characters, of the specified window's text.
  176.  * The function retrieves the length of the text by sending an MSG_GETTEXTLENGTH message
  177.  * to the window.
  178.  *
  179.  * param hWnd The handle to the window.
  180.  * return The length of the window's text.
  181.  *
  182.  * sa GetWindowText
  183.  */
  184. int GUIAPI GetWindowTextLength (HWND hWnd);
  185. /**
  186.  * fn int GUIAPI GetWindowText (HWND hWnd, char* spString, int nMaxLen)
  187.  * brief Copies the text of a window's into a buffer.
  188.  *
  189.  * This function copies the text of the specified window a hWnd into the buffer
  190.  * pointed to by a spString. The function gets the window text by sending
  191.  * an MSG_GETTEXT message to the window.
  192.  *
  193.  * param hWnd The handle to the window.
  194.  * param spString The pointer to a buffer receives the text.
  195.  * param nMaxLen The maximal number of characters can be copied to the buffer.
  196.  * return The length of the window text string.
  197.  *
  198.  * sa GetWindowCaption, SetWindowText
  199.  */
  200. int GUIAPI GetWindowText (HWND hWnd, char* spString, int nMaxLen);
  201. /**
  202.  * fn BOOL GUIAPI SetWindowText (HWND hWnd, const char* spString)
  203.  * brief Sets the text of a window.
  204.  *
  205.  * This function copies the string in the buffer pointed to by a spString
  206.  * to be the text of the specified window a hWnd. The function sets
  207.  * the window text by sending an MSG_SETTEXT message to the window.
  208.  *
  209.  * param hWnd The handle to the window.
  210.  * param spString The pointer to the buffer.
  211.  * return TRUE on success, otherwise FALSE.
  212.  *
  213.  * sa SetWindowCaption, GetWindowText
  214.  */
  215. BOOL GUIAPI SetWindowText (HWND hWnd, const char* spString);
  216. /**
  217.  * fn HWND GUIAPI GetFocusChild (HWND hWnd)
  218.  * brief Retrieves the handle to the window's active child that has the keyboard focus.
  219.  *
  220.  * This function retrives the handle to the window's active child that has
  221.  * the keyboard focus.
  222.  *
  223.  * param hWnd The handle to the window.
  224.  * return The handle to the active child.
  225.  *
  226.  * sa SetFocusChild
  227.  */
  228. HWND GUIAPI GetFocusChild (HWND hWnd);
  229. /**
  230.  * fn HWND GUIAPI SetFocusChild (HWND hWnd)
  231.  * brief Sets the active child of a window.
  232.  *
  233.  * This function sets the specified window a hWnd as the active child of its parent.
  234.  *
  235.  * param hWnd The handle to the window.
  236.  * return The handle to the old active child of its parent.
  237.  *
  238.  * sa GetFocusChild
  239.  */
  240. HWND GUIAPI SetFocusChild (HWND hWnd);
  241. #define SetFocus SetFocusChild
  242. #define GetFocus GetFocusChild
  243. /**
  244.  * fn HWND GUIAPI GetActiveWindow (void)
  245.  * brief Retrieves the main window handle to the active main window.
  246.  *
  247.  * This function retrives the main window handle to the active main window which
  248.  * receives the input.
  249.  *
  250.  * return The handle to the active main window.
  251.  *
  252.  * sa SetActiveWindow, GetFocusChild
  253.  */
  254. HWND GUIAPI GetActiveWindow (void);
  255. /**
  256.  * fn HWND GUIAPI SetActiveWindow (HWND hMainWnd)
  257.  * brief Sets a main window to be the active main window.
  258.  *
  259.  * This function sets the specified main window a hMainWnd to be the 
  260.  * active main window which receives the input.
  261.  *
  262.  * param hMainWnd The handle to the new active main window.
  263.  * return The handle to the old active main window.
  264.  *
  265.  * sa GetActiveWindow, SetFocusChild
  266.  */
  267. HWND GUIAPI SetActiveWindow (HWND hMainWnd);
  268. #define GetForegroundWindow GetActiveWindow
  269. #define SetForegroundWindow SetActiveWindow
  270. /**
  271.  * fn HWND GUIAPI GetCapture(void)
  272.  * brief Retrives the handle to the window (if any) that has captured the mouse.
  273.  *
  274.  * This function retrieves the handle to the window (if any) that has captured the mouse. 
  275.  * Only one window at a time can capture the mouse; this window receives mouse input 
  276.  * whether or not the cursor is within its borders.
  277.  *
  278.  * return The handle to the window that has captured the mouse, HWND_DESKTOP for
  279.  * no window captures the mouse.
  280.  *
  281.  * sa SetCapture
  282.  */
  283. HWND GUIAPI GetCapture(void);
  284. /**
  285.  * fn HWND GUIAPI SetCapture(HWND hWnd)
  286.  * brief Sets the mouse capture to the specified window.
  287.  *
  288.  * This function sets the mouse capture to the specified window a hWnd. 
  289.  * Once a window has captured the mouse, all mouse input is directed to that window, 
  290.  * regardless of whether the cursor is within the borders of that window. 
  291.  * Only one window at a time can capture the mouse. 
  292.  *
  293.  * param hWnd The handle to the window.
  294.  * return The old capture window.
  295.  *
  296.  * sa GetCapture
  297.  */
  298. HWND GUIAPI SetCapture(HWND hWnd);
  299. /**
  300.  * fn void GUIAPI ReleaseCapture(void)
  301.  * brief Releases the mouse capture from a window and restores normal mouse input processing.
  302.  *
  303.  * This function releases the mouse capture from a window and restores normal 
  304.  * mouse input processing. A window that has captured the mouse receives all mouse input, 
  305.  * regardless of the position of the cursor.
  306.  *
  307.  * sa GetCapture, SetCapture
  308.  */
  309. void GUIAPI ReleaseCapture(void);
  310. /**
  311.  * fn BOOL GUIAPI MoveWindow (HWND hWnd, int x, int y, int w, int h, BOOL fPaint)
  312.  * brief Changes the position and dimensions of a window.
  313.  *
  314.  * This function changes the position and dimensions of the specified window a hWnd. 
  315.  * For a main window, the position and dimensions are relative to the upper-left 
  316.  * corner of the screen. For a control, they are relative to the upper-left 
  317.  * corner of the parent window's client area.
  318.  *
  319.  * param hWnd The handle to the window.
  320.  * param x The new x coordinate of the upper-left corner of the window.
  321.  * param y The new y coordinate of the upper-left corner of the window.
  322.  * param w The new width of the window.
  323.  * param h The new height of the window.
  324.  * param fPaint Indicates whether the window should be repainted.
  325.  * return TRUE on success, otherwise FALSE.
  326.  *
  327.  * sa ScrollWindow
  328.  */
  329. BOOL GUIAPI MoveWindow (HWND hWnd, int x, int y, int w, int h, BOOL fPaint);
  330. /**
  331.  * fn void GUIAPI ScrollWindow (HWND hWnd, int iOffx, int iOffy, const RECT* rc1, const RECT* rc2)
  332.  * brief Scrolls the content of a window's client area.
  333.  *
  334.  * This function scrolls the content of the specified window's client area.
  335.  *
  336.  * param hWnd The handle to the window.
  337.  * param iOffx The new x coordinate of the origin in the client coordinates system after scrolling.
  338.  * param iOffy The new y coordinate of the origin in the client coordinates system after scrolling.
  339.  * param rc1 The rectangle of the area which will be scroll actually.
  340.  * param rc2 Not used, should be NULL.
  341.  *
  342.  * sa MoveWindow
  343.  */
  344. void GUIAPI ScrollWindow (HWND hWnd, int iOffx, int iOffy, 
  345.                             const RECT* rc1, const RECT* rc2);
  346. #define MWM_MINWIDTH            0
  347. #define MWM_MINHEIGHT           1
  348. #define MWM_BORDER              2
  349. #define MWM_THICKFRAME          3
  350. #define MWM_THINFRAME           4
  351. #define MWM_CAPTIONY            5
  352. #define MWM_ICONX               6
  353. #define MWM_ICONY               7
  354. #define MWM_MENUBARY            8
  355. #define MWM_MENUBAROFFX         9
  356. #define MWM_MENUBAROFFY         10
  357. #define MWM_MENUITEMY           11 
  358. #define MWM_INTERMENUITEMX      12
  359. #define MWM_INTERMENUITEMY      13
  360. #define MWM_MENUITEMOFFX        14
  361. #define MWM_MENUTOPMARGIN       15
  362. #define MWM_MENUBOTTOMMARGIN    16
  363. #define MWM_MENULEFTMARGIN      17
  364. #define MWM_MENURIGHTMARGIN     18
  365. #define MWM_MENUITEMMINX        19
  366. #define MWM_MENUSEPARATORY      20
  367. #define MWM_MENUSEPARATORX      21
  368. #define MWM_SB_HEIGHT           22
  369. #define MWM_SB_WIDTH            23
  370. #define MWM_SB_INTERX           24
  371. #define MWM_CXVSCROLL           25
  372. #define MWM_CYVSCROLL           26
  373. #define MWM_CXHSCROLL           27
  374. #define MWM_CYHSCROLL           28
  375. #define MWM_MINBARLEN           29
  376. #define MWM_DEFBARLEN           30
  377. #define MWM_ITEM_NUMBER         31
  378. extern int WinMainMetrics [];
  379. #define GetMainWinMetrics(iItem)    (WinMainMetrics[iItem])
  380. /**
  381.  * fn int GUIAPI GetWindowElementMetricsEx (HWND hwnd, Uint16 item)
  382.  * brief Returns the metrics value of an element of a window.
  383.  *
  384.  * This function returns the metrics value of the specific window element
  385.  * of the window specified by a hwnd.
  386.  *
  387.  * param hwnd The handle to the window. If you pass HWND_DESKTOP for
  388.  *        this argument, this function will return the default element metrics.
  389.  * param item The number of the window element, can be one of the following value:
  390.  *
  391.  * return The metrics value of the window element, -1 for error.
  392.  *
  393.  * /sa SetWindowElementMetricsEx
  394.  */
  395. int GUIAPI GetWindowElementMetricsEx (HWND hwnd, Uint16 item);
  396. /**
  397.  * fn int GUIAPI SetWindowElementMetricsEx (HWND hwnd, Uint16 item, int new_value)
  398.  * brief Sets the metrics value of an element of a window.
  399.  *
  400.  * This function sets the metrics value of the specific window element of 
  401.  * the window specified by a hwnd and returns the old value.
  402.  *
  403.  * param hwnd The handle to the window. If you pass HWND_DESKTOP for
  404.  *        this argument, this function will set and return the default element metrics.
  405.  * param item The number of the window element.
  406.  * param new_value The new metrics value of the window element.
  407.  * return The old metrics value of the window element, -1 for error.
  408.  *
  409.  * /sa GetWindowElementMetricsEx
  410.  */
  411. int GUIAPI SetWindowElementMetricsEx (HWND hwnd, Uint16 item, int new_value);
  412. #define BKC_CAPTION_NORMAL          0
  413. #define FGC_CAPTION_NORMAL          1
  414. #define BKC_CAPTION_ACTIVED         2
  415. #define FGC_CAPTION_ACTIVED         3
  416. #define BKC_CAPTION_DISABLED        4
  417. #define FGC_CAPTION_DISABLED        5
  418. #define WEC_FRAME_NORMAL            6
  419. #define WEC_FRAME_ACTIVED           7
  420. #define WEC_FRAME_DISABLED          8
  421. #define BKC_MENUBAR_NORMAL          9
  422. #define FGC_MENUBAR_NORMAL          10
  423. #define BKC_MENUBAR_HILITE          11
  424. #define FGC_MENUBAR_HILITE          12
  425. #define FGC_MENUBAR_DISABLED        13
  426. #define BKC_MENUITEM_NORMAL         14
  427. #define FGC_MENUITEM_NORMAL         15
  428. #define BKC_MENUITEM_HILITE         16
  429. #define FGC_MENUITEM_HILITE         17
  430. #define FGC_MENUITEM_DISABLED       18
  431. #define BKC_PPPMENUTITLE            19
  432. #define FGC_PPPMENUTITLE            20
  433. #define FGC_MENUITEM_FRAME         21
  434. #define WEC_3DBOX_NORMAL            22
  435. #define WED_3DBOX_REVERSE           23
  436. #define WEC_3DBOX_LIGHT             24
  437. #define WEC_3DBOX_DARK              25
  438. #define WEC_FLAT_BORDER             26
  439. #define BKC_CONTROL_DEF             27
  440. #define FGC_CONTROL_NORMAL          28
  441. #define FGC_CONTROL_DISABLED        29
  442. #define BKC_HILIGHT_NORMAL          30
  443. #define BKC_HILIGHT_LOSTFOCUS       31
  444. #define FGC_HILIGHT_NORMAL          32
  445. #define FGC_HILIGHT_DISABLED        33
  446. #define BKC_DESKTOP                 34
  447. #define BKC_DIALOG             35
  448. #define BKC_TIP             36
  449. #define WEC_ITEM_NUMBER             37
  450. /* back compitabilty defines */
  451. #define BKC_BUTTON_DEF              WEC_3DBOX_NORMAL
  452. #define BKC_BUTTON_PUSHED           WEC_3DBOX_DARK
  453. #define FGC_BUTTON_NORMAL           WED_3DBOX_REVERSE
  454. #define FGC_BUTTON_PUSHED           WEC_3DBOX_LIGHT
  455. #define BKC_EDIT_DEF                WEC_3DBOX_LIGHT
  456. #define BKC_EDIT_DISABLED           WEC_3DBOX_NORMAL
  457. #define WEC_3DFRAME_LEFT_OUTER      WED_3DBOX_REVERSE
  458. #define WEC_3DFRAME_LEFT_INNER      WEC_3DBOX_DARK
  459. #define WEC_3DFRAME_TOP_OUTER       WED_3DBOX_REVERSE
  460. #define WEC_3DFRAME_TOP_INNER       WEC_3DBOX_DARK
  461. #define WEC_3DFRAME_RIGHT_OUTER     WEC_3DBOX_LIGHT
  462. #define WEC_3DFRAME_RIGHT_INNER     WEC_3DBOX_NORMAL
  463. #define WEC_3DFRAME_BOTTOM_OUTER    WEC_3DBOX_LIGHT
  464. #define WEC_3DFRAME_BOTTOM_INNER    WEC_3DBOX_NORMAL
  465. #define WEC_3DFRAME_LEFT            WEC_3DBOX_LIGHT
  466. #define WEC_3DFRAME_TOP             WEC_3DBOX_LIGHT
  467. #define WEC_3DFRAME_RIGHT           WEC_3DBOX_DARK
  468. #define WEC_3DFRAME_BOTTOM          WEC_3DBOX_DARK
  469. extern gal_pixel WinElementColors[];
  470. #define GetWindowElementColor(iItem)    (WinElementColors[iItem])
  471. /**
  472.  * fn gal_pixel GUIAPI GetWindowElementColorEx (HWND hwnd, Uint16 item)
  473.  * brief Returns the pixel value used to draw the specific window element of a window.
  474.  *
  475.  * This function returns the pixel value used to draw the specific window element
  476.  * of the window specified by a hwnd.
  477.  *
  478.  * param hwnd The handle to the window. If you pass HWND_DESKTOP for
  479.  *        this argument, this function will return the default element pixel value.
  480.  * param item The number of window element, can be one of the following values:
  481.  *
  482.  * return The pixel value of the window element.
  483.  *
  484.  * /sa SetWindowElementColorEx
  485.  */
  486. gal_pixel GUIAPI GetWindowElementColorEx (HWND hwnd, Uint16 item);
  487. /**
  488.  * fn gal_pixel GUIAPI SetWindowElementColorEx (HWND hwnd, Uint16 item, gal_pixel new_value);
  489.  * brief Sets the pixel value used to draw the specific window element of a window.
  490.  *
  491.  * This function sets the pixel value used to draw the specific window element of 
  492.  * the window specified by a hwnd and returns the old pixel value.
  493.  *
  494.  * param hwnd The handle to the window. If you pass HWND_DESKTOP for
  495.  *        this argument, this function will set and return the default element pixel value.
  496.  * param item The number of window elment item.
  497.  * param new_value The new pixel value of the window element.
  498.  * return The old pixel value of the window element.
  499.  *
  500.  * /sa GetWindowElementColorEx
  501.  */
  502. gal_pixel GUIAPI SetWindowElementColorEx (HWND hwnd, Uint16 item, gal_pixel new_value);
  503.     /** @} end of window_general_fns */
  504.     /**
  505.      * defgroup sys_bmps System bitmap/icon operations
  506.      * @{
  507.      */
  508. #define SYSBMP_CAPBTNS              0
  509. #define SYSBMP_ARROWS               1
  510. #define SYSBMP_SCROLLBAR_HBG        2
  511. #define SYSBMP_SCROLLBAR_HSLIDER    3
  512. #define SYSBMP_SCROLLBAR_VBG        4
  513. #define SYSBMP_SCROLLBAR_VSLIDER    5
  514. #define SYSBMP_BGPICTURE            6
  515. #define SYSBMP_ITEM_NUMBER          7
  516. #if defined(_LITE_VERSION) && !defined(_STAND_ALONE)
  517. /**
  518.  * fn PBITMAP GUIAPI GetSystemBitmap (int id)
  519.  * brief Retrives the system bitmap object by identifier.
  520.  *
  521.  * This function returns the system bitmap object by its identifier.
  522.  *
  523.  * param id The identifier of the system bitmap object, can be
  524.  * one of the following values:
  525.  *
  526.  *      - SYSBMP_CAPBTNSn      Bitmap of the caption buttons.
  527.  *      - SYSBMP_ARROWSn       Bitmap of the scroll bar arrows.
  528.  *      - SYSBMP_BGPICTUREn    Bitmap of the background picture.
  529.  *      - SYSBMP_SCROLLBAR_HBGn    Bitmap of the background of the horizental scrollbar.
  530.  *      - SYSBMP_SCROLLBAR_HSLIDERn    Bitmap of the slider of the horizental scrollbar.
  531.  *      - SYSBMP_SCROLLBAR_VBGn    Bitmap of the background of the vertical scrollbar.
  532.  *      - SYSBMP_SCROLLBAR_VSLIDERn    Bitmap of the slider of the vertical scrollbar.
  533.  *
  534.  * return The pointer to the system bitmap object.
  535.  *
  536.  * note For MiniGUI-Threads, this function is defined
  537.  * as a macro, and have the same semantics as this function.
  538.  *
  539.  * sa GetLargeSystemIcon, GetSmallSystemIcon
  540.  */
  541. PBITMAP GUIAPI GetSystemBitmap (int id);
  542. #else
  543. extern BITMAP SystemBitmap[];
  544. #define GetSystemBitmap(iItem)      (SystemBitmap + iItem)
  545. #endif
  546. #define IDI_APPLICATION         0
  547. #define IDI_HAND                1
  548. #define IDI_STOP                IDI_HAND
  549. #define IDI_QUESTION            2
  550. #define IDI_EXCLAMATION         3
  551. #define IDI_ASTERISK            4
  552. #define IDI_INFORMATION         IDI_ASTERISK
  553. #define SYSICO_ITEM_NUMBER      5
  554. #if defined(_LITE_VERSION) && !defined(_STAND_ALONE)
  555. /**
  556.  * fn HICON GUIAPI GetLargeSystemIcon (int id)
  557.  * brief Retrives a large system icon by its identifier.
  558.  *
  559.  * This function retrives the handle to a large (32x32) system icon by its identifier a id.
  560.  *
  561.  * param id The identifier of the icon. It can be one of the following values:
  562.  *      - IDI_APPLICATIONn The application icon.
  563.  *      - IDI_STOPn        The stop icon.
  564.  *      - IDI_QUESTIONn    The question mark icon.
  565.  *      - IDI_EXCLAMATIONn The exclamation mark icon.
  566.  *      - IDI_INFORMATIONn The information mark icon.
  567.  * return The handle to the icon.
  568.  *
  569.  * note For MiniGUI-Threads, this function is defined
  570.  * as a macro, and have the same semantics as this function.
  571.  *
  572.  * sa GetSystemBitmap
  573.  */
  574. HICON GUIAPI GetLargeSystemIcon (int id);
  575. /**
  576.  * fn HICON GUIAPI GetSmallSystemIcon (int id)
  577.  * brief Retrives a small system icon by its identifier.
  578.  *
  579.  * This function retrives the handle to a small (16x16) system icon by its identifier a id.
  580.  *
  581.  * param id The identifier of the icon. It can be one of the following values:
  582.  *      - IDI_APPLICATIONn The application icon.
  583.  *      - IDI_STOPn        The stop icon.
  584.  *      - IDI_QUESTIONn    The question mark icon.
  585.  *      - IDI_EXCLAMATIONn The exclamation mark icon.
  586.  *      - IDI_INFORMATIONn The information mark icon.
  587.  * return The handle to the icon.
  588.  *
  589.  * note For MiniGUI-Threads, this function is defined
  590.  * as a macro, and have the same semantics as this function.
  591.  *
  592.  * sa GetSystemBitmap
  593.  */
  594. HICON GUIAPI GetSmallSystemIcon (int id);
  595. #else
  596. extern HICON LargeSystemIcon[];
  597. #define GetLargeSystemIcon(iItem)   (LargeSystemIcon[iItem])
  598. extern HICON SmallSystemIcon[];
  599. #define GetSmallSystemIcon(iItem)   (SmallSystemIcon[iItem])
  600. #endif
  601. #define STOCKBMP_BUTTON               "button"
  602. #define STOCKBMP_PUSHBUTTON           "pushbutton"
  603. #define STOCKBMP_PUSHEDBUTTON         "pushedbutton"
  604. #define STOCKBMP_DOWNARROW            "downarrow"
  605. #define STOCKBMP_UPDOWNARROW          "updownarrow"
  606. #define STOCKBMP_LEFTRIGHTARROW       "leftrightarrow"
  607. #define STOCKBMP_CHECKMARK            "checkmark"
  608. #define STOCKBMP_TRACKBAR_HBG         "trackbar_hbg"
  609. #define STOCKBMP_TRACKBAR_HSLIDER     "trackbar_hslider"
  610. #define STOCKBMP_TRACKBAR_VBG         "trackbar_vbg"
  611. #define STOCKBMP_TRACKBAR_VSLIDER     "trackbar_vslider"
  612. #define STOCKBMP_SPINBOX_HORZ         "spinbox_horz"
  613. #define STOCKBMP_SPINBOX_VERT         "spinbox_vert"
  614. #define STOCKBMP_LVFOLD               "lvfold"
  615. #define STOCKBMP_LVUNFOLD             "lvunfold"
  616. #define STOCKBMP_IMECTRLBTN           "IMEctrlbtn"
  617. #define STOCKBMP_LOGO                 "logo"
  618. /**
  619.  * fn const BITMAP* GetStockBitmap (const char* name, int ckey_x, int ckey_y)
  620.  * brief Gets a stock bitmap object.
  621.  *
  622.  * This function gets a stock bitmap object.
  623.  * It will also set the color key of the BITMAP object by using the 
  624.  * pixel of (ckey_x, ckey_y) if the pixel is valid when loading the 
  625.  * stock bitmap for the first time.
  626.  *
  627.  * param name The key name in the section of "bitmapinfo" in MiniGUI.cfg.
  628.  * param ckey_x The point of (ckey_x, ckey_y) defines the pixel in the bitmap 
  629.  *          will be used as color key. If either of ckey_x and ckey_y is less than zero,
  630.  *          there is no color key.
  631.  * param ckey_y The point of (ckey_x, ckey_y) defines the pixel in the bitmap 
  632.  *          will be used as color key. If either of ckey_x and ckey_y is less than zero,
  633.  *          there is no color key.
  634.  * return NULL on error, else the pointer to the system bitmap.
  635.  *
  636.  * sa LoadSystemBitmapEx, LoadBitmapFromFile, UnloadBitmap
  637.  */
  638. const BITMAP* GUIAPI GetStockBitmap (const char* name, int ckey_x, int ckey_y);
  639. /**
  640.  * fn BOOL GUIAPI LoadSystemBitmapEx (PBITMAP pBitmap, const char* szItemName, int ckey_x, int ckey_y)
  641.  * brief Loads a bitmap from information defined in MiniGUI.cfg.
  642.  *
  643.  * This function loads a bitmap from information defined in MiniGUI.cfg.
  644.  * It will also set the color key of the BITMAP object by using the 
  645.  * pixel of (ckey_x, ckey_y) if the pixel is valid.
  646.  *
  647.  * param pBitmap The pointer to a bitmap object.
  648.  * param szItemName The key name in the section of "bitmapinfo" in MiniGUI.cfg.
  649.  * param ckey_x The point of (ckey_x, ckey_y) defines the pixel which
  650.  *          will be used as color key in the bitmap. If either of ckey_x and ckey_y 
  651.  *          is less than zero, there is no color key.
  652.  * param ckey_y See ckey_x.
  653.  * return TRUE on success, otherwise FALSE.
  654.  *
  655.  * sa LoadSystemIcon, LoadBitmapFromFile, UnloadBitmap
  656.  */
  657. BOOL GUIAPI LoadSystemBitmapEx (PBITMAP pBitmap, const char* szItemName, int ckey_x, int ckey_y);
  658. /**
  659.  * def LoadSystemBitmap(pBitmap, szItemName)
  660.  * brief Loads a bitmap from information defined in MiniGUI.cfg.
  661.  *
  662.  * note Defined as a macro calling a LoadSystemBitmapEx without
  663.  *       definition of color key pixel.
  664.  *
  665.  * sa LoadSystemBitmapEx
  666.  */
  667. #define LoadSystemBitmap(pBitmap, szItemName) LoadSystemBitmapEx (pBitmap, szItemName, -1, -1)
  668. #define SYSICON_FOLD                "fold"
  669. #define SYSICON_UNFOLD              "unfold"
  670. #define SYSICON_FT_DIR              "dir"
  671. #define SYSICON_FT_FILE             "file"
  672. /**
  673.  * fn HICON GUIAPI LoadSystemIcon (const char* szItemName, int which)
  674.  * brief Loads an icon from information defined in MiniGUI.cfg.
  675.  *
  676.  * This function loads an icon from information defined in MiniGUI.cfg.
  677.  *
  678.  * param szItemName The key name in the section of "iconinfo" in MiniGUI.cfg.
  679.  * param which Tell the function to load which icon.
  680.  * return The handle to the loaded icon.
  681.  *
  682.  * sa LoadSystemBitmap, LoadIconFromFile, DestroyIcon
  683.  */
  684. HICON GUIAPI LoadSystemIcon (const char* szItemName, int which);
  685.     /** @} end of sys_bmps */
  686.     /**
  687.      * defgroup scrollbar_fns Scroll bar operations
  688.      * @{
  689.      */
  690. #define SB_HORZ     1
  691. #define SB_VERT     2
  692. /**
  693.  * fn BOOL GUIAPI EnableScrollBar (HWND hWnd, int iSBar, BOOL bEnable)
  694.  * brief Enables or disables one scroll bar arrows.
  695.  *
  696.  * This function enables or disables one scroll bar arrows.
  697.  *
  698.  * param hWnd The handle to the window.
  699.  * param iSBar Indicates to enable or disable which scroll bar, can be one of 
  700.  *        the following values:
  701.  *          - SB_HORZn
  702.  *            The horizontal scroll bar.
  703.  *          - SB_VERTn
  704.  *            The vertical scroll bar.
  705.  * param bEnable Indicates whether to enable or disable the scroll bar.
  706.  * return TRUE on success, FALSE on error.
  707.  *
  708.  * sa ShowScrollBar
  709.  */
  710. BOOL GUIAPI EnableScrollBar (HWND hWnd, int iSBar, BOOL bEnable);
  711. /**
  712.  * fn BOOL GUIAPI GetScrollPos (HWND hWnd, int iSBar, int* pPos)
  713.  * brief Retrieves the current position of the scroll box (thumb) in the specified scroll bar.
  714.  *
  715.  * This function retrieves the current position of the scroll box (thumb) in 
  716.  * the specified scroll bar. The current position is a relative value that depends
  717.  * on the current scrolling range.
  718.  *
  719.  * param hWnd The handle to the window.
  720.  * param iSBar Indicates to enable or disable which scroll bar, can be one of 
  721.  *        the following values:
  722.  *          - SB_HORZn
  723.  *            The horizontal scroll bar.
  724.  *          - SB_VERTn
  725.  *            The vertical scroll bar.
  726.  * param pPos The pointer to a integer which receives the position value.
  727.  * return TRUE on success, FALSE on error.
  728.  *
  729.  * sa SetScrollPos
  730.  */
  731. BOOL GUIAPI GetScrollPos (HWND hWnd, int iSBar, int* pPos);
  732. /**
  733.  * fn BOOL GUIAPI GetScrollRange (HWND hWnd, int iSBar, int* pMinPos, int* pMaxPos)
  734.  * brief Retrives the minimum and maximum position values for the specified scroll bar.
  735.  *
  736.  * This function retrives the minimum and maximum position values for 
  737.  * the specified scroll bar.
  738.  *
  739.  * param hWnd The handle to the window.
  740.  * param iSBar Indicates to enable or disable which scroll bar, can be one of 
  741.  *        the following values:
  742.  *          - SB_HORZn
  743.  *            The horizontal scroll bar.
  744.  *          - SB_VERTn
  745.  *            The vertical scroll bar.
  746.  * param pMinPos The pointer to a integer which receives the minimum position value.
  747.  * param pMaxPos The pointer to a integer which receives the maximum position value.
  748.  * return TRUE on success, FALSE on error.
  749.  *
  750.  * sa SetScrollRange
  751.  */
  752. BOOL GUIAPI GetScrollRange (HWND hWnd, int iSBar, int* pMinPos, int* pMaxPos);
  753. /**
  754.  * fn BOOL GUIAPI SetScrollPos (HWND hWnd, int iSBar, int iNewPos)
  755.  * brief Sets the position of the scroll box (thumb) in the specified scroll bar.
  756.  *
  757.  * This function sets the position of the scroll box (thumb) in the specified scroll bar,
  758.  * and if needed, redraws the scroll bar to reflect the new position of the scroll box.
  759.  *
  760.  * param hWnd The handle to the window.
  761.  * param iSBar Indicates to enable or disable which scroll bar, can be one of 
  762.  *        the following values:
  763.  *          - SB_HORZn
  764.  *            The horizontal scroll bar.
  765.  *          - SB_VERTn
  766.  *            The vertical scroll bar.
  767.  * param iNewPos The new position value.
  768.  * return TRUE on success, FALSE on error.
  769.  *
  770.  * sa GetScrollPos
  771.  */
  772. BOOL GUIAPI SetScrollPos (HWND hWnd, int iSBar, int iNewPos);
  773. /**
  774.  * fn BOOL GUIAPI SetScrollRange (HWND hWnd, int iSBar, int iMinPos, int iMaxPos)
  775.  * brief Sets the minimum and maximum position values for the specified scroll bar.
  776.  *
  777.  * This function sets the minimum and maximum position values for the specified scroll bar,
  778.  * and if needed, redraws the scroll bar to reflect the new position values of the scroll box.
  779.  *
  780.  * param hWnd The handle to the window.
  781.  * param iSBar Indicates to enable or disable which scroll bar, can be one of 
  782.  *        the following values:
  783.  *          - SB_HORZn
  784.  *            The horizontal scroll bar.
  785.  *          - SB_VERTn
  786.  *            The vertical scroll bar.
  787.  * param iMinPos The new minimum position value.
  788.  * param iMaxPos The new maximum position value.
  789.  * return TRUE on success, FALSE on error.
  790.  *
  791.  * sa GetScrollRange
  792.  */
  793. BOOL GUIAPI SetScrollRange (HWND hWnd, int iSBar, int iMinPos, int iMaxPos);
  794. /**
  795.  * fn BOOL GUIAPI ShowScrollBar (HWND hWnd, int iSBar, BOOL bShow)
  796.  * brief Shows or hides the specified scroll bar.
  797.  *
  798.  * This function shows or hides the specified scroll bar.
  799.  *
  800.  * param hWnd The handle to the window.
  801.  * param iSBar Indicates to enable or disable which scroll bar, can be one of 
  802.  *        the following values:
  803.  *          - SB_HORZn
  804.  *            The horizontal scroll bar.
  805.  *          - SB_VERTn
  806.  *            The vertical scroll bar.
  807.  * param bShow Indicates whether show or hide the scrollbar.
  808.  * return TRUE on success, FALSE on error.
  809.  *
  810.  * sa EnableScrollBar
  811.  */
  812. BOOL GUIAPI ShowScrollBar (HWND hWnd, int iSBar, BOOL bShow);
  813. #define SIF_RANGE           0x0001
  814. #define SIF_PAGE            0x0002
  815. #define SIF_POS             0x0004
  816. #define SIF_DISABLENOSCROLL 0x0008
  817. #define SIF_TRACKPOS        0x0010
  818. #define SIF_ALL             (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
  819. /**
  820.  * Scroll bar information structure.
  821.  */
  822. typedef struct _SCROLLINFO
  823. {
  824.     /** size of the structrue in bytes */
  825.     UINT    cbSize;
  826.     /**
  827.      * a flag indicates which fields contain valid values, 
  828.      * can be OR'ed value of the following values:
  829.      *      - SIF_RANGEn
  830.      *        Retrives or sets the range of the scroll bar.
  831.      *      - SIF_PAGEn
  832.      *        Retrives or sets the page size of the scroll bar.
  833.      *      - SIF_POSn
  834.      *        Retrives or sets the position of the scroll bar.
  835.      *      - SIF_DISABLENOSCROLLn
  836.      *        Hides the scroll when disabled, not implemented so far.
  837.      */
  838.     UINT    fMask;
  839.     /** the minimum position value of the scroll bar */
  840.     int     nMin;
  841.     /** the maximum position value of the scroll bar */
  842.     int     nMax;
  843.     /** the page size of the scroll bar */
  844.     UINT    nPage;
  845.     /** the position value of the scroll bar */
  846.     int     nPos;
  847. #if 0
  848.     int     nTrackPos;
  849. #endif
  850. } SCROLLINFO, *PSCROLLINFO;
  851. /**
  852.  * fn BOOL GUIAPI SetScrollInfo (HWND hWnd, int iSBar, const SCROLLINFO* lpsi, BOOL fRedraw)
  853.  * brief Sets the parameters of a scroll bar.
  854.  *
  855.  * This function sets the parameters of a scroll bar, including the minimum and maximum 
  856.  * scrolling positions, the page size, and the position of the scroll box (thumb). 
  857.  * The function also redraws the scroll bar, if requested.
  858.  *
  859.  * param hWnd The handle to the window.
  860.  * param iSBar Indicates to enable or disable which scroll bar, can be one of 
  861.  *        the following values:
  862.  *          - SB_HORZn
  863.  *            The horizontal scroll bar.
  864.  *          - SB_VERTn
  865.  *            The vertical scroll bar.
  866.  * param lpsi The pointer to the structure of scroll bar information.
  867.  * param fRedraw A boolean indicates whether to redraw the scroll bar.
  868.  * return TRUE on success, FALSE on error.
  869.  *
  870.  * sa GetScrollInfo, SCROLLINFO
  871.  */
  872. BOOL GUIAPI SetScrollInfo (HWND hWnd, int iSBar, const SCROLLINFO* lpsi, BOOL fRedraw);
  873. /**
  874.  * fn BOOL GUIAPI GetScrollInfo (HWND hWnd, int iSBar, PSCROLLINFO lpsi)
  875.  * brief Retrieves the parameters of a scroll bar.
  876.  *
  877.  * This function retrieves the parameters of a scroll bar, including the minimum 
  878.  * and maximum scrolling positions, the page size, and the position of 
  879.  * the scroll box (thumb).
  880.  *
  881.  * param hWnd The handle to the window.
  882.  * param iSBar Indicates to enable or disable which scroll bar, can be one of 
  883.  *        the following values:
  884.  *          - SB_HORZn
  885.  *            The horizontal scroll bar.
  886.  *          - SB_VERTn
  887.  *            The vertical scroll bar.
  888.  * param lpsi The pointer to a structure of SCROLLINFO which receives the parameters.
  889.  * return TRUE on success, FALSE on error.
  890.  *
  891.  * sa SetScrollInfo, SCROLLINFO
  892.  */
  893. BOOL GUIAPI GetScrollInfo (HWND hWnd, int iSBar, PSCROLLINFO lpsi);
  894.     /** @} end of scrollbar_fns */
  895.     /**
  896.      * defgroup class_fns Window class operations
  897.      * @{
  898.      */
  899. /* Class styles -- not supported so far */
  900. #define CS_VREDRAW          0x0001
  901. #define CS_HREDRAW          0x0002
  902. #define CS_KEYCVTWINDOW     0x0004
  903. #define CS_DBLCLKS          0x0008
  904. #define CS_OWNDC            0x0020
  905. #define CS_CLASSDC          0x0040
  906. #define CS_PARENTDC         0x0080
  907. #define CS_NOKEYCVT         0x0100
  908. #define CS_NOCLOSE          0x0200
  909. #define CS_SAVEBITS         0x0800
  910. #define CS_BYTEALIGNCLIENT  0x1000
  911. #define CS_BYTEALIGNWINDOW  0x2000
  912. #define CS_GLOBALCLASS      0x4000
  913. #define CS_IME              0x8000
  914. #define COP_STYLE           0x0001
  915. #define COP_HCURSOR         0x0002
  916. #define COP_BKCOLOR         0x0004
  917. #define COP_WINPROC         0x0008
  918. #define COP_ADDDATA         0x0010
  919. /**
  920.  * Structure defines a window class
  921.  */
  922. typedef struct _WNDCLASS
  923. {
  924.     /** the class name */
  925.     char*   spClassName;
  926.     /** internal field, operation type */
  927.     DWORD   opMask;
  928.     /** window style for all instances of this window class */
  929.     DWORD   dwStyle;
  930.     /** extended window style for all instances of this window class */
  931.     DWORD   dwExStyle;
  932.     /** cursor handle to all instances of this window class */
  933.     HCURSOR hCursor;
  934.     /** background color pixel value of all instances of this window class */
  935.     int     iBkColor;
  936.     /** window callback procedure of all instances of this window class */
  937.     int     (*WinProc) (HWND, int, WPARAM, LPARAM);
  938.     /** the private additional data associated with this window class */
  939.     DWORD dwAddData;
  940. } WNDCLASS;
  941. typedef WNDCLASS* PWNDCLASS;
  942. #define MAINWINCLASSNAME    ("MAINWINDOW")
  943. /**
  944.  * fn BOOL GUIAPI RegisterWindowClass (PWNDCLASS pWndClass)
  945.  * brief Registers a window class. 
  946.  *
  947.  * This function registers a window class. 
  948.  * Later on, you can create a window of a registered class.
  949.  *
  950.  * param pWndClass The pointer to a WNDCLASS structure which specifies 
  951.  *        the information of the window class.
  952.  * return TRUE on success, FALSE on error.
  953.  * 
  954.  * sa UnregisterWindowClass, WNDCLASS
  955.  *
  956.  * Example:
  957.  *
  958.  * include registerwindowclass.c
  959.  */
  960. BOOL GUIAPI RegisterWindowClass (PWNDCLASS pWndClass);
  961. /**
  962.  * fn BOOL GUIAPI UnregisterWindowClass (const char* szClassName)
  963.  * brief Undoes the effect of a RegisterWindowClass.
  964.  *
  965.  * This function unregisters a registered window class specified by a szClassName.
  966.  * 
  967.  * param szClassName The name of the class to be unregistered.
  968.  * return TRUE on success, FALSE on error.
  969.  *
  970.  * sa RegisterWindowClass
  971.  */
  972. BOOL GUIAPI UnregisterWindowClass (const char* szClassName);
  973. /**
  974.  * fn const char* GUIAPI GetClassName (HWND hWnd)
  975.  * brief Retrieves the name of the class to which the specified window belongs.
  976.  *
  977.  * This function retrieves the name of the class to which 
  978.  * the specified window a hWnd belongs.
  979.  *
  980.  * param hWnd The handle to the window.
  981.  * return The pointer to a const class name string, NULL on error.
  982.  *
  983.  * sa RegisterWindowClass
  984.  */
  985. const char* GUIAPI GetClassName (HWND hWnd);
  986. /**
  987.  * fn BOOL GUIAPI GetWindowClassInfo (PWNDCLASS pWndClass)
  988.  * brief Retrieves the information of the specified window class.
  989.  *
  990.  * This function retrives the information of a window class.
  991.  * The window class to be retrived is specified by a pWndClass->spClassName.
  992.  *
  993.  * param pWndClass The pointer to a WNDCLASS structure, which specifies the 
  994.  *        window class to be retrived via a spClassName field, and
  995.  *        returns the information through other fields.
  996.  * return TRUE on success, FALSE on error.
  997.  *
  998.  * sa SetWindowClassInfo
  999.  */
  1000. BOOL GUIAPI GetWindowClassInfo (PWNDCLASS pWndClass);
  1001. /**
  1002.  * fn BOOL GUIAPI SetWindowClassInfo (const WNDCLASS* pWndClass)
  1003.  * brief Sets the information of the specified window class.
  1004.  *
  1005.  * This function sets the information of a window class.
  1006.  * The window class to be operated is specified by a pWndClass->spClassName.
  1007.  *
  1008.  * param pWndClass The pointer to a WNDCLASS structure, which specifies
  1009.  *        the new information of the window class.
  1010.  * return TRUE on success, FALSE on error.
  1011.  *
  1012.  * sa GetWindowClassInfo
  1013.  */
  1014. BOOL GUIAPI SetWindowClassInfo (const WNDCLASS* pWndClass);
  1015.     /** @} end of class_fns */
  1016.     /**
  1017.      * defgroup control_fns Control creating/destroying
  1018.      * @{
  1019.      */
  1020. /**
  1021.  * fn HWND GUIAPI CreateWindowEx (const char* spClassName, const char* spCaption, DWORD dwStyle, DWORD dwExStyle, int id, int x, int y, int w, int h, HWND hParentWnd, DWORD dwAddData)
  1022.  * brief Creates a child window with extended style.
  1023.  *
  1024.  * This function creates a child window (also known as "control") with extended style.
  1025.  * It specifies the window class, window title, window style, window extended style, 
  1026.  * and the initial position and size of the window. The function also specifies 
  1027.  * the window's parent or owner.
  1028.  *
  1029.  * param spClassName The class name of the control.
  1030.  * param spCaption The caption of the control.
  1031.  * param dwStyle The control style.
  1032.  * param dwExStyle The extended control style.
  1033.  * param id The identifier of the control.
  1034.  * param x x,y: The initial position of the control in the parent window.
  1035.  * param y x,y: The initial position of the control in the parent window.
  1036.  * param w The initial width of the control.
  1037.  * param h The initial height of the control.
  1038.  * param hParentWnd The handle to the parent window.
  1039.  * param dwAddData The first private additional data of the control.
  1040.  *        Note that some control classes use this value to initialize some properties of 
  1041.  *        the new control instance. For these control classes, you should pass a 
  1042.  *        valid value to it.
  1043.  * return The handle to the new control, HWND_INVALID on error.
  1044.  *
  1045.  * sa CreateMainWindow, CTRLDATA
  1046.  *
  1047.  * Example:
  1048.  *
  1049.  * include createwindow.c
  1050.  */
  1051. HWND GUIAPI CreateWindowEx (const char* spClassName, const char* spCaption,
  1052.                   DWORD dwStyle, DWORD dwExStyle, int id, 
  1053.                   int x, int y, int w, int h, HWND hParentWnd, DWORD dwAddData);
  1054. /**
  1055.  * fn BOOL GUIAPI DestroyWindow (HWND hWnd)
  1056.  * brief Destroys a specified control.
  1057.  *
  1058.  * This function destroys the specified control a hWnd, which is created
  1059.  * by a CreateWindowEx.
  1060.  *
  1061.  * param hWnd The handle to the control.
  1062.  * return TRUE on success, FALSE on error.
  1063.  *
  1064.  * sa CreateWindowEx
  1065.  */
  1066. BOOL GUIAPI DestroyWindow (HWND hWnd);
  1067. /**
  1068.  * var typedef void (* NOTIFPROC)(HWND hwnd, int id, int nc, DWORD add_data)
  1069.  * brief Type of the notification callback procedure.
  1070.  *
  1071.  * This is the function type of Notification Callback Procedure.
  1072.  * If you set the Notification Callback Procedure for a control,
  1073.  * when a notification occurred the control will call this callback
  1074.  * procedure.
  1075.  *
  1076.  * sa SetNotificationCallback
  1077.  */
  1078. typedef void (* NOTIFPROC) (HWND hwnd, int id, int nc, DWORD add_data);
  1079. /**
  1080.  * fn NOTIFPROC GUIAPI SetNotificationCallback (HWND hwnd, NOTIFPROC notif_proc)
  1081.  * brief Sets a new notification callback procedure for a control.
  1082.  *
  1083.  * This function sets the new notification callback procedure (a notif_proc) 
  1084.  * for the control of a hwnd.
  1085.  *
  1086.  * By default, the notification from a control will be sent to its parent
  1087.  * window within a MSG_COMMAND messsage.
  1088.  *
  1089.  * Since version 1.2.6, MiniGUI defines the Notification Callback Procedure 
  1090.  * for control. You can specify a callback function for a control by calling
  1091.  * a SetNotificationCallback to receive and handle the notification from 
  1092.  * the control.
  1093.  *
  1094.  * If you did not set the notification callback function for a control,
  1095.  * the notification will be sent to its parent as same as the earlier 
  1096.  * version of MiniGUI.
  1097.  *
  1098.  * param hwnd The handle to the control.
  1099.  * param notif_proc The new notification callback procedure, can be NULL.
  1100.  * return The old notification callback procedure.
  1101.  *
  1102.  * sa NOTIFPROC, GetNotificationCallback
  1103.  */
  1104. NOTIFPROC GUIAPI SetNotificationCallback (HWND hwnd, NOTIFPROC notif_proc);
  1105. /**
  1106.  * fn NOTIFPROC GUIAPI GetNotificationCallback (HWND hwnd)
  1107.  * brief Gets the notification callback procedure of a control.
  1108.  *
  1109.  * This function gets the new notification callback procedure of 
  1110.  * the control of a hwnd.
  1111.  *
  1112.  * param hwnd The handle to the control.
  1113.  * return The notification callback procedure.
  1114.  *
  1115.  * sa NOTIFPROC, SetNotificationCallback
  1116.  */
  1117. NOTIFPROC GUIAPI GetNotificationCallback (HWND hwnd);
  1118. /**
  1119.  * def CreateWindow(class_name, caption, style, id, x, y, w, h, parent, add_data)
  1120.  * brief A simplified version of a CreateWindowEx.
  1121.  *
  1122.  * sa CreateWindowEx
  1123.  */
  1124. #define CreateWindow(class_name, caption, style, id, x, y, w, h, parent, add_data) 
  1125.         CreateWindowEx(class_name, caption, style, 0, id, x, y, w, h, parent, add_data)
  1126.     /** @} end of control_fns */
  1127. /******************************** Timer Support ******************************/
  1128.     /**
  1129.      * defgroup timer_fns Timer operations
  1130.      * @{
  1131.      */
  1132. /**
  1133.  * fn BOOL GUIAPI SetTimer (HWND hWnd, int id, unsigned int speed)
  1134.  * brief Creates a timer with the specified timeout value.
  1135.  *
  1136.  * This function creates a timer with the specified timeout value a speed.
  1137.  * By default, the timeout value is in unit of 10 ms.
  1138.  * When the timer expires, an MSG_TIMER message will be send to the window a hWnd.
  1139.  *
  1140.  * param hWnd The window receives the MSG_TIMER message.
  1141.  * param id The identifier of the timer, will be passed to the window
  1142.  *        with MSG_TIMER message as the first parameter of the message.
  1143.  * param speed The timeout value of the timer. By default, the timeout value is in unit of 10 ms.
  1144.  * return TRUE on success, FALSE on error.
  1145.  * 
  1146.  * note The argument a speed may represent the frequency of the timer, 
  1147.  *       or represent the timeout value of the timer. This is depend on 
  1148.  *       the runtime library of MiniGUI. If a _TIMER_UNIT_10MS is defined, 
  1149.  *       a speed represents the timeout value of the timer, in the unit of 10ms, 
  1150.  *       else is the frequency. If a speed represents the frequency of the timer, 
  1151.  *       when it is equal to 10, the timer will expire after every second.
  1152.  *
  1153.  * sa KillTimer, MSG_TIMER
  1154.  *
  1155.  * Example:
  1156.  *
  1157.  * include settimer.c
  1158.  */
  1159. BOOL GUIAPI SetTimer (HWND hWnd, int id, unsigned int speed);
  1160. /**
  1161.  * fn BOOL GUIAPI KillTimer (HWND hWnd, int id)
  1162.  * brief Destroys a timer.
  1163.  *
  1164.  * This function destroys the specified timer a id.
  1165.  *
  1166.  * param hWnd The window owns the timer.
  1167.  * param id The identifier of the timer.
  1168.  * return TRUE on success, FALSE on error.
  1169.  *
  1170.  * sa SetTimer
  1171.  */
  1172. BOOL GUIAPI KillTimer (HWND hWnd, int id);
  1173. /**
  1174.  * fn BOOL GUIAPI ResetTimer (HWND hWnd, int id, unsigned int speed)
  1175.  * brief Adjusts a timer with a different timeout value.
  1176.  *
  1177.  * This function resets a timer with the specified timeout a speed value.
  1178.  *
  1179.  * param hWnd The window owns the timer.
  1180.  * param id The identifier of the timer.
  1181.  * param speed The new timeout value.
  1182.  * return TRUE on success, FALSE on error.
  1183.  *
  1184.  * sa SetTimer
  1185.  */
  1186. BOOL GUIAPI ResetTimer (HWND hWnd, int id, unsigned int speed);
  1187. /**
  1188.  * fn unsigned int GUIAPI GetTickCount (void)
  1189.  * brief Retrieves the tick counts that have elapsed since MiniGUI was started.
  1190.  *
  1191.  * This function retrieves the tick counts that 
  1192.  * have elapsed since MiniGUI was started. It is limited to the 
  1193.  * resolution of the system timer, i.e. for a general Linux box, 
  1194.  * the returned tick count value is in unit of 10ms.
  1195.  *
  1196.  * return The tick counts value that have elapsed since MiniGUI was started.
  1197.  */
  1198. unsigned int GUIAPI GetTickCount (void);
  1199.     /** @} end of timer_fns */
  1200.     /**
  1201.      * defgroup ime_fns IME Window functions
  1202.      * @{
  1203.      */
  1204. #ifdef _IME_GB2312
  1205. /**
  1206.  * fn int GBIMEWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
  1207.  * brief The window callback procedure of the builit-in GB2312 Input Method window.
  1208.  *
  1209.  * This function is the window callback procedure of the built-in GB2312 (a charset
  1210.  * for simplified Chinese) Input Method window.
  1211.  *
  1212.  * note This function defined for _IME_GB2312. You can disable GB2312 IME support
  1213.  * by using
  1214.  * code
  1215.  * ./configure --disable-imegb2312
  1216.  * endcode
  1217.  *
  1218.  * sa GBIMEWindowEx
  1219.  */
  1220. int GBIMEWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam);
  1221. #ifdef _LITE_VERSION
  1222. /**
  1223.  * fn HWND GBIMEWindowEx (HWND hosting, int lx, int ty, int rx, int by, BOOL two_lines)
  1224.  * brief Creates a GB2312 input method window.
  1225.  *
  1226.  * This function creates a GB2312 (a charset for simplified Chinese) input method window.
  1227.  * Before calling this window, you must create a main window which acts as the hosting
  1228.  * main window of the IME window.
  1229.  *
  1230.  * param hosting The hosting window of the IME window. Do not set it to be HWND_DESKTOP.
  1231.  * param lx lx,ty,rx,by: The position and size of the IME window.
  1232.  * param ty lx,ty,rx,by: The position and size of the IME window.
  1233.  * param rx lx,ty,rx,by: The position and size of the IME window.
  1234.  * param by lx,ty,rx,by: The position and size of the IME window.
  1235.  * param two_lines Indicates whether the IME window contains two lines.
  1236.  * return The handle to the IME window.
  1237.  *
  1238.  * note This function only define for MiniGUI-Lite. 
  1239.  *
  1240.  * sa GBIMEWindow
  1241.  */
  1242. HWND GBIMEWindowEx (HWND hosting, int lx, int ty, int rx, int by, BOOL two_lines);
  1243. /**
  1244.  * def GBIMEWindow (hosting)
  1245.  * brief The simplified version of a GBIMEWindowEx.
  1246.  *
  1247.  * param hosting The hosting window of the IME window. Do not set it to be HWND_DESKTOP.
  1248.  * return The handle to the IME window.
  1249.  *
  1250.  * note For MiniGUI-Threads, a GBIMEWindow defined as a function:
  1251.  *
  1252.  * code 
  1253.  *      HWND GBIMEWindow (HWND hosting);
  1254.  * endcode
  1255.  *
  1256.  * Calling this function will create a thread and start the GB2312 IME window in this thread.
  1257.  *
  1258.  * sa GBIMEWindowEx
  1259.  */
  1260. #define GBIMEWindow(hosting) GBIMEWindowEx(hosting, 0, 0, 0, 0, TRUE)
  1261. #else
  1262. HWND GBIMEWindow (HWND hosting);
  1263. #endif
  1264. #endif
  1265. /**
  1266.  * fn int GUIAPI RegisterIMEWindow (HWND hWnd)
  1267.  * brief Registers an IME window.
  1268.  *
  1269.  * This function registers the specified window a hWnd as the IME window of the MiniGUI.
  1270.  * After that, the keyboard input will be sent to IME window first. Note that only one 
  1271.  * IME window can be registered.
  1272.  *
  1273.  * param hWnd The handle to your IME window.
  1274.  * return ERR_OK on success, otherwise less than zero.
  1275.  *
  1276.  * retval ERR_OK Success.
  1277.  * retval ERR_IME_TOOMUCHIMEWND Already have an IME window registered.
  1278.  * retval ERR_INV_HWND Invalid main window handle.
  1279.  *
  1280.  * sa UnregisterIMEWindow
  1281.  */
  1282. int GUIAPI RegisterIMEWindow (HWND hWnd);
  1283. /**
  1284.  * fn int GUIAPI UnregisterIMEWindow (HWND hWnd)
  1285.  * brief Unregisters an IME window.
  1286.  *
  1287.  * This function undoes the effect of a RegisterIMEWindow.
  1288.  *
  1289.  * param hWnd The handle to the current IME window.
  1290.  * return ERR_OK on success, otherwise less than zero.
  1291.  *
  1292.  * retval ERR_OK Success.
  1293.  * retval ERR_IME_NOSUCHIMEWND The window is not the current IME window.
  1294.  *
  1295.  * sa RegisterIMEWindow
  1296.  */
  1297. int GUIAPI UnregisterIMEWindow (HWND hWnd);
  1298. /**
  1299.  * fn int GUIAPI GetIMEStatus (int StatusCode)
  1300.  * brief Retrives status of the current IME window.
  1301.  *
  1302.  * This function retrives status of the current IME window.
  1303.  *
  1304.  * param StatusCode The item to be retrived, can be one of the following values:
  1305.  *      - IS_ENABLEn
  1306.  *        Is the IME window enabled?
  1307.  *      - IS_FULLCHARn
  1308.  *        Whether translate half character to full character?
  1309.  *      - IS_FULLPUNCn
  1310.  *        Whether tranlsate half punctuate mark to full mark?
  1311.  *      - IS_METHODn
  1312.  *        Which input method?
  1313.  * return The status of the item specified by a StatusCode, 
  1314.  *        ERR_IME_NOIMEWND if error occurred.
  1315.  *
  1316.  * sa SetIMEStatus
  1317.  */
  1318. int GUIAPI GetIMEStatus (int StatusCode);
  1319. /**
  1320.  * fn int GUIAPI SetIMEStatus (int StatusCode, int Value)
  1321.  * brief Sets the status of the current IME window.
  1322.  *
  1323.  * This function sets the status of the current IME window.
  1324.  *
  1325.  * param StatusCode The item to be set, can be one of the following values:
  1326.  *      - IS_ENABLEn
  1327.  *        Enabled or disable IME window.
  1328.  *      - IS_FULLCHARn
  1329.  *        Whether translate half character to full character?
  1330.  *      - IS_FULLPUNCn
  1331.  *        Whether tranlsate half punctuate mark to full mark?
  1332.  *      - IS_METHODn
  1333.  *        Which input method?
  1334.  * param Value The status value of the item.
  1335.  * return ERR_OK on success, otherwise less than zero.
  1336.  *
  1337.  * retval ERR_OK Success.
  1338.  * retval ERR_IME_NOIMEWND There is no any IME window registered.
  1339.  *
  1340.  * sa GetIMEStatus
  1341.  */
  1342. int GUIAPI SetIMEStatus (int StatusCode, int Value);
  1343.     /** @} end of ime_fns */
  1344.     /**
  1345.      * defgroup accel_fns Accelerator operations
  1346.      * @{
  1347.      */
  1348. /**
  1349.  * fn HACCEL GUIAPI CopyAcceleratorTable (HACCEL hacc)
  1350.  * brief Copies the specified accelerator table.
  1351.  *
  1352.  * This function copies the specified accelerator table. 
  1353.  * The function is used to obtain the accelerator table data that 
  1354.  * corresponds to an accelerator table handle.
  1355.  *
  1356.  * param hacc The handle to the accelerator table.
  1357.  * return The handle to the copied new accelerator table.
  1358.  */
  1359. HACCEL GUIAPI CopyAcceleratorTable (HACCEL hacc);
  1360. /**
  1361.  * fn int GUIAPI DeleteAccelerators (HACCEL hacc, int key, DWORD keymask)
  1362.  * brief Deletes an accelerator from the accelerator table.
  1363.  *
  1364.  * This function deletes an accelerator from the accelerator table.
  1365.  *
  1366.  * param hacc The handle to the accelerator table.
  1367.  * param key The key value of the accelerator.
  1368.  * param keymask The shift key state.
  1369.  * return The function returns 0 for success, non-zero for failure.
  1370.  *
  1371.  * sa AddAccelerators, DestroyAcceleratorTable
  1372.  */
  1373. int GUIAPI DeleteAccelerators (HACCEL hacc, int key, DWORD keymask);
  1374. #define ACCEL_SHIFT     KS_SHIFT
  1375. #define ACCEL_ALT       KS_ALT
  1376. #define ACCEL_CTRL      KS_CTRL
  1377. /**
  1378.  * fn int GUIAPI AddAccelerators (HACCEL hacc, int key, DWORD keymask, WPARAM wParam, LPARAM lParam)
  1379.  * brief Adds an accelerator to the accelerator table.
  1380.  *
  1381.  * This function adds an accelerator to the accelerator table. 
  1382.  * It's called after you call a CreateAcceleratorTable function.
  1383.  *
  1384.  * param hacc The handle to the accelerator table.
  1385.  * param key The key value of the accelerator. Note that you can define the key value by
  1386.  *      either scancode or ASCII code. If you define the key with scancode, 
  1387.  *      the key value should be equal to (scancode + 256).
  1388.  * param keymask The shift key state, can be OR'ed value of the following values:
  1389.  *      - ACCEL_SHIFTn
  1390.  *        Shift key should be pressed.
  1391.  *      - ACCEL_ALTn
  1392.  *        Alt key should be pressed.
  1393.  *      - ACCEL_CTRLn
  1394.  *        Ctrl key should be pressed.
  1395.  * param wParam The first parameter of the MSG_COMMAND when receiving such a accelerator key.
  1396.  * param lParam The second parameter of the MSG_COMMAND when receiving such a accelerator key.
  1397.  * return The function returns 0 for success, non-zero for failure.
  1398.  *
  1399.  * sa CreateAcceleratorTable, DeleteAccelerators
  1400.  */
  1401. int GUIAPI AddAccelerators (HACCEL hacc, 
  1402.                 int key, DWORD keymask, WPARAM wParam, LPARAM lParam);
  1403. /**
  1404.  * fn int GUIAPI DestroyAcceleratorTable (HACCEL hacc)
  1405.  * brief Destroies an accelerator table.
  1406.  *
  1407.  * This function destroys the specified accelerator table a hacc. 
  1408.  * Before closing a window, you must call this function to destroy 
  1409.  * each accelerator table that is created by using a CreateAcceleratorTable 
  1410.  * function.
  1411.  *
  1412.  * param hacc The handle to the accelerator table.
  1413.  * return The function returns 0 for success, non-zero for failure.
  1414.  *
  1415.  * sa CreateAcceleratorTable
  1416.  */
  1417. int GUIAPI DestroyAcceleratorTable (HACCEL hacc);
  1418. /**
  1419.  * fn HACCEL GUIAPI CreateAcceleratorTable (HWND hWnd)
  1420.  * brief Creates an empty accelerator table.
  1421.  *
  1422.  * This function creates an empty accelerator table.
  1423.  *
  1424.  * param hWnd The handle to the main window.
  1425.  * return The handle to the new accelerator table, zero when error.
  1426.  *
  1427.  * sa AddAccelerators, DestroyAcceleratorTable
  1428.  */
  1429. HACCEL GUIAPI CreateAcceleratorTable (HWND hWnd);
  1430. /**
  1431.  * fn HACCEL GUIAPI LoadAccelerators (const char* filename, int id)
  1432.  * brief Loads an accelerator table from an external file.
  1433.  *
  1434.  * This function loads an accelerator table from an external file.
  1435.  *
  1436.  * param filename The path name of the file.
  1437.  * param id The identifier of the accelerator table.
  1438.  * return The handle to the accelerator table, zero when error.
  1439.  *
  1440.  * note The function is not implemented so far.
  1441.  */
  1442. HACCEL GUIAPI LoadAccelerators (const char* filename, int id);
  1443. /**
  1444.  * fn int GUIAPI TranslateAccelerator (HWND hWnd, HACCEL hAccel, PMSG pMsg)
  1445.  * brief Translates an accelerator key message to MSG_COMMAND messge 
  1446.  * and sends it to the window procedure.
  1447.  *
  1448.  * param hWnd The handle to the window.
  1449.  * param hAccel The handle to the accelerator table.
  1450.  * param pMsg The pointer to the MSG structure to be translated.
  1451.  * return The function returns 0 for success, non-zero for failure.
  1452.  *
  1453.  * sa TranslateMessage
  1454.  */
  1455. int GUIAPI TranslateAccelerator (HWND hWnd, HACCEL hAccel, PMSG pMsg);
  1456.     /** @} end of accel_fns */
  1457.     /**
  1458.      * defgroup caret_fns Caret operations
  1459.      * @{
  1460.      */
  1461. /**
  1462.  * fn BOOL GUIAPI CreateCaret (HWND hWnd, PBITMAP pBitmap, int nWidth, int nHeight)
  1463.  * brief Creates a new shape for the system caret and assigns ownership of the caret to 
  1464.  * the specified window. 
  1465.  *
  1466.  * This function creates a new shape for the system caret and assigns ownership of 
  1467.  * the caret to the specified window a hWnd. The caret shape can be a line, 
  1468.  * a block, or a bitmap.
  1469.  *
  1470.  * param hWnd The owner of the caret.
  1471.  * param pBitmap The bitmap shape of the caret.
  1472.  * param nWidth The width of the caret.
  1473.  * param nHeight The height of the caret.
  1474.  * return TRUE on success, otherwise FALSE.
  1475.  *
  1476.  * sa ActiveCaret, ChangeCaretSize
  1477.  */
  1478. BOOL GUIAPI CreateCaret (HWND hWnd, PBITMAP pBitmap, int nWidth, int nHeight);
  1479. /**
  1480.  * fn BOOL GUIAPI ChangeCaretSize (HWND hWnd, int newWidth, int newHeight)
  1481.  * brief Changes the size of the caret.
  1482.  *
  1483.  * This function change the size of the caret owned by the specified window
  1484.  * a hWnd. Note that the new size of the caret should be smaller than
  1485.  * the original size which is specified when you call a CreateCaret.
  1486.  *
  1487.  * param hWnd The owner of the caret.
  1488.  * param newWidth The new width of the caret.
  1489.  * param newHeight The new height of the caret.
  1490.  * return TRUE on success, otherwise FALSE.
  1491.  *
  1492.  * sa CreateCaret
  1493.  */
  1494. BOOL GUIAPI ChangeCaretSize (HWND hWnd, int newWidth, int newHeight);
  1495. /**
  1496.  * fn BOOL GUIAPI ActiveCaret (HWND hWnd)
  1497.  * brief Activates the caret owned by specified window.
  1498.  *
  1499.  * This function activates the caret owned by specified window a hWnd.
  1500.  * After activating the caret, the caret will begin flashing automatically.
  1501.  *
  1502.  * param hWnd The owner of the caret.
  1503.  * return TRUE on success, otherwise FALSE.
  1504.  *
  1505.  * sa HideCaret, ShowCaret
  1506.  */
  1507. BOOL GUIAPI ActiveCaret (HWND hWnd);
  1508. /**
  1509.  * fn UINT GUIAPI GetCaretBlinkTime (HWND hWnd)
  1510.  * brief Returns the elapsed time, in milliseconds, required to invert the caret's pixels.
  1511.  *
  1512.  * This function returns the elapsed time, in milliseconds, required to 
  1513.  * invert the caret's pixels. The default blink time of a caret is 500 milliseconds.
  1514.  *
  1515.  * param hWnd The owner of the caret.
  1516.  * return The elapsed time in milliseconds. Returns zero on error.
  1517.  *
  1518.  * sa SetCaretBlinkTime
  1519.  */
  1520. UINT GUIAPI GetCaretBlinkTime (HWND hWnd);
  1521. /**
  1522.  * fn BOOL GUIAPI SetCaretBlinkTime (HWND hWnd, UINT uTime)
  1523.  * brief Sets the caret blink time to the specified number of milliseconds.
  1524.  *
  1525.  * This function sets the caret blink time to the specified number of milliseconds.
  1526.  * The blink time is the elapsed time, in milliseconds, required to 
  1527.  * invert the caret's pixels. The default blink time of a caret is 500 milliseconds.
  1528.  *
  1529.  * param hWnd The owner of the caret.
  1530.  * param uTime New blink time in milliseconds.
  1531.  * return TRUE on success, otherwise FALSE.
  1532.  *
  1533.  * sa GetCaretBlinkTime
  1534.  */
  1535. BOOL GUIAPI SetCaretBlinkTime (HWND hWnd, UINT uTime);
  1536. /**
  1537.  * fn BOOL GUIAPI DestroyCaret (HWND hWnd)
  1538.  * brief Destroys a caret.
  1539.  *
  1540.  * This function destroys the caret's current shape, 
  1541.  * frees the caret from the window, and removes the caret from the screen.
  1542.  *
  1543.  * param hWnd The owner of the caret.
  1544.  * return TRUE on success, otherwise FALSE.
  1545.  *
  1546.  * sa CreateCaret
  1547.  */
  1548. BOOL GUIAPI DestroyCaret (HWND hWnd);
  1549. /**
  1550.  * fn BOOL GUIAPI HideCaret (HWND hWnd)
  1551.  * brief Hides a caret.
  1552.  *
  1553.  * This function removes the caret from the screen. 
  1554.  * Hiding a caret does not destroy its current shape or invalidate the insertion point.
  1555.  *
  1556.  * param hWnd The owner of the caret.
  1557.  * return TRUE on success, otherwise FALSE.
  1558.  *
  1559.  * sa ShowCaret
  1560.  */
  1561. BOOL GUIAPI HideCaret (HWND hWnd);
  1562. /**
  1563.  * fn BOOL GUIAPI ShowCaret (HWND hWnd)
  1564.  * brief Shows a caret.
  1565.  *
  1566.  * This function makes the caret visible on the screen 
  1567.  * at the caret's current position. When the caret becomes visible, 
  1568.  * it begins flashing automatically.
  1569.  *
  1570.  * param hWnd The owner of the caret.
  1571.  * return TRUE on success, otherwise FALSE.
  1572.  *
  1573.  * sa HideCaret
  1574.  */
  1575. BOOL GUIAPI ShowCaret (HWND hWnd);
  1576. /**
  1577.  * fn BOOL GUIAPI SetCaretPos (HWND hWnd, int x, int y)
  1578.  * brief Moves the caret to a new position.
  1579.  *
  1580.  * This function moves the caret to the specified coordinates a (x,y).
  1581.  *
  1582.  * param hWnd The owner of the caret.
  1583.  * param x x,y: The position of the caret in client coordiantes.
  1584.  * param y x,y: The position of the caret in client coordiantes.
  1585.  * return TRUE on success, otherwise FALSE.
  1586.  *
  1587.  * sa GetCaretPos
  1588.  */
  1589. BOOL GUIAPI SetCaretPos (HWND hWnd, int x, int y);
  1590. /**
  1591.  * fn BOOL GUIAPI GetCaretPos (HWND hWnd, PPOINT pPt)
  1592.  * brief Gets the caret position.
  1593.  *
  1594.  * This function copies the caret's position, in client coordinates, 
  1595.  * to the specified POINT structure a pPt.
  1596.  *
  1597.  * param hWnd The owner of the caret.
  1598.  * param pPt The pointer to the buffer saves the caret's position.
  1599.  * return TRUE on success, otherwise FALSE.
  1600.  *
  1601.  * sa SetCaretPos
  1602.  */
  1603. BOOL GUIAPI GetCaretPos (HWND hWnd, PPOINT pPt);
  1604.     /** @} end of caret_fns */
  1605.     /**
  1606.      * defgroup menu_fns Menu operations
  1607.      * @{
  1608.      */
  1609. /* Menu flags */
  1610. #define MF_INSERT           0x00000000L
  1611. #define MF_CHANGE           0x00000080L
  1612. #define MF_APPEND           0x00000100L
  1613. #define MF_DELETE           0x00000200L
  1614. #define MF_REMOVE           0x00001000L
  1615. #define MF_BYCOMMAND        0x00000000L
  1616. #define MF_BYPOSITION       0x00000400L
  1617. #define MF_SEPARATOR        0x00000800L
  1618. #define MF_ENABLED          0x00000000L
  1619. #define MF_GRAYED           0x00000001L
  1620. #define MF_DISABLED         0x00000002L
  1621. #define MF_UNCHECKED        0x00000000L
  1622. #define MF_CHECKED          0x00000008L
  1623. #define MF_USECHECKBITMAPS  0x00000200L
  1624. #define MF_STRING           0x00000000L
  1625. #define MF_BITMAP           0x00000004L
  1626. #define MF_OWNERDRAW        0x00000100L
  1627. #define MF_POPUP            0x00000010L
  1628. #define MF_MENUBARBREAK     0x00000020L
  1629. #define MF_MENUBREAK        0x00000040L
  1630. #define MF_UNHILITE         0x00000000L
  1631. #define MF_HILITE           0x00000080L
  1632. #define MF_DEFAULT          0x00001000L
  1633. #define MF_SYSMENU          0x00002000L
  1634. #define MF_HELP             0x00004000L
  1635. #define MF_RIGHTJUSTIFY     0x00004000L
  1636. #define MF_MOUSESELECT      0x00008000L
  1637. #define MF_END              0x00000080L
  1638. #define MFT_STRING          MF_STRING
  1639. #define MFT_BITMAP          MF_BITMAP
  1640. #define MFT_BMPSTRING       0x00010000L
  1641. #define MFT_MENUBARBREAK    MF_MENUBARBREAK
  1642. #define MFT_MENUBREAK       MF_MENUBREAK
  1643. #define MFT_OWNERDRAW       MF_OWNERDRAW
  1644. #define MFT_RADIOCHECK      0x00000200L
  1645. #define MFT_SEPARATOR       MF_SEPARATOR
  1646. #define MFT_RIGHTORDER      0x00002000L
  1647. #define MFT_RIGHTJUSTIFY    MF_RIGHTJUSTIFY
  1648. #define MFS_GRAYED          0x00000003L
  1649. #define MFS_DISABLED        MFS_GRAYED
  1650. #define MFS_CHECKED         MF_CHECKED
  1651. #define MFS_HILITE          MF_HILITE
  1652. #define MFS_ENABLED         MF_ENABLED
  1653. #define MFS_UNCHECKED       MF_UNCHECKED
  1654. #define MFS_UNHILITE        MF_UNHILITE
  1655. #define MFS_DEFAULT         MF_DEFAULT
  1656. /* System Menu Command Values */
  1657.   #define SC_SIZE         0xF000
  1658.   #define SC_MOVE         0xF010
  1659.   #define SC_MINIMIZE     0xF020
  1660.   #define SC_MAXIMIZE     0xF030
  1661.   #define SC_NEXTWINDOW   0xF040
  1662.   #define SC_PREVWINDOW   0xF050
  1663.   #define SC_CLOSE        0xF060
  1664.   #define SC_VSCROLL      0xF070
  1665.   #define SC_HSCROLL      0xF080
  1666.   #define SC_MOUSEMENU    0xF090
  1667.   #define SC_KEYMENU      0xF100
  1668.   #define SC_ARRANGE      0xF110
  1669.   #define SC_RESTORE      0xF120
  1670.   #define SC_TASKLIST     0xF130
  1671.   #define SC_SCREENSAVE   0xF140
  1672.   #define SC_HOTKEY       0xF150
  1673.   #define SC_DEFAULT      0xF160
  1674.   #define SC_MONITORPOWER 0xF170
  1675.   #define SC_CONTEXTHELP  0xF180
  1676.   #define SC_SEPARATOR    0xF00F
  1677. /* MENUITEMINFO flags */
  1678.   #define MIIM_STATE       0x00000001
  1679.   #define MIIM_ID          0x00000002
  1680.   #define MIIM_SUBMENU     0x00000004
  1681.   #define MIIM_CHECKMARKS  0x00000008
  1682.   #define MIIM_TYPE        0x00000010
  1683.   #define MIIM_DATA        0x00000020
  1684.   #define MIIM_STRING      0x00000040
  1685.   #define MIIM_BITMAP      0x00000080
  1686.   #define MIIM_FTYPE       0x00000100
  1687. /* Flags for TrackPopupMenu */
  1688.   #define TPM_LEFTBUTTON  0x0000L
  1689.   #define TPM_RIGHTBUTTON 0x0002L
  1690.   #define TPM_LEFTALIGN   0x0000L
  1691.   #define TPM_CENTERALIGN 0x0004L
  1692.   #define TPM_RIGHTALIGN  0x0008L
  1693.   #define TPM_TOPALIGN        0x0000L
  1694.   #define TPM_VCENTERALIGN    0x0010L
  1695.   #define TPM_BOTTOMALIGN     0x0020L
  1696.   #define TPM_HORIZONTAL      0x0000L     /* Horz alignment matters more */
  1697.   #define TPM_VERTICAL        0x0040L     /* Vert alignment matters more */
  1698.   #define TPM_NONOTIFY        0x0080L     /* Don't send any notification msgs */
  1699.   #define TPM_RETURNCMD       0x0100L
  1700.   #define TPM_DESTROY         0x1000L       /* Destroy menu after tracking */
  1701.   #define TPM_SYSCMD          0x2000L       /* Send system command */
  1702.   #define TPM_DEFAULT         0x0000L       /* Default tracking flag */
  1703. /* return codes for MSG_MENUCHAR */
  1704. #define MNC_IGNORE  0
  1705. #define MNC_CLOSE   1
  1706. #define MNC_EXECUTE 2
  1707. #define MNC_SELECT  3
  1708. /**
  1709.  * Structure defines a menu item
  1710.  */
  1711. typedef struct _MENUITEMINFO {
  1712.     /**
  1713.      * used by a GetMenuItemInfo and a SetMenuItemInfo functions, 
  1714.      * can be OR'ed with the following values:
  1715.      *      - MIIM_STATEn
  1716.      *        Get/set the state of the menu item.
  1717.      *      - MIIM_IDn
  1718.      *        Get/set the identifier of the menu item.
  1719.      *      - MIIM_SUBMENUn
  1720.      *        Get/set the sub-menu of the menu item.
  1721.      *      - MIIM_CHECKMARKSn
  1722.      *        Get/set the check/uncheck bitmap.
  1723.      *      - MIIM_TYPEn
  1724.      *        Get/set the type and the type data of the menu item.
  1725.      *      - MIIM_DATAn
  1726.      *        Get/set the item data of the menu item.
  1727.      */
  1728.     UINT                mask;
  1729.     /**
  1730.      * type of menu item, can be one of the following values:
  1731.      *      - MFT_STRINGn
  1732.      *        A normal string menu item.
  1733.      *      - MFT_BITMAPn
  1734.      *        A bitmap menu item.
  1735.      *      - MFT_BMPSTRINGn
  1736.      *        A bitmap menu item followed by a string.
  1737.      *      - MFT_SEPARATOR
  1738.      *        A separator in menu.
  1739.      *      - MFT_RADIOCHECKn
  1740.      *        A normal string with a radio check mark.
  1741.      */
  1742.     UINT                type;
  1743.     /**
  1744.      * state of the menu item, can be one of the following values:
  1745.      *      - MFS_GRAYEDn
  1746.      *        The menu item is disabled.
  1747.      *      - MFS_DISABLEDn
  1748.      *        The menu item is disabled.
  1749.      *      - MFS_CHECKEDn
  1750.      *        The menu item is checked.
  1751.      *      - MFS_ENABLEDn
  1752.      *        The menu item is enabled.
  1753.      *      - MFS_UNCHECKEDn
  1754.      *        The menu item is unchecked.
  1755.      */
  1756.     UINT                state;
  1757.     /** the identifier of the menu item */
  1758.     int                 id;
  1759.     /** the handle to the sub-menu if this menu contains a sub menu */
  1760.     HMENU               hsubmenu;
  1761.     /** the pointer to a BITMAP object used for checked bitmap menu item */
  1762.     PBITMAP             hbmpChecked;
  1763.     /** the pointer to a BITMAP object used for unchecked bitmap menu item */
  1764.     PBITMAP             hbmpUnchecked;
  1765.     /** the private data attached to the menu item */
  1766.     DWORD               itemdata; 
  1767.     /** the data of this menu item, used to pass the string of the menu item */
  1768.     DWORD               typedata;
  1769.     /** used by a GetMenuItemInfo function to indicate the maximal length of the string */
  1770.     UINT                cch;
  1771. } MENUITEMINFO;
  1772. typedef MENUITEMINFO* PMENUITEMINFO;
  1773. /**
  1774.  * fn HMENU GUIAPI LoadMenuFromFile (const char* filename, int id)
  1775.  * brief Loads a menu from an external file.
  1776.  *
  1777.  * This function loads a menu from an external file. 
  1778.  *
  1779.  * param filename The path name of the file.
  1780.  * param id The identifier of the menu.
  1781.  * return The handle to the menu, zero when error.
  1782.  *
  1783.  * note The function is not implemented so far.
  1784.  */
  1785. HMENU GUIAPI LoadMenuFromFile (const char* filename, int id);
  1786. /**
  1787.  * fn HMENU GUIAPI CreateMenu (void)
  1788.  * brief Creates an empty menu.
  1789.  *
  1790.  * This function creates a menu. The menu is initially empty, but it can be 
  1791.  * filled with menu items by using the a InsertMenuItem functions.
  1792.  *
  1793.  * return The handle to the menu, zero when error.
  1794.  *
  1795.  * sa InsertMenuItem
  1796.  */
  1797. HMENU GUIAPI CreateMenu (void);
  1798. /**
  1799.  * fn HMENU GUIAPI CreatePopupMenu ( PMENUITEMINFO pmii)
  1800.  * brief Creates a drop-down menu or submenu.
  1801.  *
  1802.  * This function creates a drop-down menu or submenu. The menu is initially empty. 
  1803.  * You can insert or append menu items by using the a InsertMenuItem function.
  1804.  *
  1805.  * param pmii Menu item information used to create the popup menu.
  1806.  * return The handle to the popup menu.
  1807.  *
  1808.  * sa InsertMenuItem, MENUITEMINFO
  1809.  */
  1810. HMENU GUIAPI CreatePopupMenu ( PMENUITEMINFO pmii);
  1811. /**
  1812.  * fn HMENU GUIAPI CreateSystemMenu (HWND hwnd, DWORD dwStyle)
  1813.  * brief Creates a system menu.
  1814.  *
  1815.  * This function creates a system menu for the main window specified by a hwnd.
  1816.  *
  1817.  * param hwnd The handle to the main window.
  1818.  * param dwStyle The main window style.
  1819.  * return The handle to the system menu.
  1820.  *
  1821.  * sa CreateMenu, CreatePopupMenu
  1822.  */
  1823. HMENU GUIAPI CreateSystemMenu (HWND hwnd, DWORD dwStyle);
  1824. /**
  1825.  * fn int GUIAPI InsertMenuItem (HMENU hmnu, int item, BOOL flag, PMENUITEMINFO pmii)
  1826.  * brief Inserts a new menu item at the specified position in a menu.
  1827.  *
  1828.  * This function inserts a new menu item specified by a pmmi at the
  1829.  * specified position (determined by a item and a flag) in the menu a hmnu.
  1830.  *
  1831.  * param hmnu The handle to the menu.
  1832.  * param item The insertion position.
  1833.  * param flag Indicates the position base, can be one of the following values:
  1834.  *      - MF_BYCOMMANDn
  1835.  *        The position value a item is based on the command identifier.
  1836.  *        The new menu item will insert bellow the item whose id is a item.
  1837.  *      - MF_BYPOSITIONn
  1838.  *        The position value a item is based on the position in the menu.
  1839.  * param pmii Menu item information used to create the popup menu.
  1840.  *
  1841.  * return The function returns 0 for success, non-zero for failure.
  1842.  *
  1843.  * retval ERR_INVALID_HANDLE a hmnu is not a handle to menu.
  1844.  * retval ERR_RES_ALLOCATION Can not allocate new menu item.
  1845.  * retval ERR_INVALID_HMENU a hmnu is an invalid menu.
  1846.  *
  1847.  * sa RemoveMenu, MENUITEMINFO
  1848.  */
  1849. int GUIAPI InsertMenuItem (HMENU hmnu, int item, 
  1850.                             BOOL flag, PMENUITEMINFO pmii);
  1851. /**
  1852.  * fn int GUIAPI RemoveMenu (HMENU hmnu, int item, UINT flag)
  1853.  * brief Deletes a menu item or detaches a submenu from the specified menu.
  1854.  *
  1855.  * This function deletes a menu item or detaches a submenu from the specified menu a hmnu.
  1856.  * If the item is a normal menu item, the function will delete the item.
  1857.  * If the item is a submenu, the function will detache the submenu for the menu, 
  1858.  * but not delete the submenu.
  1859.  *
  1860.  * param hmnu The handle to the menu.
  1861.  * param item The position of the menu item or submenu.
  1862.  * param flag Indicates the position base, can be one of the following values:
  1863.  *      - MF_BYCOMMANDn
  1864.  *        The position value a item is based on the command identifier.
  1865.  *        The new menu item will insert bellow the item whose id is a item.
  1866.  *      - MF_BYPOSITIONn
  1867.  *        The position value a item is based on the position in the menu.
  1868.  * return The function returns 0 for success, non-zero for failure.
  1869.  *
  1870.  * retval ERR_INVALID_HANDLE a hmnu is not a handle to menu.
  1871.  * retval ERR_INVALID_HMENU a hmnu is an invalid menu.
  1872.  *
  1873.  * sa InsertMenuItem, DeleteMenu
  1874.  */
  1875. int GUIAPI RemoveMenu (HMENU hmnu, int item, UINT flag);
  1876. /**
  1877.  * fn int GUIAPI DeleteMenu (HMENU hmnu, int item, UINT flag)
  1878.  * brief Deletes an item from the specified menu.
  1879.  *
  1880.  * This function deletes an item from the specified menu a hmnu.
  1881.  * Either the item is a normal menu item or a submenu, this function
  1882.  * will delete the item.
  1883.  *
  1884.  * param hmnu The handle to the menu.
  1885.  * param item The position of the menu item or submenu.
  1886.  * param flag Indicates the position base, can be one of the following values:
  1887.  *      - MF_BYCOMMANDn
  1888.  *        The position value a item is based on the command identifier.
  1889.  *        The new menu item will insert bellow the item whose id is a item.
  1890.  *      - MF_BYPOSITIONn
  1891.  *        The position value a item is based on the position in the menu.
  1892.  * return The function returns 0 for success, non-zero for failure.
  1893.  *
  1894.  * retval ERR_INVALID_HANDLE a hmnu is not a handle to menu.
  1895.  * retval ERR_INVALID_HMENU a hmnu is an invalid menu.
  1896.  *
  1897.  * sa InsertMenuItem, RemoveMenu
  1898.  */
  1899. int GUIAPI DeleteMenu (HMENU hmnu, int item, UINT flag);
  1900. /**
  1901.  * fn int GUIAPI DestroyMenu (HMENU hmnu)
  1902.  * brief Destroys the specified menu and frees any memory that the menu occupies.
  1903.  *
  1904.  * This function destroys the specified menu a hmnu and frees any memory 
  1905.  * that the menu occupies.
  1906.  *
  1907.  * param hmnu The handle to the menu.
  1908.  * return The function returns 0 for success, non-zero for failure.
  1909.  *
  1910.  * retval ERR_INVALID_HANDLE a hmnu is not a handle to menu.
  1911.  *
  1912.  * sa RemoveMenu, DeleteMenu
  1913.  */
  1914. int GUIAPI DestroyMenu (HMENU hmnu);
  1915. /**
  1916.  * fn int GUIAPI IsMenu (HMENU hmnu)
  1917.  * brief Determines whether a handle is a menu handle.
  1918.  *
  1919.  * This function determines whether the handle specified by a hmnu is a menu handle.
  1920.  *
  1921.  * param hmnu The handle to a menu.
  1922.  * return The function returns 0 for none menu handle, otherwise the type of the menu.
  1923.  *
  1924.  * sa CreateMenu
  1925.  */
  1926. int GUIAPI IsMenu (HMENU hmnu);
  1927. /**
  1928.  * fn HMENU GUIAPI SetMenu (HWND hwnd, HMENU hmnu)
  1929.  * brief Assigns a new menu to the specified main window.
  1930.  *
  1931.  * This functionn assigns the specified menu a hmnu to 
  1932.  * the main window specified by a hwnd.
  1933.  *
  1934.  * param hwnd The handle to the main window.
  1935.  * param hmnu The handle to the new menu.
  1936.  *
  1937.  * return The handle to the old menu of the window.
  1938.  * 
  1939.  * sa GetMenu
  1940.  */
  1941. HMENU GUIAPI SetMenu (HWND hwnd, HMENU hmnu);
  1942. /**
  1943.  * fn HMENU GUIAPI GetMenu (HWND hwnd)
  1944.  * brief Retrieves the handle to the menu assigned to the given main window.
  1945.  *
  1946.  * This function retrives the handle to the menu assigned to 
  1947.  * the given main window a hwnd.
  1948.  *
  1949.  * param hwnd The handle to the main window.
  1950.  * return The handle to the menu of the window.
  1951.  *
  1952.  * sa SetMenu
  1953.  */
  1954. HMENU GUIAPI GetMenu (HWND hwnd);
  1955. /**
  1956.  * fn void GUIAPI DrawMenuBar (HWND hwnd)
  1957.  * brief Redraws the menu bar of the specified main window.
  1958.  *
  1959.  * This function redraws the menu bar of the specified main window. 
  1960.  * If the menu bar changes after the system has created the window, 
  1961.  * this function must be called to draw the changed menu bar.
  1962.  *
  1963.  * param hwnd The handle to the main window.
  1964.  *
  1965.  * sa TrackMenuBar
  1966.  */
  1967. void GUIAPI DrawMenuBar (HWND hwnd);
  1968. /**
  1969.  * fn int GUIAPI TrackMenuBar (HWND hwnd, int pos)
  1970.  * brief Displays the specified submenu.
  1971.  *
  1972.  * This function displays the specified submenu in the menu bar of 
  1973.  * the specified main window a hwnd.
  1974.  *
  1975.  * param hwnd The handle to the main window.
  1976.  * param pos The position of the submenu. The position value of the 
  1977.  *      first submenu is 0.
  1978.  * return The function returns 0 for success, non-zero for failure.
  1979.  *
  1980.  * sa TrackPopupMenu, CreateMenu
  1981.  */
  1982. int GUIAPI TrackMenuBar (HWND hwnd, int pos);
  1983. /**
  1984.  * fn int GUIAPI TrackPopupMenu (HMENU hmnu, UINT uFlags, int x, int y, HWND hwnd)
  1985.  * brief Displays and tracks a popup menu.
  1986.  *
  1987.  * This function displays a shortcut menu at the specified location 
  1988.  * and tracks the selection of items on the menu. The shortcut menu 
  1989.  * can appear anywhere on the screen.
  1990.  *
  1991.  * param hmnu The handle to the popup menu.
  1992.  * param uFlags The tracking flags, can be OR'ed value of the following values:
  1993.  *      - TPM_LEFTALIGNn
  1994.  *        Horz alignement is left.
  1995.  *      - TPM_CENTERALIGNn
  1996.  *        Horz alignement is center.
  1997.  *      - TPM_RIGHTALIGNn
  1998.  *        Horz alignement is right.
  1999.  *      - TPM_TOPALIGNn
  2000.  *        Vert alignement is top.
  2001.  *      - TPM_VCENTERALIGNn
  2002.  *        Vert alignement is center.
  2003.  *      - TPM_BOTTOMALIGNn
  2004.  *        Vert alignement is bottom.
  2005.  *      - TPM_DESTROYn
  2006.  *        Destroies the popup menu after finishing tracking.
  2007.  *      - TPM_SYSCMDn
  2008.  *        Sends an MSG_SYSCOMMAND message to the window when the use select a menu item.
  2009.  * param x The x coordinate of the position of the popup menu.
  2010.  * param y The y coordinate of the position of the popup menu.
  2011.  * param hwnd The handle to the window which will receive 
  2012.  *        the MSG_COMMAND or MSG_SYSCOMMAND message.
  2013.  * return The function returns 0 for success, non-zero for failure.
  2014.  *
  2015.  * sa TrackMenuBar, CreatePopupMenu
  2016.  */
  2017. int GUIAPI TrackPopupMenu (HMENU hmnu, UINT uFlags, int x, int y, HWND hwnd);
  2018. /**
  2019.  * fn HMENU GUIAPI GetMenuBarItemRect (HWND hwnd, int pos, RECT* prc)
  2020.  * brief Retrieves the rect of a menu bar item.
  2021.  *
  2022.  * This function retrieves the rect of the menu bar item specified 
  2023.  * by the parameter a pos.
  2024.  *
  2025.  * param hwnd The handle to the main window.
  2026.  * param pos The position of the item. The position value of the 
  2027.  *      first item is 0.
  2028.  * param prc The pointer to a RECT object, which will receive the rectangle.
  2029.  * return The function returns the handle to the menu bar if success,
  2030.  *      otherwise returns 0.
  2031.  *
  2032.  * sa TrackMenuBar
  2033.  */
  2034. HMENU GUIAPI GetMenuBarItemRect (HWND hwnd, int pos, RECT* prc);
  2035. #define HMF_UPITEM      0x01
  2036. #define HMF_DOWNITEM    0x02
  2037. #define HMF_DEFAULT     0x00
  2038. /**
  2039.  * fn BOOL GUIAPI HiliteMenuBarItem (HWND hwnd, int pos, UINT flag)
  2040.  * brief Draws the specified menubar item with 3D effect.
  2041.  *
  2042.  * This function draws the specified menubar item with 3D effect.
  2043.  *
  2044.  * param hwnd The handle to the main window.
  2045.  * param pos The position of the item. The position value of the 
  2046.  *      first item is 0.
  2047.  * param flag The drawing flag, can be one of the following values:
  2048.  *      - HMF_UPITEMn
  2049.  *        Up item.
  2050.  *      - HMF_DOWNITEMn
  2051.  *        Down item.
  2052.  *      - HMF_DEFAULTn
  2053.  *        Default.
  2054.  * return TRUE on success, otherwise FALSE.
  2055.  *
  2056.  * sa TrackMenuBar
  2057.  */
  2058. BOOL GUIAPI HiliteMenuBarItem (HWND hwnd, int pos, UINT flag);
  2059. /**
  2060.  * fn int GUIAPI GetMenuItemCount (HMENU hmnu)
  2061.  * brief Determines the number of items in a menu.
  2062.  *
  2063.  * This function determines the number of items in the specified menu a hmnu.
  2064.  *
  2065.  * param hmnu The handle to the menu.
  2066.  * return The number of the items in the menu.
  2067.  *
  2068.  * sa GetMenuItemInfo
  2069.  */
  2070. int GUIAPI GetMenuItemCount (HMENU hmnu);
  2071. /**
  2072.  * fnint GUIAPI GetMenuItemID (HMENU hmnu, int pos)
  2073.  * brief Retrieves the menu item identifier of a menu item at specified position in a menu.
  2074.  *
  2075.  * This function retrieves the menu item identifier of a menu item at 
  2076.  * the specified position a pos in the specified menu a hmnu.
  2077.  *
  2078.  * param hmnu The handle to the menu.
  2079.  * param pos The position of the menu item. The position value of the 
  2080.  *      first item is 0.
  2081.  * return The identifier of the items in the menu.
  2082.  *
  2083.  * sa GetMenuItemInfo
  2084.  */
  2085. int GUIAPI GetMenuItemID (HMENU hmnu, int pos); 
  2086. /**
  2087.  * fn int GUIAPI GetMenuItemInfo (HMENU hmnu, int item, BOOL flag, PMENUITEMINFO pmii)
  2088.  * brief Retrieves information about a menu item.
  2089.  *
  2090.  * This function retrieves information about a menu item, and returns the
  2091.  * information via a pmii.
  2092.  *
  2093.  * param hmnu The handle to the menu.
  2094.  * param item The position of the menu item or submenu.
  2095.  * param flag Indicates the position base, can be one of the following values:
  2096.  *      - MF_BYCOMMANDn
  2097.  *        The position value a item is based on the command identifier.
  2098.  *        The new menu item will insert bellow the item whose id is a item.
  2099.  *      - MF_BYPOSITIONn
  2100.  *        The position value a item is based on the position in the menu.
  2101.  * param pmii The pointer to a MENUITEMINFO structure.
  2102.  * return The function returns 0 for success, non-zero for failure.
  2103.  *
  2104.  * sa SetMenuItemInfo, MENUITEMINFO
  2105.  */
  2106. int GUIAPI GetMenuItemInfo (HMENU hmnu, int item, 
  2107.                             BOOL flag, PMENUITEMINFO pmii);
  2108. int GUIAPI GetMenuItemRect (HWND hwnd, HMENU hmnu, int item, PRECT prc);
  2109. /**
  2110.  * fn HMENU GUIAPI GetPopupSubMenu (HMENU hpppmnu)
  2111.  * brief Retrieves the submenu of the specified popup menu.
  2112.  *
  2113.  * This function retrieves the submenu of the specified popup menu.
  2114.  *
  2115.  * param hpppmnu The handle to the popup menu.
  2116.  * return The handle to the submenu of the popup menu.
  2117.  *
  2118.  * sa CreatePopupMenu
  2119.  */
  2120. HMENU GUIAPI GetPopupSubMenu (HMENU hpppmnu);
  2121. /**
  2122.  * fn HMENU GUIAPI StripPopupHead (HMENU hpppmnu)
  2123.  * brief Strips the head of the popup menu.
  2124.  *
  2125.  * This function strips the head of the popup menu.
  2126.  *
  2127.  * param hpppmnu The handle to the popup menu.
  2128.  * return The handle to the submenu the head stripped.
  2129.  *
  2130.  * sa GetPopupSubMenu
  2131.  */
  2132. HMENU GUIAPI StripPopupHead (HMENU hpppmnu);
  2133. /**
  2134.  * fn HMENU GUIAPI GetSubMenu (HMENU hmnu, int pos)
  2135.  * brief Retrieves the handle to the submenu activated by the specified menu item.
  2136.  *
  2137.  * This function retrieves the handle to the drop-down menu or submenu activated 
  2138.  * by the specified menu item.
  2139.  *
  2140.  * param hmnu The handle to the menu.
  2141.  * param pos The position of the menu item. The position value of the 
  2142.  *      first item is 0.
  2143.  * return The handle to the submenu; 0 if the menu item can not activate a submenu.
  2144.  *
  2145.  * sa GetPopupSubMenu
  2146.  */
  2147. HMENU GUIAPI GetSubMenu (HMENU hmnu, int pos);
  2148. /**
  2149.  * fn HMENU GUIAPI GetSystemMenu (HWND hwnd, BOOL flag)
  2150.  * brief Allows the application to access the window menu (also known as 
  2151.  * the system menu) for copying and modifying.
  2152.  *
  2153.  * This function returns the handle to the system menu of the main window.
  2154.  * This allows the application to access the window menu (also known as
  2155.  * the system menu) for copying and modifying.
  2156.  *
  2157.  * param hwnd The handle to the main window.
  2158.  * param flag Ignored.
  2159.  * return The handle to the system menu; 0 if the main window has not a system menu.
  2160.  * 
  2161.  * sa GetMenu, SetMenu
  2162.  */
  2163. HMENU GUIAPI GetSystemMenu (HWND hwnd, BOOL flag);
  2164. /**
  2165.  * fn UINT GUIAPI EnableMenuItem (HMENU hmnu, int item, UINT flag)
  2166.  * brief Enables, disables, or grays the specified menu item.
  2167.  *
  2168.  * This function enables, disables, or grays the specified menu item.
  2169.  *
  2170.  * param hmnu The handle to the menu.
  2171.  * param item The position of the menu item or submenu.
  2172.  * param flag Indicates the position base, can be one of the following values:
  2173.  *      - MF_BYCOMMANDn
  2174.  *        The position value a item is based on the command identifier.
  2175.  *        The new menu item will insert bellow the item whose id is a item.
  2176.  *      - MF_BYPOSITIONn
  2177.  *        The position value a item is based on the position in the menu.
  2178.  * return The previous state of the menu item.
  2179.  *
  2180.  * sa GetMenuItemInfo
  2181.  */
  2182. UINT GUIAPI EnableMenuItem (HMENU hmnu, int item, UINT flag);
  2183. /**
  2184.  * fn int GUIAPI CheckMenuRadioItem (HMENU hmnu, int first, int last, int checkitem, UINT flag)
  2185.  * brief Checks a specified menu item and makes it a radio item.
  2186.  *
  2187.  * This function checks a specified menu item and makes it a radio item. 
  2188.  * At the same time, the function unchecks all other menu items in the 
  2189.  * associated group and clears the radio-item type flag for those items.
  2190.  *
  2191.  * param hmnu The handle to the menu.
  2192.  * param first The position of the first item in the group.
  2193.  * param last The position of the last item in the group.
  2194.  * param checkitem The position of the menu item to check.
  2195.  * param flag Indicates the position base, can be one of the following values:
  2196.  *      - MF_BYCOMMANDn
  2197.  *        The position value a item is based on the command identifier.
  2198.  *        The new menu item will insert bellow the item whose id is a item.
  2199.  *      - MF_BYPOSITIONn
  2200.  *        The position value a item is based on the position in the menu.
  2201.  * return The function returns 0 for success, non-zero for failure.
  2202.  *
  2203.  * sa SetMenuItemInfo, MENUITEMINFO
  2204.  */
  2205. int GUIAPI CheckMenuRadioItem (HMENU hmnu, int first, int last, 
  2206.                             int checkitem, UINT flag);
  2207. /**
  2208.  * fn int GUIAPI SetMenuItemBitmaps (HMENU hmnu, int item, UINT flag, PBITMAP hBmpUnchecked, PBITMAP hBmpChecked)
  2209.  * brief Associates the specified bitmap with a menu item.
  2210.  *
  2211.  * This function associates the specified bitmap with a menu item. 
  2212.  * Whether the menu item is checked or unchecked, the system displays the 
  2213.  * appropriate bitmap next to the menu item.
  2214.  *
  2215.  * param hmnu The handle to the menu.
  2216.  * param item The position of the menu item.
  2217.  * param flag Indicates the position base, can be one of the following values:
  2218.  *      - MF_BYCOMMANDn
  2219.  *        The position value a item is based on the command identifier.
  2220.  *        The new menu item will insert bellow the item whose id is a item.
  2221.  *      - MF_BYPOSITIONn
  2222.  *        The position value a item is based on the position in the menu.
  2223.  * param hBmpUnchecked The pointer to the unchecked BITMAP object.
  2224.  * param hBmpChecked The pointer to the checked BITMAP object.
  2225.  * return The function returns 0 for success, non-zero for failure.
  2226.  *
  2227.  * sa SetMenuItemInfo, MENUITEMINFO
  2228.  */
  2229. int GUIAPI SetMenuItemBitmaps (HMENU hmnu, int item, UINT flag, 
  2230.                             PBITMAP hBmpUnchecked, PBITMAP hBmpChecked);
  2231. /**
  2232.  * fn int GUIAPI SetMenuItemInfo (HMENU hmnu, int item, BOOL flag, PMENUITEMINFO pmii)
  2233.  * brief Changes information about a menu item.
  2234.  *
  2235.  * This function changes information about the specified menu item.
  2236.  *
  2237.  * param hmnu The handle to the menu.
  2238.  * param item The position of the menu item.
  2239.  * param flag Indicates the position base, can be one of the following values:
  2240.  *      - MF_BYCOMMANDn
  2241.  *        The position value a item is based on the command identifier.
  2242.  *        The new menu item will insert bellow the item whose id is a item.
  2243.  *      - MF_BYPOSITIONn
  2244.  *        The position value a item is based on the position in the menu.
  2245.  * param pmii The pointer to a MENUITEMINFO structure contains the information.
  2246.  * return The function returns 0 for success, non-zero for failure.
  2247.  *
  2248.  * sa GetMenuItemInfo, MENUITEMINFO
  2249.  */
  2250. int GUIAPI SetMenuItemInfo (HMENU hmnu, int item, 
  2251.                             BOOL flag, PMENUITEMINFO pmii);
  2252.     /** @} end of menu_fns */
  2253.     /**
  2254.      * defgroup dialog_fns Dialog operations
  2255.      * @{
  2256.      */
  2257. /* Dialog codes */
  2258. #define DLGC_WANTARROWS     0x0001      /* Control wants arrow keys         */
  2259. #define DLGC_WANTTAB        0x0002      /* Control wants tab keys           */
  2260. #define DLGC_WANTALLKEYS    0x0004      /* Control wants all keys           */
  2261. #define DLGC_WANTCHARS      0x0008      /* Want MSG_CHAR messages           */
  2262. #define DLGC_WANTENTER      0x0010      /* Control wants enter keys         */
  2263. #define DLGC_HASSETSEL      0x0080      /* Understands EM_SETSEL message    */
  2264. #define DLGC_DEFPUSHBUTTON  0x0100      /* Default pushbutton               */
  2265. #define DLGC_PUSHBUTTON     0x0200      /* Non-default pushbutton           */
  2266. #define DLGC_RADIOBUTTON    0x0400      /* Radio button                     */
  2267. #define DLGC_3STATE         0x0800      /* 3 States button item             */
  2268. #define DLGC_STATIC         0x1000      /* Static item: don't include       */
  2269. #define DLGC_BUTTON         0x2000      /* Button item: can be checked      */
  2270. /**
  2271.  * Structure which defines a control.
  2272.  */
  2273. typedef struct _CTRLDATA
  2274. {
  2275.     char*       class_name;             /** class name of the control */
  2276.     DWORD       dwStyle;                /** control style */
  2277.     int         x, y, w, h;             /** control position in dialog */
  2278.     int         id;                     /** control identifier */
  2279.     const char* caption;                /** control caption */
  2280.     DWORD       dwAddData;              /** additional data */
  2281.     DWORD       dwExStyle;              /** control extended style */
  2282. } CTRLDATA;
  2283. typedef CTRLDATA* PCTRLDATA;
  2284. /**
  2285.  * Structure which defines a dialogbox.
  2286.  *
  2287.  * Example:
  2288.  * 
  2289.  * include dlgtemplate.c
  2290.  */
  2291. typedef struct _DLGTEMPLATE
  2292. {
  2293.     DWORD       dwStyle;                /** dialog box style */
  2294.     DWORD       dwExStyle;              /** dialog box extended style */
  2295.     int         x, y, w, h;             /** dialog box position */
  2296.     const char* caption;                /** dialog box caption */
  2297.     HICON       hIcon;                  /** dialog box icon */
  2298.     HMENU       hMenu;                  /** dialog box menu */
  2299.     int         controlnr;              /** number of controls */
  2300.     PCTRLDATA   controls;               /** poiter to control array */
  2301.     DWORD       dwAddData;              /** addtional data, must be zero */
  2302. } DLGTEMPLATE;
  2303. typedef DLGTEMPLATE* PDLGTEMPLATE;
  2304. /**
  2305.  * fn HWND GUIAPI CreateMainWindowIndirectParam (PDLGTEMPLATE pDlgTemplate, HWND hOwner, WNDPROC WndProc, LPARAM lParam) 
  2306.  * brief Uses a dialog template to create a main window and controls in it, and pass a parameter to the window procedure.
  2307.  *
  2308.  * This function uses a dialog template pointed to by a pDlgTemplate
  2309.  * to create a main window and controls in it. The parameter specified by
  2310.  * a lParam will be passed to the window procedure as the second paramter
  2311.  * of MSG_INITDIALOG message.
  2312.  *
  2313.  * param pDlgTemplate The pointer to a DLGTEMPLATE structure.
  2314.  * param hOwner The handle to the hosting main window.
  2315.  * param WndProc The window procedure of the new main window.
  2316.  * param lParam The parameter will be passed to the window procedure.
  2317.  * return Handle to the new main window, HWND_INVALID on error.
  2318.  *
  2319.  * sa DestroyMainWindowIndirect, DialogBoxIndirectParam, DLGTEMPLATE
  2320.  */
  2321. HWND GUIAPI CreateMainWindowIndirectParam (PDLGTEMPLATE pDlgTemplate, 
  2322.                     HWND hOwner, WNDPROC WndProc, LPARAM lParam);
  2323. /**
  2324.  * def CreateMainWindowIndirect(pDlgTemplate, hOwner, WndProc)
  2325.  * brief An simplified version of a CreateMainWindowIndirectParam.
  2326.  *
  2327.  * This macro calls a CreateMainWindowIndirectParam with a lParam set to be 0.
  2328.  */
  2329. #define CreateMainWindowIndirect(pDlgTemplate, hOwner, WndProc) 
  2330.             CreateMainWindowIndirectParam(pDlgTemplate, hOwner, WndProc, 0)
  2331. /**
  2332.  * fn BOOL GUIAPI DestroyMainWindowIndirect (HWND hMainWin)
  2333.  * brief Destroys a main window created by a CreateMainWindowIndirectParam.
  2334.  *
  2335.  * This function destroys the main window which was created by 
  2336.  * a CreateMainWindowIndirectParam function.
  2337.  *
  2338.  * param hMainWin The handle to the main window.
  2339.  *
  2340.  * sa CreateMainWindowIndirectParam
  2341.  */
  2342. BOOL GUIAPI DestroyMainWindowIndirect (HWND hMainWin);
  2343. /**
  2344.  * fn int GUIAPI DialogBoxIndirectParam (PDLGTEMPLATE pDlgTemplate, HWND hOwner, WNDPROC DlgProc, LPARAM lParam)
  2345.  * brief Creates a modal dialog box from a dialog box template in memory.
  2346.  *
  2347.  * This function creates a modal dialog box from a dialog box template in memory. 
  2348.  * Before displaying the dialog box, the function passes an application-defined value to 
  2349.  * the dialog box procedure as the second parameter of the MSG_INITDIALOG message. 
  2350.  * An application can use this value to initialize dialog box controls.
  2351.  *
  2352.  * param pDlgTemplate The pointer to a DLGTEMPLATE structure.
  2353.  * param hOwner The handle to the hosting main window.
  2354.  * param DlgProc The window procedure of the new dialog box.
  2355.  * param lParam The parameter will be passed to the window procedure.
  2356.  * return Handle to the new main window, HWND_INVALID on error.
  2357.  *
  2358.  * sa CreateMainWindowIndirectParam, DLGTEMPLATE
  2359.  *
  2360.  * Example:
  2361.  *
  2362.  * include dialogbox.c
  2363.  */
  2364. int  GUIAPI DialogBoxIndirectParam (PDLGTEMPLATE pDlgTemplate, 
  2365.                     HWND hOwner, WNDPROC DlgProc, LPARAM lParam);
  2366. /**
  2367.  * fn BOOL GUIAPI EndDialog (HWND hDlg, int endCode)
  2368.  * brief Destroys a modal dialog box, causing MiniGUI to end any processing for the dialog box.
  2369.  *
  2370.  * This function destroys the modal dialog box a hDlg created by a DialogBoxIndirectParam
  2371.  * and ends any processing for the dialog box. The argument a endCode will be returned
  2372.  * by a DialogBoxIndirectParam as the return value.
  2373.  *
  2374.  * param hDlg The handle to the dialog box.
  2375.  * param endCode The value will be returned by a DialogBoxIndirectParam.
  2376.  *
  2377.  * return TRUE on success, FALSE on error.
  2378.  */
  2379. BOOL GUIAPI EndDialog (HWND hDlg, int endCode);
  2380. /**
  2381.  * fn void GUIAPI DestroyAllControls (HWND hWnd)
  2382.  * brief Destroys all controls in a window.
  2383.  *
  2384.  * This function destroys all controls (child windows) in a window.
  2385.  *
  2386.  * param hWnd The handle to the window.
  2387.  *
  2388.  * sa DestroyWindow
  2389.  */
  2390. void GUIAPI DestroyAllControls (HWND hWnd);
  2391. /**
  2392.  * fn int GUIAPI DefaultDialogProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
  2393.  * brief The default dialog box procedure.
  2394.  *
  2395.  * This function is the default dialog box procedure. 
  2396.  * You should call this function in your dialog box procedure 
  2397.  * to process the unhandled messages.
  2398.  *
  2399.  * param hWnd The handle to the window.
  2400.  * param message The message identifier.
  2401.  * param wParam The first message parameter.
  2402.  * param lParam The second message parameter.
  2403.  * return The return value of the message handler.
  2404.  */
  2405. int  GUIAPI DefaultDialogProc (HWND hWnd, 
  2406.                 int message, WPARAM wParam, LPARAM lParam);
  2407. /**
  2408.  * fn HWND GUIAPI GetDlgDefPushButton (HWND hWnd)
  2409.  * brief Gets the default push button control in a window.
  2410.  *
  2411.  * This function gets the handle to the default push button 
  2412.  * (with BS_DEFPUSHBUTTON style) in the specified window a hWnd.
  2413.  *
  2414.  * param hWnd The handle to the window.
  2415.  * return The handle to the default push button, 
  2416.  *         zero for non default push button in the window.
  2417.  */
  2418. HWND GUIAPI GetDlgDefPushButton (HWND hWnd);
  2419. /**
  2420.  * fn int GUIAPI GetDlgCtrlID (HWND hwndCtl)
  2421.  * brief Gets the integer identifier of a control.
  2422.  *
  2423.  * This function gets the integer identifier of the control a hwndCtl.
  2424.  *
  2425.  * param hwndCtl The handle to the control.
  2426.  * return The identifier of the control, -1 for error.
  2427.  *
  2428.  * sa GetDlgItem
  2429.  */
  2430. int  GUIAPI GetDlgCtrlID (HWND hwndCtl);
  2431. /**
  2432.  * fn HWND GUIAPI GetDlgItem (HWND hDlg, int nIDDlgItem)
  2433.  * brief Retrives the handle to a control in a dialog box.
  2434.  *
  2435.  * This function retrives the handle to a control, whose identifier is a nIDDlgItem,
  2436.  * in the specified dialog box a hDlg.
  2437.  *
  2438.  * param hDlg The handle to the dialog box.
  2439.  * param nIDDlgItem The identifier of the control.
  2440.  * return The handle to the control, zero for not found.
  2441.  */
  2442. HWND GUIAPI GetDlgItem (HWND hDlg, int nIDDlgItem);
  2443. /**
  2444.  * fn UINT GUIAPI GetDlgItemInt (HWND hDlg, int nIDDlgItem, BOOL *lpTranslated, BOOL bSigned)
  2445.  * brief Translates the text of a control in a dialog box into an integer value.
  2446.  *
  2447.  * This function translates the text of the control, whose identifier is a nIDDlgItem
  2448.  * in the dialog box a hDlg into an integer value.
  2449.  *
  2450.  * param hDlg The handle to the dialog box.
  2451.  * param nIDDlgItem The identifier of the control.
  2452.  * param lpTranslated The pointer to a boolean value, which indicates whether
  2453.  *        translated successfully.
  2454.  * param bSigned Indicates whether handle the text as a signed integer.
  2455.  * return The translated 32-bit integer.
  2456.  *
  2457.  * note MiniGUI uses a strtol or a strtoul to convert the string value 
  2458.  * to a 32-bit integer, and pass the base as 0. Thus, the valid string value 
  2459.  * should be in the following forms:
  2460.  *
  2461.  *  - [+|-]0x[0-9|A-F]*n
  2462.  *    Will be read in base 16.
  2463.  *  - [+|-]0[0-7]*n
  2464.  *    Will be read in base 8.
  2465.  *  - [+|-][1-9][0-9]*n
  2466.  *    Will be read in base 10.
  2467.  *
  2468.  * sa GetDlgItemText, SetDlgItemInt
  2469.  */
  2470. UINT GUIAPI GetDlgItemInt (HWND hDlg, int nIDDlgItem, BOOL *lpTranslated,
  2471.                     BOOL bSigned);
  2472. /**
  2473.  * fn int GUIAPI GetDlgItemText (HWND hDlg, int nIDDlgItem, char* lpString, int nMaxCount)
  2474.  * brief Retrieves the title or text associated with a control in a dialog box.
  2475.  *
  2476.  * This function retrives the title or text associated with a control, whose
  2477.  * identifier is a nIDDlgItem in the dialog box a hDlg.
  2478.  *
  2479.  * param hDlg The handle to the dialog box.
  2480.  * param nIDDlgItem The identifier of the control.
  2481.  * param lpString The pointer to a buffer which receives the text.
  2482.  * param nMaxCount The maximal length of the string, not including the null character.
  2483.  * return The length of the null-terminated text.
  2484.  *
  2485.  * note The buffer should at least have size of (a nMaxCount + 1).
  2486.  *
  2487.  * sa GetDlgItemInt, GetDlgItemText2
  2488.  */
  2489. int  GUIAPI GetDlgItemText (HWND hDlg, int nIDDlgItem, char* lpString, 
  2490.                     int nMaxCount);
  2491. /**
  2492.  * fn char* GUIAPI GetDlgItemText2 (HWND hDlg, int id, int* lenPtr)
  2493.  * brief Retrieves the title or text associated with a control in a dialog box.
  2494.  *
  2495.  * This function is similiar as a GetDlgItemText function,
  2496.  * but it allocates memory for the text and returns the pointer 
  2497.  * to the allocated buffer. You should free the buffer when done by using
  2498.  * a free function.
  2499.  *
  2500.  * param hDlg The handle to the dialog box.
  2501.  * param id The identifier of the control.
  2502.  * param lenPtr The pointer to an integer which receives the length of the text
  2503.  *        if it is not NULL.
  2504.  * return The pointer to the allocated buffer.
  2505.  *
  2506.  * sa GetDlgItemText
  2507.  */
  2508. char* GUIAPI GetDlgItemText2 (HWND hDlg, int id, int* lenPtr);
  2509. /**
  2510.  * fn HWND GUIAPI GetNextDlgGroupItem (HWND hDlg, HWND hCtl, BOOL bPrevious)
  2511.  * brief Retrieves the handle to the first control in a group of controls that precedes
  2512.  *        (or follows) the specified control in a dialog box.
  2513.  *
  2514.  * This function retrieves the handle to the first control in 
  2515.  * a group of controls that precedes (or follows) the specified control a hCtl 
  2516.  * in the dialog box a hDlg.
  2517.  *
  2518.  * param hDlg The handle to the dialog box.
  2519.  * param hCtl The handle to the control.
  2520.  * param bPrevious A boolean value indicates to retrive the preceding or following control.
  2521.  *        TRUE for preceding control.
  2522.  * return The handle to the preceding or following control.
  2523.  *
  2524.  * sa GetNextDlgTabItem
  2525.  */
  2526. HWND GUIAPI GetNextDlgGroupItem (HWND hDlg, HWND hCtl, BOOL bPrevious);
  2527. /**
  2528.  * fn HWND GUIAPI GetNextDlgTabItem (HWND hDlg, HWND hCtl, BOOL bPrevious)
  2529.  * brief Retrieves the handle to the first control that has the WS_TABSTOP style 
  2530.  *        that precedes (or follows) the specified control.
  2531.  *
  2532.  * This function retrieves the handle to the first control that has 
  2533.  * the WS_TABSTOP style that precedes (or follows) the specified control a hCtl
  2534.  * in the dialog box a hDlg.
  2535.  *
  2536.  * param hDlg The handle to the dialog box.
  2537.  * param hCtl The handle to the control.
  2538.  * param bPrevious A boolean value indicates to retrive the preceding or following control.
  2539.  *        TRUE for preceding control.
  2540.  * return The handle to the preceding or following control.
  2541.  *
  2542.  * sa GetNextDlgGroupItem
  2543.  */
  2544. HWND GUIAPI GetNextDlgTabItem (HWND hDlg, HWND hCtl, BOOL bPrevious);
  2545. /**
  2546.  * fn int GUIAPI SendDlgItemMessage (HWND hDlg, int nIDDlgItem, int message, WPARAM wParam, LPARAM lParam)
  2547.  * brief Sends a message to the specified control in a dialog box.
  2548.  *
  2549.  * This function sends a message specified by (a message, a wParam, a lParam)
  2550.  * to the specified control whose identifier is a nIDDlgItem in the dialog box a hDlg.
  2551.  *
  2552.  * param hDlg The handle to the dialog box.
  2553.  * param nIDDlgItem The identifier of the control.
  2554.  * param message The message identifier.
  2555.  * param wParam The first message parameter.
  2556.  * param lParam The second message parameter.
  2557.  * return The return value of the message handler.
  2558.  *
  2559.  * sa SendMessage, GetDlgItem
  2560.  */
  2561. int  GUIAPI SendDlgItemMessage ( HWND hDlg, int nIDDlgItem, 
  2562.             int message, WPARAM wParam, LPARAM lParam);
  2563. /**
  2564.  * fn BOOL GUIAPI SetDlgItemInt (HWND hDlg, int nIDDlgItem, UINT uValue, BOOL bSigned)
  2565.  * brief Sets the text of a control in a dialog box to the string 
  2566.  *        representation of a specified integer value.
  2567.  *
  2568.  * This function sets the text of the control whose identifier is a nIDDlgItem 
  2569.  * in the dialog box a hDlg to the string representation of 
  2570.  * the specified integer value a nValue.
  2571.  *
  2572.  * param hDlg The handle to the dialog box.
  2573.  * param nIDDlgItem The identifier of the control.
  2574.  * param uValue The 32-bit integer value.
  2575.  * param bSigned A boolean value indicates whether the integer value is a signed integer.
  2576.  * return TRUE on success, FALSE on error.
  2577.  *
  2578.  * sa GetDlgItemInt, SetDlgItemText
  2579.  */
  2580. BOOL GUIAPI SetDlgItemInt (HWND hDlg, int nIDDlgItem, UINT uValue, 
  2581.                     BOOL bSigned);
  2582. /**
  2583.  * fn BOOL GUIAPI SetDlgItemText (HWND hDlg, int nIDDlgItem, const char* lpString)
  2584.  * brief Sets the title or text of a control in a dialog box.
  2585.  *
  2586.  * This function sets the title or text of the control whose identifier is a nIDDlgItem
  2587.  * in the dialog box a hDlg to the string pointed to by a lpString.
  2588.  *
  2589.  * param hDlg The handle to the dialog box.
  2590.  * param nIDDlgItem The identifier of the control.
  2591.  * param lpString The pointer to the string.
  2592.  * return TRUE on success, FALSE on error.
  2593.  *
  2594.  * sa GetDlgItemText, SetDlgItemInt
  2595.  */
  2596. BOOL GUIAPI SetDlgItemText (HWND hDlg, int nIDDlgItem, const char* lpString);
  2597. #ifdef _CTRL_BUTTON
  2598. /**
  2599.  * fn void GUIAPI CheckDlgButton (HWND hDlg, int nIDDlgItem, int nCheck)
  2600.  * brief Changes the check status of a button control.
  2601.  *
  2602.  * This function changes the check status of the button control whose 
  2603.  * identifier is a nIDDlgItem in the dialog box a hDlg.
  2604.  *
  2605.  * param hDlg The handle to the dialog box.
  2606.  * param nIDDlgItem The identifier of the control.
  2607.  * param nCheck The state of the button. If the button is a normal button,
  2608.  *        the value being zero means the button is checked, otherwise unchecked.
  2609.  *        If the button is a special button with three states, the value 
  2610.  *        can be one of the following values:
  2611.  *          - BST_UNCHECKEDn
  2612.  *            The button is unchecked.
  2613.  *          - BST_CHECKEDn
  2614.  *            The button is checked.
  2615.  *          - BST_INDETERMINATEn
  2616.  *            The button is in indeterminate state.
  2617.  *
  2618.  * sa CheckRadioButton, IsDlgButtonChecked
  2619.  */
  2620. void GUIAPI CheckDlgButton (HWND hDlg, int nIDDlgItem, int nCheck);
  2621. /**
  2622.  * fn void GUIAPI CheckRadioButton (HWND hDlg, int idFirstButton, int idLastButton, int idCheckButton)
  2623.  * brief Adds a check mark to (checks) a specified radio button in a group 
  2624.  *        and removes a check mark from (clears) all other radio buttons in the group.
  2625.  *
  2626.  * This function adds a check mark to (checks) the specified radio button a idCheckButton
  2627.  * in a group between a idFirstButton and a idLastButton, and removes 
  2628.  * a check mark from (clears) all other radio buttons in the group.
  2629.  *
  2630.  * param hDlg The handle to the dialog box.
  2631.  * param idFirstButton The identifier of the first control in the group.
  2632.  * param idLastButton The identifier of the last control in the group.
  2633.  * param idCheckButton The identifier of the control to be checked.
  2634.  *
  2635.  * sa CheckDlgButton
  2636.  */
  2637. void GUIAPI CheckRadioButton (HWND hDlg, 
  2638.                 int idFirstButton, int idLastButton, int idCheckButton);
  2639. /**
  2640.  * fn int GUIAPI IsDlgButtonChecked (HWND hDlg, int idButton)
  2641.  * brief Determines whether a button control has a check mark next to it or 
  2642.  *        whether a three-state button control is grayed, checked, or neither.
  2643.  *
  2644.  * This function determines whether the button control whose identifier is a idButton
  2645.  * has a check mark next to it or whether a three-state button control is grayed, 
  2646.  * checked, or neither.
  2647.  *
  2648.  * param hDlg The handle to the dialog box.
  2649.  * param idButton The identifier of the button.
  2650.  * return The check state of the button. If the button is a normal button,
  2651.  *        the value being zero means the button is checked, otherwise unchecked.
  2652.  *        If the button is a special button with three states, the value 
  2653.  *        can be one of the following values:
  2654.  *          - BST_UNCHECKEDn
  2655.  *            The button is unchecked.
  2656.  *          - BST_CHECKEDn
  2657.  *            The button is checked.
  2658.  *          - BST_INDETERMINATEn
  2659.  *            The button is in indeterminate state.
  2660.  *
  2661.  * sa CheckDlgButton
  2662.  */
  2663. int  GUIAPI IsDlgButtonChecked (HWND hDlg, int idButton); 
  2664. #endif
  2665.      /** @} end of dialog_fns */
  2666.      /**
  2667.       * defgroup msgbox_fns Message box operations
  2668.       * @{
  2669.       */
  2670. #if defined(_CTRL_STATIC) && defined (_CTRL_BUTTON)
  2671. /* Standard control IDs */
  2672. #define IDC_STATIC    0
  2673. #define IDOK          1
  2674. #define IDCANCEL      2
  2675. #define IDABORT       3
  2676. #define IDRETRY       4
  2677. #define IDIGNORE      5
  2678. #define IDYES         6
  2679. #define IDNO          7
  2680. #define MINID_RESERVED      0xF001
  2681. #define MAXID_RESERVED      0xFFFF
  2682. #define MB_OK                   0x00000000
  2683. #define MB_OKCANCEL             0x00000001
  2684. #define MB_YESNO                0x00000002
  2685. #define MB_RETRYCANCEL          0x00000003
  2686. #define MB_ABORTRETRYIGNORE     0x00000004
  2687. #define MB_YESNOCANCEL          0x00000005
  2688. #define MB_CANCELASBACK         0x00000008  /* customized style */
  2689. #define MB_TYPEMASK             0x00000007
  2690. #define MB_ICONHAND             0x00000010
  2691. #define MB_ICONQUESTION         0x00000020
  2692. #define MB_ICONEXCLAMATION      0x00000030
  2693. #define MB_ICONASTERISK         0x00000040
  2694. #define MB_ICONMASK             0x000000F0
  2695. #define MB_ICONINFORMATION      MB_ICONASTERISK
  2696. #define MB_ICONSTOP             MB_ICONHAND
  2697. #define MB_DEFBUTTON1           0x00000000
  2698. #define MB_DEFBUTTON2           0x00000100
  2699. #define MB_DEFBUTTON3           0x00000200
  2700. #define MB_DEFMASK              0x00000F00
  2701. /* #define MB_APPLMODAL            0x00000000 */
  2702. /* #define MB_SYSTEMMODAL          0x00001000 */
  2703. /* #define MB_TASKMODAL            0x00002000 */
  2704. #define MB_NOFOCUS              0x00008000
  2705. #define MB_ALIGNCENTER          0x00000000
  2706. #define MB_ALIGNTOPLEFT         0x00010000
  2707. #define MB_ALIGNBTMLEFT         0x00020000
  2708. #define MB_ALIGNTOPRIGHT        0x00030000
  2709. #define MB_ALIGNBTMRIGHT        0x00040000
  2710. #define MB_ALIGNMASK            0x00070000
  2711. #define MB_BASEDONPARENT        0x00080000  /* default is desktop. */
  2712. /**
  2713.  * fn int GUIAPI MessageBox (HWND hParentWnd, const char* pszText, const char* pszCaption, DWORD dwStyle)
  2714.  * brief Displays a message box within one, two, or three push buttons.
  2715.  *
  2716.  * This function displays a message box within one, two, or three buttons, and returns
  2717.  * the identifier of the button clicked by the user. You can pass a dwStyle argument 
  2718.  * with different values to control the number of buttons, the button titles, and so on.
  2719.  *
  2720.  * param hParentWnd The handle to the hosting main window.
  2721.  * param pszText The message text will be displayed in the message box.
  2722.  * param pszCaption The caption of the message box.
  2723.  * param dwStyle The style of the message box, can be one or'ed value of the following styles:
  2724.  *          - MB_OKn
  2725.  *            Create a message box within only one button whose title is "OK".
  2726.  *          - MB_OKCANCELn
  2727.  *            Create a message box within two buttons whose title are "OK" and "Cancel" respectively.
  2728.  *          - MB_YESNOn
  2729.  *            Create a message box within two buttons whose title are "Yes" and "No" respectively.
  2730.  *          - MB_RETRYCANCELn
  2731.  *            Create a message box within two buttons whose title are "Retry" and "Cancel" respectively.
  2732.  *          - MB_ABORTRETRYIGNOREn
  2733.  *            Create a message box within three buttons whose title are "Abort", "Retry" and "Ignore" respectively.
  2734.  *          - MB_YESNOCANCELn
  2735.  *            Create a message box within three buttons whose title are "Yes", "No" and "Cancel" respectively.
  2736.  *          - MB_CANCELASBACKn
  2737.  *            Title "Cancel" replaced with title "Previous".
  2738.  *          - MB_ICONHANDn
  2739.  *            Display a hand/stop icon in the message box.
  2740.  *          - MB_ICONQUESTIONn
  2741.  *            Display a question mark icon in the message box.
  2742.  *          - MB_ICONEXCLAMATIONn
  2743.  *            Display a exclamation mark icon in the message box.
  2744.  *          - MB_ICONASTERISKn
  2745.  *            Display an information icon in the message box.
  2746.  *          - MB_ICONINFORMATIONn
  2747.  *            Display an information icon in the message box.
  2748.  *          - MB_ICONSTOPn
  2749.  *            Display a hand/stop icon in the message box.
  2750.  *          - MB_DEFBUTTON1n
  2751.  *            The first push button acts as the default button.
  2752.  *          - MB_DEFBUTTON2n
  2753.  *            The second push button acts as the default button.
  2754.  *          - MB_DEFBUTTON3n
  2755.  *            The third push button acts as the default button.
  2756.  *          - MB_ALIGNCENTERn
  2757.  *            The message box is center aligned.
  2758.  *          - MB_ALIGNTOPLEFTn
  2759.  *            The message box is upper-left aligned.
  2760.  *          - MB_ALIGNBTMLEFTn
  2761.  *            The message box is lower-left aligned.
  2762.  *          - MB_ALIGNTOPRIGHTn
  2763.  *            The message box is upper-right aligned.
  2764.  *          - MB_ALIGNBTMRIGHTn
  2765.  *            The message box is lower-right aligned.
  2766.  *          - MB_BASEDONPARENTn
  2767.  *            A flag indicates that the alignments above are based on the hosting window, not the desktop. 
  2768.  *
  2769.  * return The identifier of the button clicked by user, can be one of the following values:
  2770.  *          - IDOKn
  2771.  *            The "OK" button clicked.
  2772.  *          - IDCANCELn
  2773.  *            The "Cancel" or "Previous" button clicked.
  2774.  *          - IDABORTn
  2775.  *            The "Abort" button clicked.
  2776.  *          - IDRETRYn
  2777.  *            The "Retry" button clicked.
  2778.  *          - IDIGNOREn
  2779.  *            The "Ignore" button clicked.
  2780.  *          - IDYESn
  2781.  *            The "Yes" button clicked.
  2782.  *          - IDNOn
  2783.  *            The "No" button clicked.
  2784.  *
  2785.  * note This function will call a GetSysText to translate the button titles to localized text.
  2786.  *
  2787.  * sa GetSysText, DialogBoxIndirectParam
  2788.  */
  2789. int GUIAPI MessageBox (HWND hParentWnd, const char* pszText, 
  2790.                       const char* pszCaption, DWORD dwStyle);
  2791. #endif /* _CTRL_STATIC && _CTRL_BUTTON */
  2792. /**
  2793.  * fn void GUIAPI MessageBeep (DWORD dwBeep)
  2794.  * brief Makes a sound of beep.
  2795.  *
  2796.  * This function makes a sound of beep. We ignore a dwBeep argument so far.
  2797.  *
  2798.  * param dwBeep The beep type, ignored so far.
  2799.  *
  2800.  * sa Beep, Ping, Tone
  2801.  */
  2802. void GUIAPI MessageBeep (DWORD dwBeep);
  2803.     /** @} end of dialog_fns */
  2804.     /** @} end of window_fns */
  2805.     /** @} end of fns */
  2806. #ifdef __cplusplus
  2807. }
  2808. #endif  /* __cplusplus */
  2809. #endif /* _MGUI_WINDOW_H */