home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cell06d.zip / samples / multibar.c < prev    next >
C/C++ Source or Header  |  1998-02-20  |  6KB  |  315 lines

  1. /*
  2. ** Module   :MULTIBAR.C
  3. ** Abstract :Test and sample application for Cell toolkit procedures.
  4. **
  5. ** Copyright (C) Sergey I. Yevtushenko
  6. ** Log: Sun  08/02/98   Refined
  7. **
  8. */
  9.  
  10. #define INCL_WIN
  11. #define INCL_NLS
  12. #define INCL_DOS
  13. #define INCL_GPI
  14.  
  15. #include <os2.h>
  16. #include <multibar.h>
  17. #include <cell.h>
  18.  
  19. /* Local procedures */
  20.  
  21. MRESULT EXPENTRY MainClientProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  22.  
  23. /* Static Variables */
  24.  
  25. CellDef Panel0 =
  26. {
  27.     CELL_WINDOW,
  28.     WC_BUTTON,
  29.     "Button",
  30.     BS_PUSHBUTTON | WS_VISIBLE,
  31.     ID_RPANE
  32. };
  33.  
  34. CellDef Panel1 =
  35. {
  36.     CELL_WINDOW,
  37.     WC_STATIC,
  38.     "Button",
  39.     SS_TEXT | DT_CENTER | DT_VCENTER | WS_VISIBLE,
  40.     ID_LPANE
  41. };
  42.  
  43. CellDef uPanel =
  44. {
  45.     CELL_HSPLIT | CELL_SPLITBAR | CELL_FIXED | CELL_SIZE2,
  46.     0,
  47.     "",
  48.     WS_VISIBLE,
  49.     ID_RPANE,
  50.     &Panel0,
  51.     &Panel1,
  52.     0,
  53.     0,
  54.     40
  55. };
  56.  
  57. CellDef dPanel =
  58. {
  59.     CELL_WINDOW,
  60.     WC_STATIC,
  61.     "Button",
  62.     SS_TEXT | DT_CENTER | DT_VCENTER | WS_VISIBLE,
  63.     ID_LPANE,
  64.     0,
  65.     0
  66. };
  67.  
  68. CellDef rPanel =
  69. {
  70.     CELL_VSPLIT | CELL_SPLITBAR | CELL_SPLIT30x70,
  71.     0,
  72.     "Subwindow",
  73.     WS_VISIBLE,
  74.     ID_RPANE,
  75.     &uPanel,
  76.     &dPanel
  77. };
  78.  
  79. CellDef lPanel =
  80. {
  81.     CELL_VSPLIT | CELL_SPLITBAR | CELL_SPLIT70x30,
  82.     0,
  83.     "",
  84.     WS_VISIBLE,
  85.     ID_LPANE,
  86.     &uPanel,
  87.     &dPanel
  88. };
  89.  
  90. CellDef mainClient =
  91. {
  92.     CELL_HSPLIT | CELL_SPLITBAR,
  93.     0,
  94.     "Multiple Toolbars Sample",
  95.     FCF_TITLEBAR | FCF_SYSMENU  | FCF_MENU |
  96.     FCF_MINMAX   | FCF_TASKLIST | FCF_SIZEBORDER |
  97.     0,
  98.     MAIN_FRAME,
  99.     &lPanel,
  100.     &rPanel,
  101.     0,                  //Frame subclass proc
  102.     MainClientProc      //Client subclass proc
  103. };
  104.  
  105. ULONG mainItems[]=
  106. {
  107.     IDB_FILENEW ,
  108.     IDB_FILEOPEN,
  109.     IDB_FILESAVE,
  110.     IDB_FILSAVAS,
  111.     TB_SEPARATOR,
  112.     IDB_EXIT    ,
  113.     TB_SEPARATOR,
  114.     IDB_EDITCOPY,
  115.     IDB_EDITCUT ,
  116.     IDB_EDITFIND,
  117.     IDB_EDITFNNX,
  118.     IDB_EDITPAST,
  119.     IDB_EDITREPL,
  120.     IDB_EDITUNDO,
  121.     TB_SEPARATOR,
  122.     IDB_HELP    ,
  123.     IDB_ABOUT   ,
  124.     0
  125. };
  126.  
  127. ULONG mainItems1[]=
  128. {
  129.     IDB_FILENEW ,
  130.     TB_SEPARATOR,
  131.     IDB_FILEOPEN,
  132.     IDB_FILESAVE,
  133.     IDB_FILSAVAS,
  134.     0
  135. };
  136.  
  137. ULONG mainItems2[]=
  138. {
  139.     IDB_EDITCOPY,
  140.     IDB_EDITCUT ,
  141.     IDB_EDITPAST,
  142.     TB_SEPARATOR,
  143.     IDB_EDITFIND,
  144.     IDB_EDITFNNX,
  145.     IDB_EDITREPL,
  146.     TB_SEPARATOR,
  147.     IDB_EDITUNDO,
  148.     0
  149. };
  150.  
  151. ULONG mainItems3[]=
  152. {
  153.     IDB_HELP ,
  154.     IDB_ABOUT,
  155.     0
  156. };
  157.  
  158. ULONG mainItems4[]=
  159. {
  160.     IDB_EXIT    ,
  161.     TB_SEPARATOR,
  162.     IDB_HELP    ,
  163.     IDB_ABOUT   ,
  164.     0
  165. };
  166.  
  167.  
  168. TbDef mainTb =
  169. {
  170.     TB_VERTICAL | TB_ATTACHED_LT | TB_BUBBLE,
  171.     ID_TOOLBAR,
  172.     mainItems
  173. };
  174.  
  175. TbDef mainTb1 =
  176. {
  177.     TB_VERTICAL | TB_ATTACHED_RT | TB_BUBBLE,
  178.     ID_TOOLBAR,
  179.     mainItems1
  180. };
  181.  
  182. TbDef mainTb2 =
  183. {
  184.     0           | TB_ATTACHED_TP | TB_BUBBLE,
  185.     ID_TOOLBAR,
  186.     mainItems2
  187. };
  188.  
  189. TbDef mainTb3 =
  190. {
  191.     0           | TB_ATTACHED_BT | TB_BUBBLE,
  192.     ID_TOOLBAR,
  193.     mainItems3
  194. };
  195.  
  196. TbDef mainTb4 =
  197. {
  198.     TB_VERTICAL | TB_FLOATING | TB_BUBBLE,
  199.     ID_TOOLBAR,
  200.     mainItems4
  201. };
  202.  
  203. TbDef mainTb5 =
  204. {
  205.     0           | TB_FLOATING | TB_BUBBLE,
  206.     ID_TOOLBAR,
  207.     mainItems
  208. };
  209.  
  210. ULONG OKMsgBox(PSZ pszText)
  211. {
  212.     return WinMessageBox(HWND_DESKTOP,
  213.                          HWND_DESKTOP,
  214.                          pszText,
  215.                          "Cell Demo",
  216.                          0,
  217.                          MB_OK | MB_INFORMATION | MB_APPLMODAL);
  218. }
  219.  
  220. MRESULT EXPENTRY MainClientProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
  221. {
  222.     WindowCellCtlData *pWCtlData = 0;
  223.  
  224.     pWCtlData = (WindowCellCtlData *)WinQueryWindowULong(hwnd, QWL_USER);
  225.  
  226.     switch(msg)
  227.     {
  228.         case WM_COMMAND:
  229.             switch(SHORT1FROMMP(mp1))
  230.             {
  231.                 case IDB_EXIT:
  232.                     WinPostMsg(hwnd, WM_QUIT, 0L, 0L);
  233.                     return ((MRESULT) NULL);
  234.  
  235.                 case ID_LPANE  :OKMsgBox("Button ID_LPANE pressed!"); break;
  236.                 case ID_RPANE  :OKMsgBox("Button ID_RPANE pressed!"); break;
  237.                 case MAIN_FRAME:OKMsgBox("Button MAIN_FRAME pressed!"); break;
  238.                 case ID_TOOLBAR:OKMsgBox("Button ID_TOOLBAR pressed!"); break;
  239.             }
  240.             break;
  241.  
  242.         case WM_CLOSE:
  243.             WinPostMsg(hwnd, WM_QUIT, 0L, 0L);
  244.             return ((MRESULT) NULL);
  245.     }
  246.     if(pWCtlData)
  247.         return pWCtlData->pOldProc(hwnd, msg, mp1, mp2);
  248.  
  249.     return WinDefWindowProc(hwnd, msg, mp1, mp2);
  250. }
  251.  
  252. INT main(VOID)
  253. {
  254.     HAB hab;
  255.     HMQ hmq;
  256.     QMSG qmsg;
  257.     HWND hwndFrame;
  258.     HWND hwndTb;
  259.     SWP swp;
  260.  
  261.     hab = WinInitialize(0);
  262.  
  263.     if(!hab)
  264.     {
  265.         return -1;
  266.     }
  267.  
  268.     hmq = WinCreateMsgQueue(hab, 0);
  269.  
  270.     if(!hmq)
  271.     {
  272.         WinTerminate(hab);
  273.         return -2;
  274.     }
  275.  
  276.     ToolkitInit(hab);
  277.  
  278.     WinQueryWindowPos(HWND_DESKTOP, &swp);
  279.  
  280.     hwndFrame = CreateCell(&mainClient, HWND_DESKTOP, 0);
  281.     if(hwndFrame)
  282.     {
  283.         HWND hwndSubframe = CellWindowFromID(hwndFrame, ID_LPANE);
  284.  
  285.         WinSetWindowPos(hwndFrame, NULLHANDLE,
  286.                         swp.x + swp.cx / 8,
  287.                         swp.y + swp.cy / 8,
  288.                         (swp.cx / 4) * 3,
  289.                         (swp.cy / 4) * 3,
  290.                         SWP_ACTIVATE | SWP_MOVE | SWP_SIZE | SWP_SHOW);
  291.  
  292.  
  293.         CreateToolbar(hwndFrame, &mainTb);
  294.         CreateToolbar(hwndFrame, &mainTb1);
  295.         CreateToolbar(hwndFrame, &mainTb2);
  296.         CreateToolbar(hwndFrame, &mainTb3);
  297.         CreateToolbar(hwndFrame, &mainTb4);
  298.  
  299.         if(hwndSubframe)
  300.             CreateToolbar(hwndSubframe, &mainTb5);
  301.  
  302.         while (WinGetMsg(hab, &qmsg, 0, 0, 0))
  303.             WinDispatchMsg(hab, &qmsg);
  304.  
  305.         WinDestroyWindow(hwndFrame);
  306.     }
  307.  
  308.     WinDestroyMsgQueue(hmq);
  309.     WinTerminate(hab);
  310.  
  311.     return 0;
  312. }
  313.  
  314.  
  315.