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

GPS编程

开发平台:

C/C++

  1.  * a non-zero value to indicate an invalid chage so that the sheet can stop
  2.  * to close the sheet window. You can tell the pages which action should
  3.  * be taken by passing a value through the WPARAM parameter of the message.
  4.  * 
  5.  * code
  6.  * PSM_SHEETCMD
  7.  * WPARAM wParam;
  8.  * LPARAM lParam;
  9.  *
  10.  * wParam = (WPARAM)wParam;
  11.  * lParam = (LPARAM)lParam;
  12.  * endcode
  13.  *
  14.  * param wParam The WPARAM parameter of the MSG_SHEETCMD message.
  15.  * param lParam The LPARAM parameter of the MSG_SHEETCMD message.
  16.  *
  17.  * return The message has been broken by a page, the value will be
  18.  *         (page_index + 1); Zero indicates no page asserts an error.
  19.  */
  20. #define PSM_SHEETCMD              0xF1D2L
  21. #define PSM_MSGMAX              0xF1E0L
  22.     /** @} end of ctrl_propsheet_msgs */
  23.     /**
  24.      * defgroup ctrl_propsheet_ncs Notification codes of propertysheet control
  25.      * @{
  26.      */
  27. /**
  28.  * def PSN_ACTIVE_CHANGED
  29.  * brief Notifies the parent window that the active page of 
  30.  *        the propsheet has been changed.
  31.  */
  32. #define PSN_ACTIVE_CHANGED        0x01
  33.     /** @} end of ctrl_propsheet_ncs */
  34. int GUIAPI DefaultPageProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam);
  35.     /** @} end of ctrl_propsheet */
  36. #endif /* _CTRL_PROPSHEET*/
  37. /****** Combo Box Control *****************************************************/
  38. #ifdef _CTRL_COMBOBOX
  39.     /**
  40.      * defgroup ctrl_combobox ComboBox control
  41.      * @{
  42.      */
  43. /**
  44.  * def CTRL_COMBOBOX
  45.  * brief The class name of combobox control.
  46.  */
  47. #define CTRL_COMBOBOX       ("combobox")
  48.     /**
  49.      * defgroup ctrl_combobox_styles Styles of combobox control
  50.      * @{
  51.      */
  52. /**
  53.  * def CBS_SIMPLE
  54.  * brief Displays the list box at all times.
  55.  *
  56.  * The current selection in the list box is displayed in the edit control.
  57.  *
  58.  * note The argument a dwAddData of a CreateWindowEx function should be the
  59.  * expected height of the list box.
  60.  *
  61.  * code
  62.  * int listbox_height = 100;
  63.  *
  64.  * CreateWindowEx (CTRL_COMBOBOX, ..., listbox_height);
  65.  * endcode
  66.  */
  67. #define CBS_SIMPLE              0x0000L
  68. /**
  69.  * def CBS_AUTOSPIN
  70.  * brief Creates AutoSpin box.
  71.  *
  72.  * AutoSpin box has an input field with a spin button. The input field
  73.  * displays an integer, and you can click spin button to increase or
  74.  * decrease the value of the integer.
  75.  */
  76. #define CBS_AUTOSPIN            0x0001L
  77. /**
  78.  * def CBS_SPINLIST
  79.  * brief Creates SpinList box.
  80.  *
  81.  * SpinList box has an input field with a spin button. The input field
  82.  * displays some text, and you can click spin button to change the text.
  83.  * The candidate text string comes from the strings you add to the box.
  84.  */
  85. #define CBS_SPINLIST            0x0002L
  86. /**
  87.  * def CBS_DROPDOWNLIST
  88.  * brief Specifies a drop-down list box in the selection filed.
  89.  *
  90.  * note The argument a dwAddData of a CreateWindowEx function should be the
  91.  * expected height of the list box.
  92.  *
  93.  * code
  94.  * int listbox_height = 100;
  95.  *
  96.  * CreateWindowEx (CTRL_COMBOBOX, ..., listbox_height));
  97.  * endcode
  98.  */
  99. #define CBS_DROPDOWNLIST        0x0003L
  100. #define CBS_TYPEMASK            0x0007L
  101. /**
  102.  * def CBS_NOTIFY
  103.  * brief Notifies the parent window.
  104.  *
  105.  * Causes the combo box to notify the parent window 
  106.  * with a notification message.
  107.  */
  108. #define CBS_NOTIFY              0x0008L
  109. /**
  110.  * def CBS_SPINARROW_TOPBOTTOM
  111.  * brief The spin arrow
  112.  */
  113. #define CBS_SPINARROW_TOPBOTTOM 0x0010L
  114. /**
  115.  * def CBS_SPINARROW_LEFTRIGHT
  116.  * brief The spin arrow
  117.  */
  118. #define CBS_SPINARROW_LEFTRIGHT 0x0020L
  119. #define CBS_AUTOHSCROLL         0x0040L
  120. #define CBS_DISABLENOSCROLL     0x0080L
  121. /**
  122.  * def CBS_SORT
  123.  * brief Automatically sorts strings entered in the list box.
  124.  */
  125. #define CBS_SORT                0x0100L
  126. /**
  127.  * def CBS_AUTOLOOP
  128.  * brief Loops the value automatically if the type of combobox is CBS_AUTOSPIN.
  129.  */
  130. #define CBS_AUTOLOOP            0x0200L
  131. /**
  132.  * def CBS_EDITNOBORDER
  133.  * brief The edit box has no border.
  134.  */
  135. #define CBS_EDITNOBORDER        0x0400L
  136. /**
  137.  * def CBS_EDITBASELINE
  138.  * brief The edit box has base line.
  139.  */
  140. #define CBS_EDITBASELINE        0x0800L
  141. /**
  142.  * def CBS_READONLY
  143.  * brief The edit field is read-only.
  144.  */
  145. #define CBS_READONLY            0x1000L
  146. /**
  147.  * def CBS_UPPERCASE
  148.  * brief The edit field is uppercase.
  149.  */
  150. #define CBS_UPPERCASE           0x2000L
  151. /**
  152.  * def CBS_LOWERCASE
  153.  * brief The edit field is lowercase.
  154.  */
  155. #define CBS_LOWERCASE           0x4000L
  156. /**
  157.  * def CBS_AUTOFOCUS
  158.  * brief The edit field will gain the focus automatically.
  159.  */
  160. #define CBS_AUTOFOCUS           0x8000L
  161.     /** @} end of ctrl_combobox_styles */
  162.     /**
  163.      * defgroup ctrl_combobox_msgs Messages of combobox control
  164.      * @{
  165.      */
  166. /**
  167.  * def CB_GETEDITSEL
  168.  * brief Gets the starting and ending character positions of the current 
  169.  *        selection.
  170.  *
  171.  * An application sends a CB_GETEDITSEL message to get the starting and ending 
  172.  * character positions of the current selection in the edit control of a combo box.
  173.  *
  174.  * code
  175.  * CB_GETEDITSEL
  176.  * int start;
  177.  * int end;
  178.  *
  179.  * wParam = (WPARAM)&start;
  180.  * lParam = (LPARAM)&end;
  181.  * endcode
  182.  *
  183.  * param start Pointer to a 32-bit value that receives the starting
  184.  *           position of the selection.
  185.  * param end Pointer to a 32-bit value that receives the ending
  186.  *           position of the selection.
  187.  *
  188.  * note Not implemented yet.
  189.  */
  190. #define CB_GETEDITSEL               0xF140
  191. /**
  192.  * def CB_LIMITTEXT
  193.  * brief Limits the length of text in the edit control.
  194.  *
  195.  * An application sends a CB_LIMITTEXT message to limit the length of the text
  196.  * the user may type into the edit control of a combo box. 
  197.  *
  198.  * code
  199.  * CB_LIMITTEXT
  200.  * int newLimit;
  201.  *
  202.  * wParam = (WPARAM)newLimit;
  203.  * lParam = 0;
  204.  * endcode
  205.  *
  206.  * param newLimit Specifies the maximum number of characters the user can enter.
  207.  *
  208.  * return The return value is always zero.
  209.  */
  210. #define CB_LIMITTEXT                0xF141
  211. /**
  212.  * def CB_SETEDITSEL
  213.  * brief Sets the starting and ending character positions of the current 
  214.  *        selection.
  215.  *
  216.  * An application sends a CB_SETEDITSEL message to set the starting and ending 
  217.  * character positions of the current selection in the edit control of a combo box.
  218.  *
  219.  * code
  220.  * CB_SETEDITSEL
  221.  * int start;
  222.  * int end;
  223.  *
  224.  * wParam = (WPARAM)start;
  225.  * lParam = (LPARAM)end;
  226.  * endcode
  227.  *
  228.  * param start The starting position of the selection.
  229.  * param end The ending position of the selection.
  230.  *
  231.  * note Not implemented yet.
  232.  */
  233. #define CB_SETEDITSEL               0xF142
  234. /**
  235.  * def CB_ADDSTRING
  236.  * brief Adds a string to the list box of a combo box.
  237.  *
  238.  * An application sends a CB_ADDSTRING message to add a string to the list box
  239.  * of a combo box. 
  240.  *
  241.  * code
  242.  * CB_ADDSTRING
  243.  * char* string;
  244.  *
  245.  * wParam = 0;
  246.  * lParam = (LPARAM)string;
  247.  * endcode
  248.  *
  249.  * param string Pointer to the null-terminated string to be added.
  250.  *
  251.  * return The index of the new item on success, else the one of
  252.  *         the following error codes:
  253.  *
  254.  *         - CB_ERRSPACE    No memory can be allocated for new item.
  255.  *         - CB_ERR         Invalid passed arguments.
  256.  */
  257. #define CB_ADDSTRING                0xF143
  258. /**
  259.  * def CB_DELETESTRING
  260.  * brief Deletes a string in the list box of a combo box.
  261.  *
  262.  * An application sends a CB_DELETESTRING message to delete a string in the list box
  263.  * of a combo box. 
  264.  *
  265.  * code
  266.  * CB_DELETESTRING
  267.  * int index;
  268.  *
  269.  * wParam = (WPARAM)index;
  270.  * lParam = 0;
  271.  * endcode
  272.  *
  273.  * param index Specifies the index of the string to delete.
  274.  *
  275.  * return If succeed, return zero; otherwise CB_ERR.
  276.  */
  277. #define CB_DELETESTRING             0xF144
  278. #define CB_DIR                      0xF145
  279. /**
  280.  * def CB_GETCOUNT
  281.  * brief Retreives the number of items in the list box of a combo box.
  282.  *
  283.  * An application sends a CB_GETCOUNT message to retreive the number of items 
  284.  * in the list box of a combo box. 
  285.  *
  286.  * code
  287.  * CB_GETCOUNT
  288.  *
  289.  * wParam = 0;
  290.  * lParam = 0;
  291.  * endcode
  292.  *
  293.  * return The number of items in the list box.
  294.  */
  295. #define CB_GETCOUNT                 0xF146
  296. /**
  297.  * def CB_GETCURSEL
  298.  * brief Retreives the index of the currently selected item in the list box.
  299.  *
  300.  * An application sends a CB_GETCURSEL message to retreive the index of the 
  301.  * currently selected item in the list box of a combo box. 
  302.  *
  303.  * code
  304.  * CB_GETCURSEL
  305.  *
  306.  * wParam = 0;
  307.  * lParam = 0;
  308.  * endcode
  309.  *
  310.  * return The index of currently selected item in the list box if have one;
  311.  *         otherwise CB_ERR.
  312.  */
  313. #define CB_GETCURSEL                0xF147
  314. /**
  315.  * def CB_GETLBTEXT
  316.  * brief Retreives the string of an item in the list box.
  317.  *
  318.  * An application sends a CB_GETLBTEXT message to retreive the string of 
  319.  * a specified item in the list box of a combo box. 
  320.  *
  321.  * code
  322.  * CB_GETLBTEXT
  323.  * int index;
  324.  * char* string;
  325.  *
  326.  * wParam = (WPARAM)index;
  327.  * lParam = (LPARAM)string;
  328.  * endcode
  329.  *
  330.  * param index The index of the selected item.
  331.  * param string Pointer to the string buffer.
  332.  *
  333.  * return One of the following values:
  334.  *         - CB_OKAYn  Success.
  335.  *         - CB_ERRn   Invalid item index.
  336.  */
  337. #define CB_GETLBTEXT                0xF148
  338. /**
  339.  * def CB_GETLBTEXTLEN
  340.  * brief Gets the string length of an item in the list box.
  341.  *
  342.  * An application sends a CB_GETLBTEXTLEN message to get the string length
  343.  * of a specified item in the list box of a combo box. 
  344.  *
  345.  * code
  346.  * CB_GETLBTEXTLEN
  347.  * int index;
  348.  *
  349.  * wParam = (WPARAM)index;
  350.  * lParam = 0;
  351.  * endcode
  352.  *
  353.  * param index The index of the specified item.
  354.  *
  355.  * return The length of the string on success; otherwise CB_ERR.
  356.  */
  357. #define CB_GETLBTEXTLEN             0xF149
  358. /**
  359.  * def CB_INSERTSTRING
  360.  * brief Inserts a string to the list box of a combo box.
  361.  *
  362.  * An application sends a CB_INSERTSTRING message to insert a string to the list 
  363.  * box of a combo box. Unlike the CB_ADDSTRING message, the CB_INSERTSTRING message
  364.  * do not cause a list to be sorted.
  365.  *
  366.  * code
  367.  * CB_INSERTSTRING
  368.  * int index;
  369.  * char* string;
  370.  *
  371.  * wParam = (WPARAM)index;
  372.  * lParam = (LPARAM)string;
  373.  * endcode
  374.  *
  375.  * param index The index of the position at which to insert the string.
  376.  * param string Pointer to the null-terminated string to be added.
  377.  *
  378.  * return The index of the new item on success, else the one of
  379.  *         the following error codes:
  380.  *
  381.  *         - CB_ERRSPACE    No memory can be allocated for new item.
  382.  *         - CB_ERR         Invalid passed arguments.
  383.  */
  384. #define CB_INSERTSTRING             0xF14A
  385. /**
  386.  * def CB_RESETCONTENT
  387.  * brief Removes all items from the list box and edit control.
  388.  *
  389.  * An application sends a CB_RESETCONTENT message remove all items from the list
  390.  * box and edit control of a combo box. 
  391.  *
  392.  * code
  393.  * CB_RESETCONTENT
  394.  *
  395.  * wParam = 0;
  396.  * lParam = 0;
  397.  * endcode
  398.  *
  399.  * return Always be zero.
  400.  */
  401. #define CB_RESETCONTENT             0xF14B
  402. /**
  403.  * def CB_FINDSTRING
  404.  * brief Searchs the list box for an item beginning with the characters in a 
  405.  *         specified string.
  406.  *
  407.  * An application sends a CB_FINDSTRING message to search the list box for an 
  408.  * item beginning with the characters in a specified string.
  409.  *
  410.  * code
  411.  * CB_FINDSTRING
  412.  * int indexStart;
  413.  * char* string;
  414.  *
  415.  * wParam = (WPARAM)indexStart;
  416.  * lParam = (LPARAM)string;
  417.  * endcode
  418.  *
  419.  * param indexStart Index of the item preceding the first item to be searched.
  420.  * param string Pointer to the null-terminated string that contains the prefix
  421.  *             to search for.
  422.  *
  423.  * return The index of the matching item or CB_ERR to indicate not found.
  424.  */
  425. #define CB_FINDSTRING               0xF14C
  426. #define CB_SELECTSTRING             0xF14D
  427. /**
  428.  * def CB_SETCURSEL
  429.  * brief Selects a string in the list of a combo box.
  430.  *
  431.  * code
  432.  * CB_SETCURLSEL
  433.  * int index;
  434.  *
  435.  * wParam = (WPARAM)index;
  436.  * lParam = 0;
  437.  * endcode
  438.  *
  439.  * param index The index of the string to select. 
  440.  *
  441.  * return CB_OKAY on success; otherwise CB_ERR to indicate an invalid index.
  442.  */
  443. #define CB_SETCURSEL                0xF14E
  444. #define CB_SHOWDROPDOWN             0xF14F
  445. /**
  446.  * def CB_GETITEMADDDATA
  447.  * brief Retreives the application-supplied 32-bit value associated with the 
  448.  *         specified item.
  449.  *
  450.  * An application sends an CB_GETITEMADDDATA message to retrive the 32-bit data 
  451.  * value associated with with an item in the list box of the combo box.
  452.  *
  453.  * code
  454.  * CB_GETITEMADDDATA
  455.  * int index;
  456.  *
  457.  * wParam = (WPARAM)index;
  458.  * lParam = 0;
  459.  * endcode
  460.  *
  461.  * param index The index of the item.
  462.  *
  463.  * return The 32-bit data value associated with an item on success, otherwise
  464.  *         CB_ERR to indicate an error.
  465.  */
  466. #define CB_GETITEMADDDATA           0xF150
  467. /**
  468.  * def CB_SETITEMADDDATA
  469.  * brief Sets a 32-bit data value with the specified item.
  470.  * 
  471.  * An application sends an CB_SETITEMADDDATA message to associate a 32-bit data 
  472.  * value specified in the lParam parameter with an item in the list box that 
  473.  * is specified in the wParam parameter.
  474.  *
  475.  * code
  476.  * CB_SETITEMADDDATA
  477.  * int index;
  478.  * DWORD addData;
  479.  *
  480.  * wParam = (WPARAM)index;
  481.  * lParam = (LPARAM)addData;
  482.  * endcode
  483.  *
  484.  * param index The index of the specified item.
  485.  * param addData the 32-bit data value which will associated with the item.
  486.  *
  487.  * return One of the following values:
  488.  *          - CB_OKAYn         Success
  489.  *          - CB_ERRn          Invalid item index
  490.  */
  491. #define CB_SETITEMADDDATA              0xF151
  492. /**
  493.  * def CB_GETDROPPEDCONTROLRECT
  494.  * brief Retreives the screen coordinates of the dropdown list box of a combo box. 
  495.  *
  496.  * code
  497.  * CB_GETDROPPEDCONTROLRECT
  498.  * RECT *rect;
  499.  *
  500.  * wParam = 0;
  501.  * lParam = (LPARAM)rect;
  502.  * endcode
  503.  *
  504.  * param rect Pointer to the RECT structure used to save the coordinates.
  505.  */
  506. #define CB_GETDROPPEDCONTROLRECT    0xF152
  507. /**
  508.  * def CB_SETITEMHEIGHT
  509.  * brief Sets the height of all items of the list box in a combo box.
  510.  * 
  511.  * An application sends an CB_SETITEMHEIGHT message to set the height of 
  512.  * all items of the list box in a combo box.
  513.  *
  514.  * code
  515.  * CB_SETITEMHEIGHT
  516.  * int itemHeight;
  517.  *
  518.  * wParam = 0;
  519.  * lParam = (LPARAM)itemHeight;
  520.  * endcode
  521.  *
  522.  * param itemHeight New height of item of the list box.
  523.  *
  524.  * return The effective height of item of the list box.
  525.  */
  526. #define CB_SETITEMHEIGHT            0xF153
  527. /**
  528.  * def CB_GETITEMHEIGHT
  529.  * brief Gets the height of items of the list box in a combo box.
  530.  *
  531.  * code
  532.  * CB_GETITEMHEIGHT
  533.  *
  534.  * wParam = 0;
  535.  * lParam = 0;
  536.  * endcode
  537.  *
  538.  * return The height of item in the list box.
  539.  */
  540. #define CB_GETITEMHEIGHT            0xF154
  541. #define CB_SETEXTENDEDUI            0xF155
  542. #define CB_GETEXTENDEDUI            0xF156
  543. /**
  544.  * def CB_GETDROPPEDSTATE
  545.  * brief Determines whether the list box of a combo box is dropped down.
  546.  *
  547.  * code
  548.  * CB_GETIDROPSTATE
  549.  *
  550.  * wParam = 0;
  551.  * lParam = 0;
  552.  * endcode
  553.  *
  554.  * return If the list box is visible, the return value is TRUE; 
  555.  *         otherwise, it is FALSE.
  556.  */
  557. #define CB_GETDROPPEDSTATE          0xF157
  558. /**
  559.  * def CB_FINDSTRINGEXACT
  560.  * brief Searchs the list box for an item that matches the specified string. 
  561.  *
  562.  * An application sends a CB_FINDSTRINGEXACT message to search the list box for an 
  563.  * item that matches a specified string.
  564.  *
  565.  * code
  566.  * CB_FINDSTRINGEXACT
  567.  * int indexStart;
  568.  * char* string;
  569.  *
  570.  * wParam = (WPARAM)indexStart;
  571.  * lParam = (LPARAM)string;
  572.  * endcode
  573.  *
  574.  * param indexStart Index of the item preceding the first item to be searched.
  575.  * param string Pointer to the null-terminated string to search for.
  576.  *
  577.  * return The index of the matching item; otherwise CB_ERR to indicate not found.
  578.  */
  579. #define CB_FINDSTRINGEXACT          0xF158
  580. #define CB_SETLOCALE                0xF159
  581. #define CB_GETLOCALE                0xF15A
  582. #define CB_GETTOPINDEX              0xF15b
  583. #define CB_SETTOPINDEX              0xF15c
  584. #define CB_GETHORIZONTALEXTENT      0xF15d
  585. #define CB_SETHORIZONTALEXTENT      0xF15e
  586. #define CB_GETDROPPEDWIDTH          0xF15f
  587. #define CB_SETDROPPEDWIDTH          0xF160
  588. #define CB_INITSTORAGE              0xF161
  589. /**
  590.  * def CB_SETSPINFORMAT
  591.  * brief Sets the format string of value for CBS_AUTOSPIN type.
  592.  *
  593.  * code
  594.  * CB_SETSPINFORMAT
  595.  * const char* format;
  596.  *
  597.  * wParam = 0;
  598.  * lParam = (LPARAM)format;
  599.  * endcode
  600.  *
  601.  * param format A format string can be used by a sprintf function
  602.  *        to format an interger.
  603.  *
  604.  * return CB_OKAY on success; otherwise CB_ERR.
  605.  */
  606. #define CB_SETSPINFORMAT             0xF162
  607. /**
  608.  * def CB_SETSPINRANGE
  609.  * brief Determines the range of the spin box in a combo box.
  610.  *
  611.  * code
  612.  * CB_SETSPINRANGE
  613.  * int new_min;
  614.  * int new_max;
  615.  *
  616.  * wParam = (WPARAM)new_min;
  617.  * lParam = (LPARAM)new_max;
  618.  * endcode
  619.  *
  620.  * param new_min The new minimum value of the spin box.
  621.  * param new_max The new maximum value of the spin box.
  622.  *
  623.  * return CB_OKAY on success; otherwise CB_ERR to indicate invalid parameters.
  624.  */
  625. #define CB_SETSPINRANGE             0xF163
  626. /**
  627.  * def CB_GETSPINRANGE
  628.  * brief Gets the range of the spin box in a combo box.
  629.  *
  630.  * code
  631.  * CB_GETSPINRANGE
  632.  * int *spin_min;
  633.  * int *spin_max;
  634.  *
  635.  * wParam = (WPARAM)spin_min;
  636.  * lParam = (LPARAM)spin_max;
  637.  * endcode
  638.  *
  639.  * param spin_min The minimum value of the spin box.
  640.  * param spin_max The maximum value of the spin box.
  641.  *
  642.  * return Always be CB_OKAY.
  643.  */
  644. #define CB_GETSPINRANGE             0xF164
  645. /**
  646.  * def CB_SETSPINVALUE
  647.  * brief Determines the value of the spin box in a combo box.
  648.  *
  649.  * code
  650.  * CB_SETSPINVALUE
  651.  * int new_value;
  652.  *
  653.  * wParam = (WPARAM)new_value;
  654.  * lParam = 0;
  655.  * endcode
  656.  *
  657.  * param new_value The new value of the spin box.
  658.  *
  659.  * return CB_OKAY on success; otherwise CB_ERR to indicate invalid parameters.
  660.  */
  661. #define CB_SETSPINVALUE             0xF165
  662. /**
  663.  * def CB_GETSPINVALUE
  664.  * brief Gets the current value of the spin box in a combo box.
  665.  *
  666.  * code
  667.  * CB_GETSPINVALUE
  668.  *
  669.  * wParam = 0;
  670.  * lParam = 0;
  671.  * endcode
  672.  *
  673.  * return The current value of the spin box.
  674.  */
  675. #define CB_GETSPINVALUE             0xF166
  676. /**
  677.  * def CB_SETSPINPACE
  678.  * brief Determines the pace and the fast pace of the spin box in a combo box.
  679.  *
  680.  * code
  681.  * CB_SETSPINPACE
  682.  * int new_pace;
  683.  * int new_fastpace;
  684.  *
  685.  * wParam = (WPARAM)new_pace;
  686.  * lParam = (LPARAM)new_fastpace;
  687.  * endcode
  688.  *
  689.  * param new_pace The new pace value of the spin box.
  690.  * param new_fastpace The new fast pace value of the spin box.
  691.  *
  692.  * return Always be CB_OKAY.
  693.  */
  694. #define CB_SETSPINPACE              0xF167
  695. /**
  696.  * def CB_GETSPINPACE
  697.  * brief Gets the pace and the fast pace of the spin box in a combo box.
  698.  *
  699.  * code
  700.  * CB_GETSPINPACE
  701.  * int *spin_pace;
  702.  * int *spin_fastpace;
  703.  *
  704.  * wParam = (WPARAM)spin_pace;
  705.  * lParam = (LPARAM)spin_fastpace;
  706.  * endcode
  707.  *
  708.  * param spin_pace Pointer to the data to retreive the new pace value of the spin box.
  709.  * param spin_fastpace Pointer to the data to retreive the new fast pace value of the spin box.
  710.  *
  711.  * return Always be CB_OKAY.
  712.  */
  713. #define CB_GETSPINPACE              0xF168
  714. /**
  715.  * def CB_SPIN
  716.  * brief Spins the value of the spin box or auto spin box.
  717.  *
  718.  * code
  719.  * CB_SPIN
  720.  *
  721.  * int direct;
  722.  *
  723.  * wParam = direct;
  724.  * lParam = 0;
  725.  * endcode
  726.  *
  727.  * param direct Indicats the direct of the spin. Zero means up, non-zero down.
  728.  *
  729.  * return Always be CB_OKAY.
  730.  */
  731. #define CB_SPIN                     0xF170
  732. /**
  733.  * def CB_FASTSPIN
  734.  * brief Fast spins the value of the spin box or auto spin box.
  735.  *
  736.  * code
  737.  * CB_FASTSPIN
  738.  *
  739.  * int direct
  740.  *
  741.  * wParam = direct;
  742.  * lParam = 0;
  743.  * endcode
  744.  *
  745.  * param direct Indicats the direct of the spin. Zero means up, non-zero down.
  746.  *
  747.  * return Always be CB_OKAY.
  748.  */
  749. #define CB_FASTSPIN                 0xF171
  750. /**
  751.  * def CB_SETSTRCMPFUNC
  752.  * brief Sets the STRCMP function used to sort items.
  753.  *
  754.  * An application sends a CB_SETSTRCMPFUNC message to set a 
  755.  * new STRCMP function to sort items in the combo-box.
  756.  *
  757.  * Note that you should send this message before adding 
  758.  * any item to the combo-box control.
  759.  *
  760.  * code
  761.  * static int my_strcmp (const char* s1, const char* s2, size_t n)
  762.  * {
  763.  *      ...
  764.  *      return 0;
  765.  * }
  766.  *
  767.  * CB_SETSTRCMPFUNC
  768.  *
  769.  * wParam = 0;
  770.  * lParam = (LPARAM) my_strcmp;
  771.  * endcode
  772.  *
  773.  * param my_strcmp Your own function to compare two strings.
  774.  *
  775.  * return One of the following values:
  776.  *          - CB_OKAYn
  777.  *              Success
  778.  *          - CB_ERRn
  779.  *              This combobox has no list box or it is not an empty list box.
  780.  */
  781. #define CB_SETSTRCMPFUNC            0xF172
  782. /**
  783.  * def CB_GETCHILDREN
  784.  * brief Gets the handles to the children of a ComboBox control.
  785.  *
  786.  * An application sends a CB_GETCHILDREN message to get the handles 
  787.  * to the children of a ComboBox control.
  788.  *
  789.  * code
  790.  * CB_GETCHILDREN
  791.  *
  792.  * HWND *wnd_edit, *wnd_listbox;
  793.  *
  794.  * wParam = (WPARAM)wnd_edit;
  795.  * lParam = (LPARAM)wnd_listbox;
  796.  * endcode
  797.  *
  798.  * param wnd_edit The buffer saving the handle to the edit box of the ComboBox control.
  799.  * param wnd_list The buffer saving the handle to the list box of the ComboBox control.
  800.  *        If the ComboBox have type of CBS_AUTOSPIN, handle to the list box will be 0.
  801.  *
  802.  * return Always be CB_OKAY.
  803.  */
  804. #define CB_GETCHILDREN              0xF173
  805. #define CB_MSGMAX                   0xF180
  806.     /** @} end of ctrl_combobox_msgs */
  807. /* Combo Box return value */
  808. #define CB_OKAY                 LB_OKAY
  809. #define CB_ERR                  LB_ERR
  810. #define CB_ERRSPACE             LB_ERRSPACE
  811.     /**
  812.      * defgroup ctrl_combobox_ncs Notification codes of combobox control
  813.      * @{
  814.      */
  815. #define CBN_ERRSPACE            255
  816. /**
  817.  * def CBN_SELCHANGE
  818.  * brief Notifies the change of the current selection.
  819.  *
  820.  * The CBN_SELCHANGE notification code is sent when the user changes the current
  821.  * selection in the list box of a combo box.
  822.  */
  823. #define CBN_SELCHANGE           1
  824. /**
  825.  * def CBN_DBLCLK
  826.  * brief Notifies the user has double clicked an item.
  827.  *
  828.  * A combo box created with the CBS_NOTIFY style sends an CBN_DBLCLK notification 
  829.  * message to its parent window when the user double-clicks a string in its listbox.
  830.  */
  831. #define CBN_DBLCLK              2
  832. /**
  833.  * def CBN_SETFOCUS
  834.  * brief Notifies the box has gained the input focus.
  835.  */
  836. #define CBN_SETFOCUS            3
  837. /**
  838.  * def CBN_KILLFOCUS
  839.  * brief Notifies the box has lost the input focus.
  840.  */
  841. #define CBN_KILLFOCUS           4
  842. /**
  843.  * def CBN_EDITCHANGE
  844.  * brief Notifies the change of the text in the edit control.
  845.  *
  846.  * The CBN_EDITCHANGE notification code is sent when the user has taken an action
  847.  * that may have altered the text in the edit control portion of a combo box.
  848.  */
  849. #define CBN_EDITCHANGE          5
  850. #define CBN_EDITUPDATE          6
  851. /**
  852.  * def CBN_DROPDOWN
  853.  * brief Notifies the list box has been dropped down.
  854.  */
  855. #define CBN_DROPDOWN            7
  856. /**
  857.  * def CBN_CLOSEUP
  858.  * brief Notifies the list box has been closed up.
  859.  */
  860. #define CBN_CLOSEUP             8
  861. /**
  862.  * def CBN_SELENDOK
  863.  * brief Notifies the selection of a list item.
  864.  *
  865.  * The CBN_SELENDOK notification code is sent when the user has 
  866.  * selected a list item.
  867.  */
  868. #define CBN_SELENDOK            9
  869. /**
  870.  * def CBN_SELENDCANCEL
  871.  * brief Notifies that the selection of a list item is ignored.
  872.  *
  873.  * The CBN_SELENDCANCEL notification code is sent when the user has selected a list
  874.  * item but then selects another control or closes the dialog box.
  875.  */
  876. #define CBN_SELENDCANCEL        10
  877.     /** @} end of ctrl_combobox_ncs */
  878.     /** @} end of ctrl_combobox */
  879. #endif /* _CTRL_COMBOBOX */
  880.   
  881. /************************** Tool Bar control **********************************/
  882. #ifdef _CTRL_TOOLBAR
  883.     /**
  884.      * defgroup ctrl_toolbar ToolBar control
  885.      *
  886.      * note The argument a dwAddData of a CreateWindowEx function should specify
  887.      *       the height and the width of item on toolbar. 
  888.      * note This control is reserved only for compatibility, new applications 
  889.      *       should use the new tool bar control instead (NewToolBar).
  890.      *
  891.      * code
  892.      * int item_height = 16;
  893.      * int item_width = 16;
  894.      *
  895.      * CreateWindowEx (CTRL_TOOLBAR, ..., MAKELONG (item_height, item_width));
  896.      * endcode
  897.      *
  898.      * sa ctrl_newtoolbar
  899.      *
  900.      * @{
  901.      */
  902. /**
  903.  * def CTRL_TOOLBAR
  904.  * brief The class name of toolbar control.
  905.  */
  906. #define CTRL_TOOLBAR            ("toolbar")
  907. /** Structure of the toolbar item info */
  908. typedef struct _TOOLBARITEMINFO
  909. {
  910.     /** Reserved, do not use. */
  911.     int    insPos;
  912.     /**
  913.      * Identifier of the item. When the user clicked the item, this control
  914.      * will send a notification message to the parent window
  915.      * with the notification code to be equal to this identifier.
  916.      */
  917.     int    id;
  918.     /** Path of the bitmap for normal state of the item */
  919.     char   NBmpPath[MAX_PATH+10];
  920.     /** Path of the bitmap for hilighted state of the item */
  921.     char   HBmpPath[MAX_PATH+10];
  922.     /** Path of the bitmap for down state of the item */
  923.     char   DBmpPath[MAX_PATH+10];
  924.     /** Additional data of the item */
  925.     DWORD  dwAddData;
  926. } TOOLBARITEMINFO;
  927. /**
  928.  * var typedef TOOLBARITEMINFO* PTOOLBARITEMINFO;
  929.  * brief Data type of the pointer to a TOOLBARITEMINFO.
  930.  */
  931. typedef TOOLBARITEMINFO* PTOOLBARITEMINFO;
  932.     /**
  933.      * defgroup ctrl_toolbar_msgs Messages of toolbar control
  934.      *
  935.      * @{
  936.      */
  937. /**
  938.  * def TBM_ADDITEM
  939.  * brief Adds an item to a toolbar.
  940.  *
  941.  * code
  942.  * TBM_ADDITEM
  943.  * TOOLBARITEMINFO *ptbii;
  944.  *
  945.  * wParam = 0;
  946.  * lParam = (LPARAM)ptbii;
  947.  * endcode
  948.  *
  949.  * param ptbii Pointer to the data storing the toolbar item info.
  950.  */
  951. #define TBM_ADDITEM             0xFE00
  952. #define TBM_MSGMAX              0xFE10
  953.     /** @} end of ctrl_toolbar_msgs */
  954.     /** @} end of ctrl_toolbar */
  955. #endif /* _CTRL_TOOLBAR */
  956. /************************** New Tool Bar control **********************************/
  957. #ifdef _CTRL_NEWTOOLBAR
  958.     /**
  959.      * defgroup ctrl_newtoolbar NewToolBar control
  960.      *
  961.      * note You should pass information of the control through 
  962.      * the argument a dwAddData of a CreateWindowEx function.
  963.      *
  964.      * code
  965.      * NTBINFO ntb_info;
  966.      *
  967.      * CreateWindowEx (CTRL_TOOLBAR, ..., (DWORD) &ntb_info);
  968.      * endcode
  969.      *
  970.      * sa NTBINFO
  971.      *
  972.      * @{
  973.      */
  974. /**
  975.  * def CTRL_NEWTOOLBAR
  976.  * brief The class name of newtoolbar control.
  977.  */
  978. #define CTRL_NEWTOOLBAR            ("newtoolbar")
  979. /** Structure of the newtoolbar control information */
  980. typedef struct _NTBINFO
  981. {
  982.     /** Images for displaying tool bar item. */
  983.     PBITMAP image;
  984.     /** Number of bitmap cells in the image. */
  985.     int nr_cells;
  986.     /**
  987.      * Number of cell columns in the image.
  988.      * It should be one of the following values:
  989.      *  - 0, 4n
  990.      *  Four rows, the cells have normal, highlight, pushed, and disabled states.
  991.      *  - 1n
  992.      *  The cells have only normal state.
  993.      *  - 2n
  994.      *  The cells have normal and highlight states.
  995.      *  - 3n
  996.      *  The cells have normal, highlight, and pushed states.
  997.      */
  998.     int nr_cols;
  999.     /**
  1000.      * Width of bitmap cell. If w_cell is zero, it will be 
  1001.      * equal to (width_of_image / nr_cols).
  1002.      */
  1003.     int w_cell;
  1004.     /**
  1005.      * Height of bitmap cell. If h_cell is zero, it will be 
  1006.      * equal to (height_of_image / nr_cells).
  1007.      */
  1008.     int h_cell;
  1009.     
  1010. } NTBINFO;
  1011. /**
  1012.  * var typedef void (* HOTSPOTPROC)(HWND hwnd, int id, const RECT* cell, int x, int y)
  1013.  * brief Type of the hotspot-clicked callback procedure.
  1014.  *
  1015.  * param hwnd  The handle to the control.
  1016.  * param id    The identifier of the button in the NewToolBar control.
  1017.  * param cell  The rectangle of the button in screen coordinates.
  1018.  * param x     The x-coordinate of the mouse down point.
  1019.  * param y     THe y-coordinate of the mouse down point.
  1020.  */
  1021. typedef void (* HOTSPOTPROC)(HWND hwnd, int id, const RECT* cell, int x, int y);
  1022. #define NTB_TEXT_LEN        15
  1023. #define NTB_TIP_LEN         255
  1024. #define NTBIF_PUSHBUTTON    0x0001
  1025. #define NTBIF_HOTSPOTBUTTON  0x0002
  1026. #define NTBIF_SEPARATOR     0x0003
  1027. #define NTBIF_CHECKBUTTON   0x0005
  1028. #define NTBIF_NEWLINE       0x0008
  1029. #define NTBIF_TYPEMASK      0x000F
  1030. #define NTBIF_DISABLED      0x0010
  1031. #define NTBIF_CHECKED       0x0020
  1032. #define MTB_WHICH_FLAGS     0x0001
  1033. #define MTB_WHICH_ID        0x0002
  1034. #define MTB_WHICH_TEXT      0x0004
  1035. #define MTB_WHICH_TIP       0x0008
  1036. #define MTB_WHICH_CELL      0x0010
  1037. #define MTB_WHICH_HOTSPOT   0x0020
  1038. #define MTB_WHICH_ADDDATA   0x0040
  1039. /** Structure of the new toolbar item info */
  1040. typedef struct _NTBITEMINFO
  1041. {
  1042.     /**
  1043.      * Which fields are valid when sets/retrives the item information 
  1044.      * (ignored when add item). It can be OR'd with the following values:
  1045.      *
  1046.      *  - MTB_WHICH_FLAGSn     The flags is valid.
  1047.      *  - MTB_WHICH_IDn        The identifier is valid.
  1048.      *  - MTB_WHICH_TEXTn      The text is valid.
  1049.      *  - MTB_WHICH_TIPn       The tip text is valid.
  1050.      *  - MTB_WHICH_CELLn      The bitmap cell index is valid.
  1051.      *  - MTB_WHICH_HOTSPOTn   The hotspot rect is valid.
  1052.      *  - MTB_WHICH_ADDDATAn   The additional data is valid.
  1053.      */
  1054.     DWORD       which;
  1055.     /**
  1056.      * Flags of the item. It can be OR'd with the following values:
  1057.      *
  1058.      *  - NTBIF_PUSHBUTTONn    The item is a normal push button.
  1059.      *  - NTBIF_CHECKBUTTONn   The item is a normal check button.
  1060.      *  - NTBIF_NEWLINEn       The item is a newline tag.
  1061.      *  - NTBIF_HOTSPOTBUTTONn The item is a menu button with hotspot.
  1062.      *  - NTBIF_SEPARATORn     The item is a separator.
  1063.      *  - NTBIF_DISABLEDn      The item is disabled.
  1064.      */
  1065.     DWORD       flags;
  1066.     /**
  1067.      * Identifier of the item. When the user clicked the item, this control
  1068.      * will send a notification message to the parent window
  1069.      * with the notification code to be equal to this identifier.
  1070.      */
  1071.     int         id;
  1072.     /**
  1073.      * Text of the item. This text will be displayed under the bitmap
  1074.      * if the control have NTBS_WITHTEXT style.
  1075.      */
  1076.     char*       text;
  1077.     /** Tooltip of the item, not used, reserved. */
  1078.     char*       tip;
  1079.     /** Index of bitmap cell. */
  1080.     int         bmp_cell;
  1081.     /** Hotpot-clicked callback procedure for menubutton. */
  1082.     HOTSPOTPROC  hotspot_proc;
  1083.     /** Rectangle region of hotspot in the cell. */
  1084.     RECT        rc_hotspot;
  1085.     /** Additional data of the item */
  1086.     DWORD       add_data;
  1087. } NTBITEMINFO;
  1088. /**
  1089.  * var PNTBITEMINFO
  1090.  * brief Data type of pointer to a NTBITEMINFO;
  1091.  */
  1092. typedef NTBITEMINFO* PNTBITEMINFO;
  1093.     /**
  1094.      * defgroup ctrl_newtoolbar_styles Styles of NewToolBar control
  1095.      * @{
  1096.      */
  1097. /**
  1098.  * def NTBS_WITHTEXT 
  1099.  * brief Displays text with the item bitmap. 
  1100.  */
  1101. #define NTBS_WITHTEXT               0x000000001L
  1102. /**
  1103.  * def NTBS_TEXTRIGHT
  1104.  * brief Displays text at the right side of the item bitmap. 
  1105.  */
  1106. #define NTBS_TEXTRIGHT              0x000000002L
  1107. /**
  1108.  * def NTBS_DRAWSTATES
  1109.  * brief Draws the button states with 3D frame, and does not
  1110.  *        use the highlight, pushed and disabled bitmap cell.
  1111.  */
  1112. #define NTBS_DRAWSTATES             0x000000004L
  1113. /**
  1114.  * def NTBS_DRAWSEPARATOR
  1115.  * brief Draws the separator bar.
  1116.  */
  1117. #define NTBS_DRAWSEPARATOR          0x000000008L
  1118. /**
  1119.  * def NTBS_HORIZONTAL
  1120.  * brief The NewToolbar will be displayed horizontally.
  1121.  */
  1122. #define NTBS_HORIZONTAL             0x00000000L
  1123. /**
  1124.  * def NTBS_VERTICAL
  1125.  * brief The NewToolbar will be displayed vertically.
  1126.  */
  1127. #define NTBS_VERTICAL               0x00000010L
  1128. /**
  1129.  *
  1130.  * def NTBS_MULTLINE
  1131.  * brief The Newtoolbar item will be displayed in several lines.
  1132.  * In this style , your should define the toolbar RECT in CreateWindwEx.
  1133.  */
  1134. #define NTBS_MULTLINE               0x00000020L
  1135.     /** @} end of ctrl_newtoolbar_styles */
  1136.     /**
  1137.      * defgroup ctrl_newtoolbar_msgs Messages of NewToolBar control
  1138.      * @{
  1139.      */
  1140. #define NTB_OKAY        0
  1141. #define NTB_ERR         (-1)
  1142. #define NTB_ERR_SPACE   (-2)
  1143. #define NTB_ERR_DUPID   (-3)
  1144. /**
  1145.  * def NTBM_ADDITEM
  1146.  * brief Adds an item to a newtoolbar.
  1147.  *
  1148.  * code
  1149.  * TBM_ADDITEM
  1150.  * NTBITEMINFO *ntbii;
  1151.  *
  1152.  * wParam = 0;
  1153.  * lParam = (LPARAM)ntbii;
  1154.  * endcode
  1155.  *
  1156.  * param ntbii Pointer to the data storing the newtoobar item info.
  1157.  *
  1158.  * return NTB_OKAY on success, else one of the following values:
  1159.  *      - NTB_ERR_SPACEn No enongh space to allocate memory for new item.
  1160.  *      - NTB_ERR_DUPIDn Duplicated identifier with an existed item.
  1161.  */
  1162. #define NTBM_ADDITEM            0xFE00
  1163. /**
  1164.  * def NTBM_GETITEM
  1165.  * brief Retrives the information of an item in a newtoolbar control.
  1166.  *
  1167.  * code
  1168.  * TBM_GETITEM
  1169.  * int id;
  1170.  * NTBITEMINFO *ntbii;
  1171.  *
  1172.  * wParam = id;
  1173.  * lParam = (LPARAM)ntbii;
  1174.  * endcode
  1175.  *
  1176.  * param id The identifier of the item.
  1177.  * param ntbii Pointer to the data storing the newtoobar item info.
  1178.  *
  1179.  * return NTB_OKAY on success, else NTB_ERR.
  1180.  */
  1181. #define NTBM_GETITEM            0xFE01
  1182. /**
  1183.  * def NTBM_SETITEM
  1184.  * brief Sets the information of an item in a newtoolbar control.
  1185.  *
  1186.  * code
  1187.  * TBM_SETITEM
  1188.  * int id;
  1189.  * NTBITEMINFO ntbii;
  1190.  *
  1191.  * wParam = id;
  1192.  * lParam = (LPARAM)&ntbii;
  1193.  * endcode
  1194.  *
  1195.  * param id The identifier of the item.
  1196.  * param ntbii The structure for storing the newtoobar item info.
  1197.  *
  1198.  * return NTB_OKAY on success, else NTB_ERR.
  1199.  */
  1200. #define NTBM_SETITEM            0xFE02
  1201. /**
  1202.  * def NTBM_ENABLEITEM
  1203.  * brief Enables/Disables an item in a newtoolbar control.
  1204.  *
  1205.  * code
  1206.  * NTBM_ENABLEITEM
  1207.  * int id;
  1208.  * BOOL enable;
  1209.  *
  1210.  * wParam = id;
  1211.  * lParam = enable;
  1212.  * endcode
  1213.  *
  1214.  * param id The identifier of the item.
  1215.  * param enable True to enable item; false to disable item.
  1216.  *
  1217.  * return NTB_OKAY on success, else NTB_ERR.
  1218.  */
  1219. #define NTBM_ENABLEITEM         0xFE03
  1220. /**
  1221.  * def NTBM_SETBITMAP
  1222.  * brief Sets the bitmap of  a newtoolbar control.
  1223.  *
  1224.  * code
  1225.  * NTBM_SETBITMAP
  1226.  * NTBINFO ntbi;
  1227.  *
  1228.  * wParam = 0;
  1229.  * lParam = (LPARAM)&ntbi;
  1230.  * endcode
  1231.  *
  1232.  * param ntbi  The structure for storing the newtoobar info.
  1233.  *
  1234.  * return NTB_OKAY on success, else NTB_ERR.
  1235.  */
  1236. #define NTBM_SETBITMAP          0xFE04
  1237. #define NTBM_MSGMAX             0xFE10
  1238.     /** @} end of ctrl_newtoolbar_msgs */
  1239.     /** @} end of ctrl_newtoolbar */
  1240. #endif /* _CTRL_NEWTOOLBAR */
  1241. /************************** Menu Button control ********************************/
  1242. #ifdef _CTRL_MENUBUTTON
  1243.     /**
  1244.      * defgroup ctrl_menubutton MenuButton control
  1245.      * @{
  1246.      */
  1247. /**
  1248.  * def CTRL_MENUBTN
  1249.  * brief The class name of menubutton control.
  1250.  */
  1251. #define CTRL_MENUBTN        ("menubutton")
  1252. /**
  1253.  * def CTRL_MENUBUTTON
  1254.  * brief The class name of menubutton control.
  1255.  */
  1256. #define CTRL_MENUBUTTON     ("menubutton")
  1257. /* Menu Button return value */
  1258. #define MB_OKAY                 0
  1259. #define MB_ERR                  -1
  1260. #define MB_INV_ITEM             -2
  1261. #define MB_ERR_SPACE            -3
  1262. /* struct used by parent to add/retrive item */
  1263. #define MB_WHICH_TEXT           0x01
  1264. #define MB_WHICH_BMP            0x02
  1265. #define MB_WHICH_ATTDATA        0x04
  1266. /** Structure of the menubutton item */
  1267. typedef struct _MENUBUTTONITEM
  1268. {
  1269.     /**
  1270.      * Which fields are valid when sets/retrives the item information 
  1271.      * (ignored when add item). It can be OR'd with the following values:
  1272.      *
  1273.      *  - MB_WHICH_TEXT The a text field is valid.
  1274.      *  - MB_WHICH_BMP The a bmp field is valid.
  1275.      *  - MB_WHICH_ATTDATA The a data field is valid.
  1276.      */
  1277.     DWORD           which;
  1278.     /** Item string */
  1279.     const char*     text;
  1280.     /** Item bitmap */
  1281.     PBITMAP         bmp;
  1282.     /** Attached data */
  1283.     DWORD           data;
  1284. } MENUBUTTONITEM;
  1285. /**
  1286.  * var typedef MENUBUTTONITEM* PMENUBUTTONITEM;
  1287.  * brief Data type of the pointer to a MENUBUTTONITEM.
  1288.  */
  1289. typedef MENUBUTTONITEM* PMENUBUTTONITEM;
  1290.     /**
  1291.      * defgroup ctrl_menubutton_styles Styles of menubutton control
  1292.      * @{
  1293.      */
  1294. /**
  1295.  * def MBS_SORT
  1296.  * brief If this bit is set, the items listed in the control 
  1297.  * are displayed in a specified order.  
  1298.  */
  1299. #define MBS_SORT                0x0001
  1300. /**
  1301.  * def MBS_LEFTARROW
  1302.  * brief The menu pull-down arrow will be display at the left of the text.
  1303.  */
  1304. #define MBS_LEFTARROW           0x0002
  1305. /**
  1306.  * def MBS_NOBUTTON
  1307.  * brief The control have not push button.
  1308.  */
  1309. #define MBS_NOBUTTON            0x0004
  1310. /**
  1311.  * def MBS_ALIGNLEFT
  1312.  * brief The text on menubutton is left-align (default).
  1313.  */
  1314. #define MBS_ALIGNLEFT           0x0000
  1315. /**
  1316.  * def MBS_ALIGNRIGHT
  1317.  * brief The text on menubutton is right-align.
  1318.  */
  1319. #define MBS_ALIGNRIGHT          0x0010
  1320. /**
  1321.  * def MBS_ALIGNCENTER
  1322.  * brief The text on menubutton is center-align.
  1323.  */
  1324. #define MBS_ALIGNCENTER         0x0020
  1325. #define MBS_ALIGNMASK           0x00F0
  1326.     /** @} end of ctrl_menubutton_styles */
  1327.     /**
  1328.      * defgroup ctrl_menubutton_msgs Messages of menubutton control
  1329.      * @{
  1330.      */
  1331. /**
  1332.  * def MBM_ADDITEM
  1333.  * brief Sends to the control to add an item to the menu list.
  1334.  *
  1335.  * code
  1336.  * MBM_ADDITEM
  1337.  * int pos;
  1338.  * MENUBUTTONITEM newitem;
  1339.  *
  1340.  * wParam = (WPARAM)pos;
  1341.  * lParam = (LPARAM)&newitem;
  1342.  * endcode
  1343.  *
  1344.  * param pos The position at which to add the item. If the control
  1345.  *        was created with the style of a MBS_SORT, this parameter
  1346.  *        will be ignored. If this parameter is less than 0, 
  1347.  *        the new item will be append to the tail of the menu list.
  1348.  * param newitem Pointer to the menubutton item info structure.
  1349.  *
  1350.  * return The position at which the item has been added, i.e.,
  1351.  *         the index of the added item if success. Otherwise, 
  1352.  *         the following error code will be returned:
  1353.  *
  1354.  *        - MB_ERR_SPACEn  No memory can be allocated for new item.
  1355.  */
  1356. #define MBM_ADDITEM                 0xF200
  1357. /**
  1358.  * def MBM_DELITEM
  1359.  * brief Sends to the control to delete an item in the menu list.
  1360.  *
  1361.  * code
  1362.  * MBM_DELETEITEM
  1363.  * int delete;
  1364.  *
  1365.  * wParam = (WPARAM)delete;
  1366.  * lParam = 0;
  1367.  * endcode
  1368.  *
  1369.  * param delete The index of the item to be deleted.
  1370.  *
  1371.  * return MB_OKAY if success, else MB_INV_ITEM to indicate valid index.
  1372.  */
  1373. #define MBM_DELITEM                 0xF201
  1374. /**
  1375.  * def MBM_RESETCTRL
  1376.  * brief Sends to the control to remove all items in the menu list.
  1377.  *
  1378.  * code
  1379.  * MBM_RESETCTRL
  1380.  *
  1381.  * wParam = 0;
  1382.  * lParam = 0;
  1383.  * endcode
  1384.  *
  1385.  * return Always be zero.
  1386.  */
  1387. #define MBM_RESETCTRL               0xF202
  1388. /**
  1389.  * def MBM_SETITEMDATA
  1390.  * brief Sends to the control to set the data of a specific item.
  1391.  *
  1392.  * code
  1393.  * MBM_SETITEMDATA
  1394.  * int index;
  1395.  * PMENUBUTTONITEM pmbi;
  1396.  *
  1397.  * wParam = (WPARAM)index;
  1398.  * lParam = (LPARAM)pmbi;
  1399.  * endcode
  1400.  *
  1401.  * param index The index of the item to be altered.
  1402.  * param pmbi Pointer to the MENUBUTTONITEM structure that stores the new 
  1403.  *         menubutton item data.
  1404.  *
  1405.  * return MB_OKAY if success, otherwise will be one of the following error codes:
  1406.  *
  1407.  *          - MB_INV_ITEMn     Indicate that the index you passed is valid.
  1408.  *          - MB_ERR_SPACEn    No memory can be allocated for new item data.
  1409.  * return 
  1410.  */
  1411. #define MBM_SETITEMDATA             0xF203
  1412. /**
  1413.  * def MBM_GETITEMDATA
  1414.  * brief Sends to the control to retrive the data of a specific item.
  1415.  *
  1416.  * code
  1417.  * MBM_GETITEMDATA
  1418.  * int index;
  1419.  * PMENUBUTTONITEM pmbi;
  1420.  *
  1421.  * wParam = (WPARAM)index;
  1422.  * lParam = (LPARAM)pmbi;
  1423.  * endcode
  1424.  *
  1425.  * param index The index of the specific item.
  1426.  * param pmbi Pointer to the MENUBUTTONITEM structure for storing the 
  1427.  *         menubutton item data.
  1428.  *
  1429.  * return MB_OKAY if success, otherwise MB_INV_ITEM to indicate invalid index.
  1430.  */
  1431. #define MBM_GETITEMDATA             0xF204
  1432. /**
  1433.  * def MBM_GETCURITEM
  1434.  * brief Sends to get the index of the current selected item.
  1435.  *
  1436.  * code
  1437.  * MBM_GETCURITEM
  1438.  *
  1439.  * wParam = 0;
  1440.  * lParam = 0;
  1441.  * endcode
  1442.  *
  1443.  * return The index of the current selected item. If there is no seleted
  1444.  *         item, MB_INV_ITEM will be returned.
  1445.  */
  1446. #define MBM_GETCURITEM              0xF206
  1447. /**
  1448.  * def MBM_SETCURITEM
  1449.  * brief Sends to Set the the current selected item based on index.
  1450.  *
  1451.  * code
  1452.  * MBM_SETCURITEM
  1453.  * int new;
  1454.  *
  1455.  * wParam = (WPARAM)new;
  1456.  * lParam = 0;
  1457.  * endcode
  1458.  *
  1459.  * param new The index to be the current item.
  1460.  *
  1461.  * return The index of the old selected item.
  1462.  */
  1463. #define MBM_SETCURITEM              0xF207
  1464. /**
  1465.  * def MBM_SETSTRCMPFUNC
  1466.  * brief Sets the STRCMP function used to sort items.
  1467.  *
  1468.  * An application sends a MBM_SETSTRCMPFUNC message to set a 
  1469.  * new STRCMP function to sort items in the menubutton.
  1470.  *
  1471.  * Note that you should send this message before adding 
  1472.  * any item to the menubutton control.
  1473.  *
  1474.  * code
  1475.  * static int my_strcmp (const char* s1, const char* s2, size_t n)
  1476.  * {
  1477.  *      ...
  1478.  *      return 0;
  1479.  * }
  1480.  *
  1481.  * MBM_SETSTRCMPFUNC
  1482.  *
  1483.  * wParam = 0;
  1484.  * lParam = (LPARAM) my_strcmp;
  1485.  * endcode
  1486.  *
  1487.  * param my_strcmp Your own function to compare two strings.
  1488.  *
  1489.  * return One of the following values:
  1490.  *          - MB_OKAYn     Success
  1491.  *          - MB_ERRn      Not an empty menubutton
  1492.  */
  1493. #define MBM_SETSTRCMPFUNC           0xF208
  1494. #define MBM_MSGMAX                  0xF210
  1495.     /** @} end of ctrl_menubutton_msgs */
  1496.     /**
  1497.      * defgroup ctrl_menubutton_ncs Notification codes of menubutton control
  1498.      * @{
  1499.      */
  1500. /**
  1501.  * def MBN_ERRSPACE
  1502.  * brief Sends when memory space error occures.
  1503.  */
  1504. #define MBN_ERRSPACE            255
  1505. /**
  1506.  * def MBN_CHANGED
  1507.  * brief Sends when selected item changes.
  1508.  */
  1509. #define MBN_CHANGED             1
  1510. /**
  1511.  * def MBN_SELECTED
  1512.  * brief Sends when an item is selected.
  1513.  */
  1514. #define MBN_SELECTED            2
  1515. /**
  1516.  * def MBN_STARTMENU
  1517.  * brief Sends when starting tracking popup menu.
  1518.  */
  1519. #define MBN_STARTMENU           4
  1520. /**
  1521.  * def MBN_ENDMENU
  1522.  * brief Sends when ending tracking popup menu.
  1523.  */
  1524. #define MBN_ENDMENU             5
  1525. /**
  1526.  * def MBN_CLICKED
  1527.  * brief Sends when the user clicked the menubutton but not active the menu.
  1528.  */
  1529. #define MBN_CLICKED             6
  1530.     /** @} end of ctrl_menubutton_ncs */
  1531.     /** @} end of ctrl_menubutton */
  1532. #endif /* _CTRL_MENUBUTTON */
  1533. /************************** Scroll Bar Control *********************************/
  1534. #ifdef _CTRL_SCROLLBAR
  1535.     /**
  1536.      * defgroup ctrl_scrollbar ScrollBar control
  1537.      *
  1538.      * note The scrollbar is not implemented as a control in current version.
  1539.      * @{
  1540.      */
  1541. /**
  1542.  * def CTRL_SCROLLBAR
  1543.  * brief The class name of scrollbar control.
  1544.  */
  1545. #define CTRL_SCROLLBAR              ("scrollbar")
  1546.     /**
  1547.      * defgroup ctrl_scrollbar_msgs Messages of scrollbar control
  1548.      * @{
  1549.      */
  1550. #define SBM_SETPOS                  0xF0E0
  1551. #define SBM_GETPOS                  0xF0E1
  1552. #define SBM_SETRANGE                0xF0E2
  1553. #define SBM_SETRANGEREDRAW          0xF0E6
  1554. #define SBM_GETRANGE                0xF0E3
  1555. #define SBM_ENABLE_ARROWS           0xF0E4
  1556. #define SBM_SETSCROLLINFO           0xF0E9
  1557. #define SBM_GETSCROLLINFO           0xF0EA
  1558. #define SBM_MSGMAX                  0xF0F0
  1559.     /** @} end of ctrl_scrollbar_msgs */
  1560.     /** @} end of ctrl_scrollbar */
  1561. #endif /* _CTRL_SCROLLBAR */
  1562. /************************** TrackBar Control ***********************************/
  1563. #ifdef _CTRL_TRACKBAR
  1564.     /**
  1565.      * defgroup ctrl_trackbar TrackBar control
  1566.      * @{
  1567.      */
  1568. /**
  1569.  * def CTRL_TRACKBAR
  1570.  * brief The class name of trackbar control.
  1571.  */
  1572. #define CTRL_TRACKBAR              ("trackbar")
  1573. /**
  1574.  * def TBLEN_TIP
  1575.  * brief The maximum length of the trackbar tip string.
  1576.  */
  1577. #define TBLEN_TIP                   31
  1578.     /**
  1579.      * defgroup ctrl_trackbar_styles Styles of trackbar control
  1580.      * @{
  1581.      */
  1582. /**
  1583.  * def TBS_NOTIFY
  1584.  * brief Causes the trackbar to notify the parent window with a notification message 
  1585.  *         when the user clicks or doubleclicks the trackbar.
  1586.  */
  1587. #define TBS_NOTIFY                 0x0001L
  1588. /**
  1589.  * def TBS_VERTICAL
  1590.  * brief The trackbar control will be oriented vertically.
  1591.  */
  1592. #define TBS_VERTICAL               0x0002L
  1593. /**
  1594.  * def TBS_BORDER
  1595.  * brief The trackbar control will have border.
  1596.  */
  1597. #define TBS_BORDER                 0x0004L
  1598. /**
  1599.  * def TBS_TIP
  1600.  * brief The trackbar control will display tip string above the control.
  1601.  */
  1602. #define TBS_TIP                    0x0008L
  1603. /**
  1604.  * def TBS_NOTICK
  1605.  * brief The trackbar control will not display tick line beside the control.
  1606.  */
  1607. #define TBS_NOTICK                 0x0010L
  1608. /* internally used style */
  1609. #define TBS_FOCUS                  0x1000L
  1610.     /** @} end of ctrl_trackbar_styles */
  1611.     /**
  1612.      * defgroup ctrl_trackbar_msgs Messages of trackbar control
  1613.      * @{
  1614.      */
  1615. /**
  1616.  * def TBM_SETRANGE
  1617.  * brief Sets the range of minimum and maximum logical positions for the 
  1618.  *         slider in a trackbar.
  1619.  *
  1620.  * code
  1621.  * TBM_SETRANGE
  1622.  * int min;
  1623.  * int max;
  1624.  *
  1625.  * wParam = (WPARAM)min;
  1626.  * lParam = (LPARAM)max;
  1627.  * endcode
  1628.  *
  1629.  * param min Minimum position for the slider.
  1630.  * param max Maximum position for the slider.
  1631.  *
  1632.  * return Zero on success; otherwise -1.
  1633.  */
  1634. #define TBM_SETRANGE               0xF090
  1635. /**
  1636.  * def TBM_GETMIN
  1637.  * brief Gets the minimum logical position for the slider.
  1638.  *
  1639.  * code
  1640.  * TBM_GETMIN
  1641.  *
  1642.  * wParam = 0;
  1643.  * lParam = 0;
  1644.  * endcode
  1645.  *
  1646.  * return The minimum logical position for the slider.
  1647.  */
  1648. #define TBM_GETMIN                 0xF091
  1649. /**
  1650.  * def TBM_SETPOS
  1651.  * brief Sets the current logical position of the slider.
  1652.  *
  1653.  * code
  1654.  * TBM_SETPOS
  1655.  * int pos;
  1656.  *
  1657.  * wParam = (WPARAM)pos;
  1658.  * lParam = 0;
  1659.  * endcode
  1660.  *
  1661.  * param pos New logical position of the slider.
  1662.  *
  1663.  * return Always be zero.
  1664.  */
  1665. #define TBM_SETPOS                 0xF092
  1666. /**
  1667.  * def TBM_GETPOS
  1668.  * brief Gets the current logical position of the slider.
  1669.  *
  1670.  * code
  1671.  * TBM_GETPOS
  1672.  *
  1673.  * wParam = 0;
  1674.  * lParam = 0;
  1675.  * endcode
  1676.  *
  1677.  * return The current logical position of the slider.
  1678.  */
  1679. #define TBM_GETPOS                 0xF093
  1680. /**
  1681.  * def TBM_SETLINESIZE
  1682.  * brief Sets the number of logical positions moved in response to keyboard
  1683.  *     input from the arrow keys.
  1684.  *
  1685.  * Sets the number of logical positions the trackbar's slider moves in response
  1686.  * to keyboard input from the arrow keys. The logical positions are the integer
  1687.  * increments in the trackbar's range of minimum to maximum slider positions.
  1688.  *
  1689.  * code
  1690.  * TBM_SETLINESIZE
  1691.  * int linesize;
  1692.  *
  1693.  * wParam = (WPARAM)linesize;
  1694.  * lParam = 0;
  1695.  * endcode
  1696.  *
  1697.  * param linesize New line size.
  1698.  *
  1699.  * return Zero on success; otherwise -1.
  1700.  */
  1701. #define TBM_SETLINESIZE            0xF094
  1702. /**
  1703.  * def TBM_GETLINESIZE
  1704.  * brief Gets the number of logical positions moved in response to keyboard
  1705.  *     input from the arrow keys.
  1706.  *
  1707.  * Gets the number of logical positions the trackbar's slider moves in response
  1708.  * to keyboard input from the arrow keys. The logical positions are the integer
  1709.  * increments in the trackbar's range of minimum to maximum slider positions.
  1710.  *
  1711.  * code
  1712.  * TBM_GETLINESIZE
  1713.  *
  1714.  * wParam = 0;
  1715.  * lParam = 0;
  1716.  * endcode
  1717.  *
  1718.  * return The current line size.
  1719.  */
  1720. #define TBM_GETLINESIZE            0xF095
  1721. /**
  1722.  * def TBM_SETPAGESIZE
  1723.  * brief Sets the number of logical positions moved in response to keyboard
  1724.  *         input from page keys..
  1725.  *
  1726.  * Sets the number of logical positions the trackbar's slider moves in response
  1727.  * to keyboard input form page keys, such as PAGE DOWN or PAGE UP keys. The 
  1728.  * logical positions are the integer increments in the trackbar's range of 
  1729.  * minimum to maximum slider positions.
  1730.  *
  1731.  * code
  1732.  * TBM_SETPAGESIZE
  1733.  * int pagesize;
  1734.  *
  1735.  * wParam = (WPARAM)pagesize;
  1736.  * lParam = 0;
  1737.  * endcode
  1738.  *
  1739.  * param pagesize New page size.
  1740.  *
  1741.  * return Zero on success; otherwise -1.
  1742.  */
  1743. #define TBM_SETPAGESIZE            0xF096
  1744. /**
  1745.  * def TBM_GETPAGESIZE
  1746.  * brief Gets the number of logical positions moved in response to keyboard
  1747.  *        input from page keys..
  1748.  *
  1749.  * Gets the number of logical positions the trackbar's slider moves in response
  1750.  * to keyboard input form page keys, such as PAGE DOWN or PAGE UP keys. The 
  1751.  * logical positions are the integer increments in the trackbar's range of 
  1752.  * minimum to maximum slider positions.
  1753.  *
  1754.  * code
  1755.  * TBM_GETPAGESIZE
  1756.  *
  1757.  * wParam = 0;
  1758.  * lParam = 0;
  1759.  * endcode
  1760.  *
  1761.  * return The current page size.
  1762.  */
  1763. #define TBM_GETPAGESIZE            0xF097
  1764. /**
  1765.  * def TBM_SETTIP
  1766.  * brief Sets the start and end tip strings.
  1767.  *
  1768.  * code
  1769.  * TBM_SETTIP
  1770.  * char* starttip;
  1771.  * char* endtip;
  1772.  *
  1773.  * wParam = (WPARAM)starttip;
  1774.  * lParam = (LPARAM)endtip;
  1775.  * endcode
  1776.  *
  1777.  * param starttip New start tip string.
  1778.  * param endtip New end tip tip string.
  1779.  *
  1780.  * return Always be zero.
  1781.  */
  1782. #define TBM_SETTIP            0xF098
  1783. /**
  1784.  * def TBM_GETTIP
  1785.  * brief Gets the start and end tip strings.
  1786.  *
  1787.  * code
  1788.  * TBM_GETTIP
  1789.  * char starttip [TBLEN_TIP + 1];
  1790.  * char endtip [TBLEN_TIP + 1];
  1791.  *
  1792.  * wParam = (WPARAM)starttip;
  1793.  * lParam = (LPARAM)endtip;
  1794.  * endcode
  1795.  *
  1796.  * param starttip Buffer receives the start tip string. It should
  1797.  *        be length enough to save (TBLEN_TIP + 1) characters.
  1798.  * param endtip Buffer receives the end tip string. It should
  1799.  *        be length enough to save (TBLEN_TIP + 1) characters.
  1800.  *
  1801.  * return Always be zero.
  1802.  */
  1803. #define TBM_GETTIP                 0xF09A
  1804. /**
  1805.  * def TBM_SETTICKFREQ
  1806.  * brief Sets the interval frequency for tick marks in a trackbar.
  1807.  *
  1808.  * code
  1809.  * TBM_SETTICKFREQ
  1810.  * int tickfreq;
  1811.  *
  1812.  * wParam = (WPARAM)tickfreq;
  1813.  * lParam = 0;
  1814.  * endcode
  1815.  *
  1816.  * param tickfreq New interval frequency for tick marks in a trackbar;
  1817.  *
  1818.  * return Zero on success; otherwise -1.
  1819.  */
  1820. #define TBM_SETTICKFREQ            0xF09B
  1821. /**
  1822.  * def TBM_GETTICKFREQ
  1823.  * brief Gets the interval frequency for tick marks in a trackbar.
  1824.  *
  1825.  * code
  1826.  * TBM_GETTICKFREQ
  1827.  *
  1828.  * wParam = 0;
  1829.  * lParam = 0;
  1830.  * endcode
  1831.  *
  1832.  * return The current interval frequency for tick marks in a trackbar;
  1833.  */
  1834. #define TBM_GETTICKFREQ            0xF09C
  1835. /**
  1836.  * def TBM_SETMIN
  1837.  * brief Sets the minimum logical position for the slider in a trackbar.
  1838.  *
  1839.  * code
  1840.  * TBM_SETMIN
  1841.  * int min;
  1842.  *
  1843.  * wParam = (WPARAM)min;
  1844.  * lParam = 0;
  1845.  * endcode
  1846.  *
  1847.  * param min The new minimum logical position for the slider in a trackbar.
  1848.  *
  1849.  * return Zero on success; otherwise -1.
  1850.  */
  1851. #define TBM_SETMIN                 0xF09D
  1852. /**
  1853.  * def TBM_SETMAX
  1854.  * brief Sets the maximum logical position for the slider in a trackbar.
  1855.  *
  1856.  * code
  1857.  * TBM_SETMAX
  1858.  * int max;
  1859.  *
  1860.  * wParam = (WPARAM)max;
  1861.  * lParam = 0;
  1862.  * endcode
  1863.  *
  1864.  * param min The new maximum logical position for the slider in a trackbar.
  1865.  *
  1866.  * return Zero on success; otherwise -1.
  1867.  */
  1868. #define TBM_SETMAX                 0xF09E
  1869. /**
  1870.  * def TBM_GETMAX
  1871.  * brief Gets the maximum logical position for the slider in a trackbar.
  1872.  *
  1873.  * code
  1874.  * TBM_GETMAX
  1875.  *
  1876.  * wParam = 0;
  1877.  * lParam = 0;
  1878.  * endcode
  1879.  *
  1880.  * return The current maximum logical position for the slider in a trackbar.
  1881.  */
  1882. #define TBM_GETMAX                 0xF09F
  1883. #define TBR_MSGMAX                 0xF010
  1884.     /** @} end of ctrl_trackbar_msgs */
  1885.     /**
  1886.      * defgroup ctrl_trackbar_ncs Notification codes of trackbar control
  1887.      * @{
  1888.      */
  1889. /**
  1890.  * def TBN_REACHMIN
  1891.  * brief Notifies that the slider has reached the minimum position.
  1892.  */
  1893. #define TBN_REACHMIN                1
  1894. /**
  1895.  * def TBN_REACHMAX
  1896.  * brief Notifies that the slider has reached the maximum position.
  1897.  */
  1898. #define TBN_REACHMAX                2
  1899. /**
  1900.  * def TBN_CHANGE
  1901.  * brief Notifies that the position of the slider has changed.
  1902.  */
  1903. #define TBN_CHANGE                  3
  1904. /**
  1905.  * def TBN_STARTDRAG
  1906.  * brief Notifies that the user start to drag the slider.
  1907.  */
  1908. #define TBN_STARTDRAG               4
  1909. /**
  1910.  * def TBN_STOPDRAG
  1911.  * brief Notifies that the user stop to drag the slider.
  1912.  */
  1913. #define TBN_STOPDRAG                5
  1914.     /** @} end of ctrl_trackbar_ncs */
  1915.     /** @} end of ctrl_trackbar */
  1916. #endif /* _CTRL_TRACKBAR */
  1917. /************************** ScrollView Control ***********************************/
  1918. #ifdef _CTRL_SCROLLVIEW
  1919.     /**
  1920.      * defgroup ctrl_scrollview ScrollView control
  1921.      * @{
  1922.      *
  1923.      * Scrollview control is a scrollable window, which has a visible area and
  1924.      * normally a larger content area, user can browse content area using scrollbar.
  1925.      * Contents of the content area is totally user-defined, you can add controls in it,
  1926.      * add customed listed items, or anything you want.
  1927.      *
  1928.      * In fact, you can build a control needing scrolled window support on scrollview.
  1929.      */
  1930. /**
  1931.  * def CTRL_SCROLLVIEW
  1932.  * brief The class name of scrollview control, uses this name to create a scrollable
  1933.  *        window that consists of items.
  1934.  *
  1935.  */
  1936. #define CTRL_SCROLLVIEW           ("scrollview")
  1937. /**
  1938.  * def CTRL_SCROLLWND
  1939.  * brief The class name of scrollwnd control, uses this name to create a scrollable
  1940.  *        window to which you can add controls.
  1941.  *
  1942.  */
  1943. #define CTRL_SCROLLWND            ("scrollwnd")
  1944. /** default container window procedure */
  1945. int GUIAPI DefaultContainerProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam);
  1946. /** scrollview item object, use this handle to access a scrollview item */
  1947. typedef GHANDLE HSVITEM;
  1948. /**
  1949.  * Structure which defines a container.
  1950.  */
  1951. typedef struct _CONTAINERINFO
  1952. {
  1953. #if 0
  1954.     DWORD       dwStyle;                /** style of the container */
  1955.     DWORD       dwExStyle;              /** extended style of the container */
  1956.     int         x, y, w, h;             /** position and size of the container */
  1957. #endif
  1958.     WNDPROC     user_proc;              /** user-defined window procedure of the container */
  1959.     int         controlnr;              /** number of controls */
  1960.     PCTRLDATA   controls;               /** pointer to control array */
  1961.     DWORD       dwAddData;              /** additional data */
  1962. } CONTAINERINFO;
  1963. typedef CONTAINERINFO* PCONTAINERINFO;
  1964. /** 
  1965.  * fn DWORD scrollview_get_item_adddata (HSVITEM hsvi)
  1966.  * brief use this to get additional data from scrollview item 
  1967.  */
  1968. DWORD scrollview_get_item_adddata (HSVITEM hsvi);
  1969. /**
  1970.  * fn int scrollview_get_item_index (HWND hWnd, HSVITEM hsvi);
  1971.  * brief to get item index
  1972.  */ 
  1973. int scrollview_get_item_index (HWND hWnd, HSVITEM hsvi);
  1974. /**
  1975.  * fn int scrollview_is_item_hilight (HWND hWnd, HSVITEM hsvi)
  1976.  * brief to decide whether an item is the current hilighted item
  1977.  */
  1978. BOOL scrollview_is_item_hilight (HWND hWnd, HSVITEM hsvi);
  1979. /**
  1980.  * fn int scrollview_is_item_selected (HSVITEM hsvi)
  1981.  * brief to decide whether an item is a selected
  1982.  */
  1983. BOOL scrollview_is_item_selected (HSVITEM hsvi);
  1984. /**
  1985.  * fn int scrollview_set_item_height (HWND hWnd, HSVITEM hsvi, int height)
  1986.  * brief Sets the height of an item
  1987.  */
  1988. int scrollview_set_item_height (HWND hWnd, HSVITEM hsvi, int height);
  1989. /**
  1990.  * var typedef void (* SVITEM_INITFUNC)(HWND hWnd, HSVITEM hsvi)
  1991.  * brief Type of the scrollview item initialization callback procedure.
  1992.  *
  1993.  * param hWnd handle of the scrollview control .
  1994.  * param hsvi scrollview item handle.
  1995.  *
  1996.  * return Zero on success; otherwise -1.
  1997.  */
  1998. typedef int  (*SVITEM_INITFUNC)    (HWND hWnd, HSVITEM hsvi);
  1999. /**
  2000.  * var typedef void (* SVITEM_DESTROYFUNC)(HWND hWnd, HSVITEM hsvi)
  2001.  * brief Type of the scrollview item destroy callback procedure.
  2002.  *
  2003.  * param hWnd handle of the scrollview control .
  2004.  * param hsvi scrollview item handle.
  2005.  */
  2006. typedef void (*SVITEM_DESTROYFUNC) (HWND hWnd, HSVITEM hsvi);
  2007. /**
  2008.  * var typedef void (*SVITEM_DRAWFUNC)(HWND hWnd, HSVITEM hsvi, HDC hdc, RECT *rcDraw)
  2009.  * brief Type of the scrollview item drawing callback procedure.
  2010.  *
  2011.  * param hWnd handle of the scrollview control.
  2012.  * param hsvi scrollview item handle.
  2013.  * param hdc  drawing device context.
  2014.  * param rcDraw drawing rect area.
  2015.  */
  2016. typedef void (*SVITEM_DRAWFUNC) (HWND hWnd, HSVITEM hsvi, HDC hdc, RECT *rcDraw);
  2017. /**
  2018.  * var typedef int (*SVITEM_CMP) (HSVITEM hsvi1, HSVITEM hsvi2)
  2019.  * brief Type of the scrollview item compare function
  2020.  */
  2021. typedef int (*SVITEM_CMP) (HSVITEM hsvi1, HSVITEM hsvi2);
  2022. /** structure of item operations */
  2023. typedef struct _svitem_operations
  2024. {
  2025.     SVITEM_INITFUNC     initItem;     /** called when an scrollview item is created */
  2026.     SVITEM_DESTROYFUNC  destroyItem;  /** called when an item is destroied */
  2027.     SVITEM_DRAWFUNC     drawItem;     /** call this to draw an item */
  2028. } SVITEMOPS;
  2029. typedef SVITEMOPS* PSVITEMOPS;
  2030. /** structure of the scrollview item info */
  2031. typedef struct _SCROLLVIEWITEMINFO
  2032. {
  2033.     int        nItem;           /** index of item */
  2034.     int        nItemHeight;     /** height of an item */
  2035.     DWORD      addData;         /** item additional data */
  2036. } SVITEMINFO;
  2037. typedef SVITEMINFO* PSVITEMINFO;
  2038.     /**
  2039.      * defgroup ctrl_scrollview_styles Styles of scrollview control
  2040.      * @{
  2041.      */
  2042. #define SVS_NOTIFY              0x0001L
  2043. #define SVS_UPNOTIFY            0x0002L
  2044. #define SVS_AUTOSORT            0x0004L
  2045. #define SVS_LOOP                0x0008L
  2046.     /** @} end of ctrl_scrollview_styles */
  2047.     /**
  2048.      * defgroup ctrl_scrollview_msgs Messages of scrollview control
  2049.      * @{
  2050.      */
  2051. /**
  2052.  * def SVM_ADDITEM
  2053.  * brief adds an item in the scrollview.
  2054.  *
  2055.  * code
  2056.  * SVM_ADDITEM
  2057.  * SVITEMINFO svii;
  2058.  * HSVITEM *phsvi;
  2059.  *
  2060.  * wParam = phsvi;
  2061.  * lParam = (LPARAM)&svii;
  2062.  * endcode
  2063.  *
  2064.  * param &svii pointer to a scrollview item information structure.
  2065.  * param phsvi pointer to a HSVITEM var, used to store the item handle
  2066.  *              returned.
  2067.  *
  2068.  * return index of the scrollview item on success; otherwise -1.
  2069.  */
  2070. #define SVM_ADDITEM             0xF300
  2071. /**
  2072.  * def SVM_DELITEM
  2073.  * brief deletes an item from the scrollview.
  2074.  *
  2075.  * code
  2076.  * SVM_DELITEM
  2077.  * int nItem;
  2078.  * HSVITEM hsvi;
  2079.  *
  2080.  * wParam = (WPARAM)nItem;
  2081.  * lParam = (LPARAM)hsvi;
  2082.  * endcode
  2083.  *
  2084.  * param nItem scrollview item index to delete.
  2085.  *              If hsvi is not zero, nItem will be ignored.
  2086.  * param hsvi scrollview item handle to delete.
  2087.  *
  2088.  * return Zero on success; otherwise -1.
  2089.  */
  2090. #define SVM_DELITEM             0xF301
  2091. /**
  2092.  * def SVM_SETITEMDRAW
  2093.  * brief sets the drawing operation of an item.
  2094.  *
  2095.  * scrollview item drawing function will be called when doing with MSG_PAINT message,
  2096.  * scrollview window should define this function if it want to draw an customed item.
  2097.  *
  2098.  * code
  2099.  * SVM_SETITEMDRAW
  2100.  * SVITEM_DRAWFUNC pfn;
  2101.  *
  2102.  * wParam = 0;
  2103.  * lParam = (LPARAM)pfn;
  2104.  * endcode
  2105.  *
  2106.  * param pfn scrollview item drawing function.
  2107.  *
  2108.  * return old drawing function pointer; otherwise 0.
  2109.  */
  2110. #define SVM_SETITEMDRAW         0xF302
  2111. /**
  2112.  * def SVM_ADDCTRLS
  2113.  * brief adds controls to the scrollview.
  2114.  *
  2115.  * code
  2116.  * SVM_ADDCTRLS
  2117.  * int itemNr;
  2118.  * PCTRLDATA pctrls;
  2119.  *
  2120.  * wParam = (WPARAM)itemNr;
  2121.  * lParam = (LPARAM)pctrls;
  2122.  * endcode
  2123.  *
  2124.  * param ctrlNr control number in the pctrls control array.
  2125.  * param pctrls points to a CTRLDATA array that defines controls.
  2126.  *
  2127.  * return Zero on success; otherwise -1.
  2128.  */
  2129. #define SVM_ADDCTRLS            0xF303
  2130. /**
  2131.  * def SVM_SETCONTWIDTH
  2132.  * brief sets the scrollview content area (scrollable area) width.
  2133.  *
  2134.  * scrollable area of a scrolled window is always larger than the visible area.
  2135.  *
  2136.  * code
  2137.  * SVM_SETCONTWIDTH
  2138.  * int cont_w;
  2139.  *
  2140.  * wParam = cont_w;
  2141.  * lParam = 0;
  2142.  * endcode
  2143.  *
  2144.  * param cont_w scrollview content width.
  2145.  *
  2146.  * return Zero on success; otherwise -1.
  2147.  */
  2148. #define SVM_SETCONTWIDTH        0xF306
  2149. /**
  2150.  * def SVM_SETCONTHEIGHT
  2151.  * brief sets the scrollview content area (scrollable area) height.
  2152.  *
  2153.  * scrollable area of a scrolled window is always larger than the visible area.
  2154.  *
  2155.  * code
  2156.  * SVM_SETCONTHEIGHT
  2157.  * int cont_h;
  2158.  *
  2159.  * wParam = cont_h;
  2160.  * lParam = 0;
  2161.  * endcode
  2162.  *
  2163.  * param cont_h scrollview content height.
  2164.  *
  2165.  * return Zero on success; otherwise -1.
  2166.  */
  2167. #define SVM_SETCONTHEIGHT       0xF307
  2168. /**
  2169.  * def SVM_GETCTRL
  2170.  * brief gets the control handle in the scrollview window by control id.
  2171.  *
  2172.  * code
  2173.  * SVM_GETCTRL
  2174.  * int id;
  2175.  *
  2176.  * wParam = id;
  2177.  * lParam = 0;
  2178.  * endcode
  2179.  *
  2180.  * param id control id.
  2181.  *
  2182.  * return control window handle on success; otherwise 0.
  2183.  */
  2184. #define SVM_GETCTRL             0xF308
  2185. /**
  2186.  * def SVM_RESETCONTENT
  2187.  * brief clears all the controls and the items added to the scrollview window.
  2188.  *
  2189.  * code
  2190.  * SVM_RESETCONTENT
  2191.  *
  2192.  * wParam = 0;
  2193.  * lParam = 0;
  2194.  * endcode
  2195.  *
  2196.  * return Zero on success; otherwise -1.
  2197.  */
  2198. #define SVM_RESETCONTENT        0xF309
  2199. /**
  2200.  * def SVM_SETITEMOPS
  2201.  * brief sets the item operations of the items in the scrollview.
  2202.  *
  2203.  * normally item operations should be set before adding items.
  2204.  *
  2205.  * code
  2206.  * SVM_SETITEMOPS
  2207.  * SVITEMOPS *iop;
  2208.  *
  2209.  * wParam = 0;
  2210.  * lParam = (LPARAM)iop;
  2211.  * endcode
  2212.  *
  2213.  * param iop points to a SVITEMOPS structure that defines item operations
  2214.  *
  2215.  * return Zero on success; otherwise -1.
  2216.  */
  2217. #define SVM_SETITEMOPS          0xF30a
  2218. /**
  2219.  * def SVM_GETMARGINS
  2220.  * brief Gets the margin values of the scrollview.
  2221.  *
  2222.  * Application should use a RECT structure to get left, top, right, and bottom margins.
  2223.  *
  2224.  * code
  2225.  * SVM_GETMARGINS
  2226.  * RECT rcMargin;
  2227.  *
  2228.  * wParam = 0;
  2229.  * lParam = (LPARAM)&rcMargin;
  2230.  * endcode
  2231.  *
  2232.  * param rcMargin a RECT for storing 4 margin values.
  2233.  *
  2234.  * return 0 on success.
  2235.  */
  2236. #define SVM_GETMARGINS            0xF30b
  2237. /**
  2238.  * def SVM_SETMARGINS
  2239.  * brief Sets the margin values of the scrollview.
  2240.  *
  2241.  * Application should use a RECT structure to give left, top, right, and bottom margins.
  2242.  * If you want to change a margin value, give a value large than zero, or else -1.
  2243.  *
  2244.  * code
  2245.  * SVM_SETMARGINS
  2246.  * RECT *rcMargin;
  2247.  *
  2248.  * wParam = 0;
  2249.  * lParam = (LPARAM)rcMargin;
  2250.  * endcode
  2251.  *
  2252.  * param rcMargin a RECT Containing 4 margin values.
  2253.  *
  2254.  * return 0 on success.
  2255.  */
  2256. #define SVM_SETMARGINS            0xF311
  2257. /**
  2258.  * def SVM_GETLEFTMARGIN
  2259.  * brief Gets the left margin value of the scrollview.
  2260.  *
  2261.  * code
  2262.  * SVM_GETLEFTMARGIN
  2263.  *
  2264.  * wParam = 0;
  2265.  * lParam = 0;
  2266.  * endcode
  2267.  *
  2268.  * return Left margin value on success, otherwise -1.
  2269.  */
  2270. #define SVM_GETLEFTMARGIN         0xF312
  2271. /**
  2272.  * def SVM_GETTOPMARGIN
  2273.  * brief Gets the top margin value of the scrollview.
  2274.  *
  2275.  * code
  2276.  * SVM_GETTOPMARGIN
  2277.  *
  2278.  * wParam = 0;
  2279.  * lParam = 0;
  2280.  * endcode
  2281.  *
  2282.  * return Top margin value on success, otherwise -1.
  2283.  */
  2284. #define SVM_GETTOPMARGIN          0xF313
  2285. /**
  2286.  * def SVM_GETRIGHTMARGIN
  2287.  * brief Gets the right margin value of the scrollview.
  2288.  *
  2289.  * code
  2290.  * SVM_GETRIGHTMARGIN
  2291.  *
  2292.  * wParam = 0;
  2293.  * lParam = 0;
  2294.  * endcode
  2295.  *
  2296.  * return Right margin value on success, otherwise -1.
  2297.  */
  2298. #define SVM_GETRIGHTMARGIN        0xF314
  2299. /**
  2300.  * def SVM_GETBOTTOMMARGIN
  2301.  * brief Gets the bottom margin value of the scrollview.
  2302.  *
  2303.  * code
  2304.  * SVM_GETBOTTOMMARGIN
  2305.  *
  2306.  * wParam = 0;
  2307.  * lParam = 0;
  2308.  * endcode
  2309.  *
  2310.  * return Bottom margin value on success, otherwise -1.
  2311.  */
  2312. #define SVM_GETBOTTOMMARGIN       0xF315
  2313. /**
  2314.  * def SVM_GETVISIBLEWIDTH
  2315.  * brief Gets the width of the visible content area.
  2316.  *
  2317.  * code
  2318.  * SVM_GETVISIBLEWIDTH
  2319.  *
  2320.  * wParam = 0;
  2321.  * lParam = 0;
  2322.  * endcode
  2323.  *
  2324.  * return Width of the visible content area on success, otherwise -1.
  2325.  */
  2326. #define SVM_GETVISIBLEWIDTH       0xF316
  2327. /**
  2328.  * def SVM_GETVISIBLEHEIGHT
  2329.  * brief Gets the height of the visible content area.
  2330.  *
  2331.  * code
  2332.  * SVM_GETVISIBLEHEIGHT
  2333.  *
  2334.  * wParam = 0;
  2335.  * lParam = 0;
  2336.  * endcode
  2337.  *
  2338.  * return Height of the visible content area on success, otherwise -1.
  2339.  */
  2340. #define SVM_GETVISIBLEHEIGHT      0xF317
  2341. /**
  2342.  * def SVM_GETCONTWIDTH
  2343.  * brief Gets the width of the content area.
  2344.  *
  2345.  * code
  2346.  * SVM_GETCONTWIDTH
  2347.  *
  2348.  * wParam = 0;
  2349.  * lParam = 0;
  2350.  * endcode
  2351.  *
  2352.  * return Width of the content area on success, otherwise -1.
  2353.  */
  2354. #define SVM_GETCONTWIDTH          0xF318
  2355. /**
  2356.  * def SVM_GETCONTHEIGHT
  2357.  * brief Gets the height of the content area.
  2358.  *
  2359.  * code
  2360.  * SVM_GETCONTHEIGHT
  2361.  *
  2362.  * wParam = 0;
  2363.  * lParam = 0;
  2364.  * endcode
  2365.  *
  2366.  * return Height of the content area on success, otherwise -1.
  2367.  */
  2368. #define SVM_GETCONTHEIGHT         0xF319
  2369. /**
  2370.  * def SVM_SETCONTRANGE
  2371.  * brief Sets the width and height of the content area.
  2372.  *
  2373.  * If you want to change width and height, give a value large than zero.
  2374.  * If you give -1, this value will remain untouched.
  2375.  *
  2376.  * code
  2377.  * SVM_SETCONTRANGE
  2378.  * int cont_w, cont_h;
  2379.  *
  2380.  * wParam = cont_w;
  2381.  * lParam = cont_h;
  2382.  * endcode
  2383.  *
  2384.  * param cont_w Width of the content area.
  2385.  * param cont_h Height of the content area.
  2386.  *
  2387.  * return 0 on success, otherwise -1.
  2388.  */
  2389. #define SVM_SETCONTRANGE          0xF31a
  2390. /**
  2391.  * def SVM_GETCONTENTX
  2392.  * brief Gets the content x offset in the viewport.
  2393.  *
  2394.  * code
  2395.  * SVM_GETCONTENTX
  2396.  *
  2397.  * wParam = 0;
  2398.  * lParam = 0;
  2399.  * endcode
  2400.  *
  2401.  * return content x coordinate in the viewport on success, otherwise -1.
  2402.  */
  2403. #define SVM_GETCONTENTX           0xF31b
  2404. /**
  2405.  * def SVM_GETCONTENTY
  2406.  * brief Gets the content y offset in the viewport.
  2407.  *
  2408.  * code
  2409.  * SVM_GETCONTENTY
  2410.  *
  2411.  * wParam = 0;
  2412.  * lParam = 0;
  2413.  * endcode
  2414.  *
  2415.  * return content y coordinate in the viewport on success, otherwise -1.
  2416.  */
  2417. #define SVM_GETCONTENTY           0xF31c
  2418. /**
  2419.  * def SVM_SETCONTPOS
  2420.  * brief Gets the content offset position in the viewport.
  2421.  *
  2422.  * code
  2423.  * SVM_SETCONTPOS
  2424.  * int cont_x, cont_y;
  2425.  *
  2426.  * wParam = cont_x;
  2427.  * lParam = cont_y;
  2428.  * endcode
  2429.  *
  2430.  * param cont_x new content x offset
  2431.  * param cont_y new content y offset
  2432.  *
  2433.  * return 0 on success, otherwise -1.
  2434.  */
  2435. #define SVM_SETCONTPOS            0xF31d
  2436. /**
  2437.  * def SVM_GETCURSEL
  2438.  * brief Gets the index of the current hilighted scrollview item.
  2439.  *
  2440.  * An application sends an this message to a scrollview window to get the index of 
  2441.  * the currently selected item, if there is one, in a single-selection scrollview.
  2442.  * For multiple-selection case, appliction send this message to a scrollview
  2443.  * to get the index of the current highlighted item.
  2444.  *
  2445.  * code
  2446.  * SVM_GETCURSEL
  2447.  *
  2448.  * wParam = 0;
  2449.  * lParam = 0;
  2450.  * endcode
  2451.  *
  2452.  * return index of current hilighted item.
  2453.  */
  2454. #define SVM_GETCURSEL             0xF31e
  2455. /**
  2456.  * def SVM_SELECTITEM
  2457.  * brief Selects or unselects an item in the scrollview item.
  2458.  *
  2459.  * code
  2460.  * SVM_SELECTITEM
  2461.  * int nItem;
  2462.  *
  2463.  * wParam = nItem;
  2464.  * lParam = bSel;
  2465.  * endcode
  2466.  *
  2467.  * param nItem Index of the item to select or unselect.
  2468.  * param bSel To select or unselect.
  2469.  *
  2470.  * return 0 on success, otherwise -1.
  2471.  */
  2472. #define SVM_SELECTITEM            0xF31f
  2473. /**
  2474.  * def SVM_SHOWITEM
  2475.  * brief Makes an item visible in the scrollview item.
  2476.  *
  2477.  * code
  2478.  * SVM_SHOWITEM
  2479.  * int nItem;
  2480.  * HSVITEM hsvi;
  2481.  *
  2482.  * wParam = nItem;
  2483.  * lParam = hsvi;
  2484.  * endcode
  2485.  *
  2486.  * param nItem Item index. Be useful when hsvi is zero.
  2487.  * param hsvi Item handle.
  2488.  *
  2489.  * return 0 on success, otherwise -1.
  2490.  */
  2491. #define SVM_SHOWITEM              0xF320
  2492. /**
  2493.  * def SVM_CHOOSEITEM
  2494.  * brief Makes an item selected and visible in the scrollview item.
  2495.  *
  2496.  * code
  2497.  * SVM_CHOOSEITEM
  2498.  * int nItem;
  2499.  * HSVITEM hsvi;
  2500.  *
  2501.  * wParam = nItem;
  2502.  * lParam = hsvi;
  2503.  * endcode
  2504.  *
  2505.  * param nItem Item index. Be useful when hsvi is zero.
  2506.  * param hsvi Item handle.
  2507.  *
  2508.  * return 0 on success, otherwise -1.
  2509.  */
  2510. #define SVM_CHOOSEITEM            0xF321
  2511. /**
  2512.  * def SVM_SETCURSEL
  2513.  * brief Makes an item as the current hilighted item in the scrollview item.
  2514.  *
  2515.  * code
  2516.  * SVM_SETCURSEL
  2517.  * int nItem;
  2518.  * BOOL bVisible;
  2519.  *
  2520.  * wParam = nItem;
  2521.  * lParam = bVisible;
  2522.  * endcode
  2523.  *
  2524.  * param nitem Item index.
  2525.  * param bVisible If bVisible is TRUE, this item wille be made visible.
  2526.  *                 
  2527.  * return old hilighted item index on success, otherwise -1.
  2528.  */
  2529. #define SVM_SETCURSEL             0xF322
  2530. /**
  2531.  * def SVM_SETITEMINIT
  2532.  * brief Sets the init operation of the items in the scrollview.
  2533.  *
  2534.  * normally item operations should be set before adding items.
  2535.  * The initialization callback function will be called when adding an item.
  2536.  *
  2537.  * code
  2538.  * SVM_SETITEMINIT
  2539.  * SVITEM_INITFUNC *pfn;
  2540.  *
  2541.  * wParam = 0;
  2542.  * lParam = (LPARAM)pfn;
  2543.  * endcode
  2544.  *
  2545.  * param pfn item init operation function
  2546.  *
  2547.  * return old function on success; otherwise NULL.
  2548.  */
  2549. #define SVM_SETITEMINIT            0xF323
  2550. /**
  2551.  * def SVM_SETITEMDESTROY
  2552.  * brief Sets the destroy operation of the items in the scrollview.
  2553.  *
  2554.  * normally item operations should be set before adding items.
  2555.  * The destroy callback function will be called when deleting an item
  2556.  *
  2557.  * code
  2558.  * SVM_SETITEMDESTROY
  2559.  * SVITEM_DESTROYFUNC *pfn;
  2560.  *
  2561.  * wParam = 0;
  2562.  * lParam = (LPARAM)pfn;
  2563.  * endcode
  2564.  *
  2565.  * param pfn item destroy operation function
  2566.  *
  2567.  * return old function on success; otherwise NULL.
  2568.  */
  2569. #define SVM_SETITEMDESTROY        0xF324
  2570. /**
  2571.  * def SVM_SETITEMCMP
  2572.  * brief Sets the item compare function.
  2573.  *
  2574.  * code
  2575.  * SVM_SETITEMCMP
  2576.  * SVITEM_CMP *pfn;
  2577.  *
  2578.  * wParam = 0;
  2579.  * lParam = (LPARAM)pfn;
  2580.  * endcode
  2581.  *
  2582.  * param pfn new item compare function
  2583.  *
  2584.  * return old function on success; otherwise NULL.
  2585.  */
  2586. #define SVM_SETITEMCMP            0xF327
  2587. /**
  2588.  * def SVM_MAKEPOSVISIBLE
  2589.  * brief Makes a position in the content area visible.
  2590.  *
  2591.  * code
  2592.  * SVM_MAKEPOSVISIBLE
  2593.  * int pos_x, pos_y;
  2594.  *
  2595.  * wParam = pos_x;
  2596.  * lParam = pos_y;
  2597.  * endcode
  2598.  *
  2599.  * param pos_x x coordinate of the position to be made visible
  2600.  * param pos_y y coordinate of the position to be made visible
  2601.  */
  2602. #define SVM_MAKEPOSVISIBLE        0xF328
  2603. /**
  2604.  * def SVM_SETCONTAINERPROC
  2605.  * brief Sets the window procedure of the container window in the scrollview.
  2606.  *
  2607.  * code
  2608.  * SVM_SETCONTAINERPROC
  2609.  * WNDPROC pfn;
  2610.  *
  2611.  * wParam = 0;
  2612.  * lParam = (LPARAM)pfn;
  2613.  * endcode
  2614.  *
  2615.  * param pfn new container procedure function.
  2616.  *
  2617.  * return old container procedure.
  2618.  */
  2619. #define SVM_SETCONTAINERPROC       0xF329
  2620. /**
  2621.  * def SVM_GETFOCUSCHILD
  2622.  * brief Gets the focus control in the scrollview.
  2623.  *
  2624.  * code
  2625.  * SVM_GETFOCUSCHILD
  2626.  *
  2627.  * wParam = 0;
  2628.  * lParam = 0;
  2629.  * endcode
  2630.  *
  2631.  * return Handle of the focus control.
  2632.  */
  2633. #define SVM_GETFOCUSCHILD          0xF32a
  2634. /**
  2635.  * def SVM_GETHSCROLLVAL
  2636.  * brief Gets the horizontal scroll value.
  2637.  *
  2638.  * code
  2639.  * SVM_GETHSCROLLVAL
  2640.  *
  2641.  * wParam = 0;
  2642.  * lParam = 0;
  2643.  * endcode
  2644.  *
  2645.  * return Current horizontal scroll value.
  2646.  */
  2647. #define SVM_GETHSCROLLVAL           0xF32b
  2648. /**
  2649.  * def SVM_GETVSCROLLVAL
  2650.  * brief Gets the vertical scroll value.
  2651.  *
  2652.  * code
  2653.  * SVM_GETVSCROLLVAL
  2654.  *
  2655.  * wParam = 0;
  2656.  * lParam = 0;
  2657.  * endcode
  2658.  *
  2659.  * return Current vertical scroll value.
  2660.  */
  2661. #define SVM_GETVSCROLLVAL           0xF32c
  2662. /**
  2663.  * def SVM_GETHSCROLLPAGEVAL
  2664.  * brief Gets the horizontal page scroll value.
  2665.  *
  2666.  * code
  2667.  * SVM_GETHSCROLLPAGEVAL
  2668.  *
  2669.  * wParam = 0;
  2670.  * lParam = 0;
  2671.  * endcode
  2672.  *
  2673.  * return Current horizontal page scroll value.
  2674.  */
  2675. #define SVM_GETHSCROLLPAGEVAL       0xF32d
  2676. /**
  2677.  * def SVM_GETVSCROLLPAGEVAL
  2678.  * brief Gets the vertical page scroll value.
  2679.  *
  2680.  * code
  2681.  * SVM_GETVSCROLLPAGEVAL
  2682.  *
  2683.  * wParam = 0;
  2684.  * lParam = 0;
  2685.  * endcode
  2686.  *
  2687.  * return Current vertical page scroll value.
  2688.  */
  2689. #define SVM_GETVSCROLLPAGEVAL       0xF32e
  2690. /**
  2691.  * def SVM_SETSCROLLVAL
  2692.  * brief Sets the horizontal and vertical scroll value.
  2693.  *
  2694.  * code
  2695.  * SVM_SETSCROLLVAL
  2696.  * int hval, vval;
  2697.  *
  2698.  * wParam = hval;
  2699.  * lParam = vval;
  2700.  * endcode
  2701.  *
  2702.  * param hval new horizontal scroll value.
  2703.  * param vval new vertical scroll value.
  2704.  *
  2705.  * return zero.
  2706.  */
  2707. #define SVM_SETSCROLLVAL           0xF32f
  2708. /**
  2709.  * def SVM_SETSCROLLPAGEVAL
  2710.  * brief Sets the horizontal and vertical page value.
  2711.  *
  2712.  * code
  2713.  * SVM_SETSCROLLPAGEVAL
  2714.  * int hval, vval;
  2715.  *
  2716.  * wParam = hval;
  2717.  * lParam = vval;
  2718.  * endcode
  2719.  *
  2720.  * param hval new horizontal page value.
  2721.  * param vval new vertical page value.
  2722.  *
  2723.  * return zero.
  2724.  */
  2725. #define SVM_SETSCROLLPAGEVAL       0xF330
  2726. /**
  2727.  * def SVM_SORTITEMS
  2728.  * brief Sorts the items according to a specified comparision function.
  2729.  *
  2730.  * code
  2731.  * SVM_SORTITEMS
  2732.  * SVITEM_CMP pfn;
  2733.  *
  2734.  * lParam = pfn;
  2735.  * endcode
  2736.  *
  2737.  * param pfn Comparision function.
  2738.  *
  2739.  * return zero.
  2740.  */
  2741. #define SVM_SORTITEMS              0xF331
  2742. /**
  2743.  * def SVM_GETITEMCOUNT
  2744.  * brief Gets the total number of the items.
  2745.  *
  2746.  * return number of the items.
  2747.  */
  2748. #define SVM_GETITEMCOUNT           0xF332
  2749. /**
  2750.  * def SVM_GETITEMADDDATA
  2751.  * brief Gets the additional data of the item
  2752.  *
  2753.  * code
  2754.  * SVM_GETITEMADDDATA
  2755.  * int nItem;
  2756.  * HSVITEM hsvi;
  2757.  *
  2758.  * wParam = (WPARAM)nItem;
  2759.  * lParam = (LPARAM)hsvi;
  2760.  * endcode
  2761.  *
  2762.  * param nItem scrollview item index to access.
  2763.  *              If hsvi is not zero, nItem will be ignored.
  2764.  * param hsvi scrollview item handle to access.
  2765.  *
  2766.  * return item additional data.
  2767.  */
  2768. #define SVM_GETITEMADDDATA         0xF333
  2769. /**
  2770.  * def SVM_SETITEMADDDATA
  2771.  * brief Sets the additional data of the item
  2772.  *
  2773.  * code
  2774.  * SVM_SETITEMADDDATA
  2775.  * int nitem;
  2776.  * int addData;
  2777.  *
  2778.  * wParam = nitem;
  2779.  * lParam = addData;
  2780.  * endcode
  2781.  *
  2782.  * param nitem item index.
  2783.  * param addData additional data
  2784.  *
  2785.  * return old item additional data.
  2786.  */
  2787. #define SVM_SETITEMADDDATA         0xF334
  2788. /**
  2789.  * def SVM_REFRESHITEM
  2790.  * brief refresh the item
  2791.  *
  2792.  * code
  2793.  * SVM_REFRESHITEM
  2794.  * int nitem;
  2795.  * HSVITEM hsvi;
  2796.  *
  2797.  * wParam = nitem;
  2798.  * lParam = hsvi;
  2799.  * endcode
  2800.  *
  2801.  * param nitem item index. If hsvi is not zero, nItem will be ignored.
  2802.  * param hsvi item handle.
  2803.  *
  2804.  * return 0.
  2805.  */
  2806. #define SVM_REFRESHITEM            0xF335
  2807. /**
  2808.  * def SVM_SETITEMHEIGHT
  2809.  * brief Sets the height of an item
  2810.  *
  2811.  * code
  2812.  * SVM_SETITEMHEIGHT
  2813.  * int nitem;
  2814.  * int height;
  2815.  *
  2816.  * wParam = nitem;
  2817.  * lParam = height;
  2818.  * endcode
  2819.  *
  2820.  * param nitem item index.
  2821.  * param height new height of the item
  2822.  *
  2823.  * return old item height.
  2824.  */
  2825. #define SVM_SETITEMHEIGHT         0xF336
  2826. /**
  2827.  * def SVM_GETFIRSTVISIBLEITEM
  2828.  * brief Gets the index of the first visible item
  2829.  *
  2830.  * code
  2831.  * SVM_GETFIRSTVISIBLEITEM
  2832.  *
  2833.  * return Item index.
  2834.  */
  2835. #define SVM_GETFIRSTVISIBLEITEM   0xF337
  2836.     /** @} end of ctrl_scrollview_msgs */
  2837.     /**
  2838.      * defgroup ctrl_scrollview_ncs Notification codes of scrollview control
  2839.      * @{
  2840.      */
  2841. /** indicates clicking on the item */
  2842. #define SVN_CLICKED             1
  2843. /** indicates the hilighted item changed */
  2844. #define SVN_SELCHANGED          2
  2845.     /** @} end of ctrl_scrollview_ncs */
  2846.     /** @} end of ctrl_scrollview */
  2847. #endif /* _CTRL_SCROLLVIEW */
  2848.     /** @} end of controls */
  2849. /************************** TextEdit Control ***********************************/
  2850. #ifdef _CTRL_TEXTEDIT
  2851.     /**
  2852.      * defgroup ctrl_textedit TextEdit control
  2853.      * @{
  2854.      */
  2855. /**
  2856.  * def CTRL_TEXTEDIT
  2857.  * brief The class name of textedit control.
  2858.  */
  2859. #define CTRL_TEXTEDIT           ("textedit")
  2860. /* text document/buffer object */
  2861. typedef GHANDLE HTEXTDOC;
  2862.     /**
  2863.      * defgroup ctrl_textedit_styles Styles of textedit control
  2864.      * @{
  2865.      */
  2866. #define TES_BASELINE            ES_BASELINE
  2867. #define TES_AUTOWRAP            ES_AUTOWRAP
  2868. #define TES_TITLE               ES_TITLE
  2869.     /** @} end of ctrl_textedit_styles */
  2870.     /**
  2871.      * defgroup ctrl_textedit_msgs Messages of textedit control
  2872.      * @{
  2873.      */
  2874. #define TEM_RESETCONTENT        0xF400
  2875. #define TEM_ADDLINE             0xF401
  2876.     /** @} end of ctrl_textedit_msgs */
  2877.     /**
  2878.      * defgroup ctrl_textedit_ncs Notification codes of textedit control
  2879.      * @{
  2880.      */
  2881. #define TEN_CLICK               1
  2882.     /** @} end of ctrl_textedit_ncs */
  2883.     /** @} end of ctrl_textedit */
  2884. #endif /* _CTRL_TEXTEDIT */
  2885.     /** @} end of controls */
  2886. #ifdef __cplusplus
  2887. }
  2888. #endif  /* __cplusplus */
  2889. #endif /* _MGUI_CONTROL_H */