home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / toolbgpf.zip / UFTB.C < prev    next >
Text File  |  1995-01-01  |  4KB  |  172 lines

  1. #define INCL_WIN
  2. #define INLC_DOS
  3.  
  4. #include <os2.h>
  5.  
  6. #include <stdio.h>
  7.  
  8. #include "tb.ext"
  9. #include "tb.ids"
  10. #include "tb.h"
  11. #include "tbx.h"
  12.  
  13. MRESULT EXPENTRY NewFrameProc(HWND, USHORT, MPARAM, MPARAM);
  14. HWND hwndMenuBar,hwndToolBar,hnwdClient;
  15.  
  16. VOID UfMainCreate(PGPFPARMS pGpf)
  17. {
  18. PFNWP pfnwpOldProc;
  19. HMODULE hmod;
  20.  
  21.     pfnwpOldProc= WinSubclassWindow(hwndFrameMain,(PFNWP) NewFrameProc);
  22.     WinSetWindowULong(hwndFrameMain, QWL_USER, (ULONG) pfnwpOldProc);
  23.     hwndMenuBar= WinLoadMenu(hwndFrameMain,(HMODULE)NULL,ID_MAIN);
  24.     hwndToolBar= WinLoadMenu(hwndFrameMain,(HMODULE)NULL,ID_TOOLBAR);
  25. }
  26.  
  27. VOID UfMainCommand(PGPFPARMS pGpf)
  28. {
  29. PSZ psz= (PSZ)NULL;
  30.  
  31.      switch(pGpf->Command){
  32.      case MID_TB_1:
  33.         psz= "Pressed: I";
  34.         WinSendMsg(
  35.             pGpf->hwnd,WM_COMMAND,
  36.             MPFROMSHORT(ID_PULLDOWNEXTENDEDHELP),
  37.             MPFROM2SHORT(CMDSRC_MENU,TRUE));
  38.         break;
  39.      case MID_TB_2:
  40.         psz= "Pressed: II";
  41.         break;
  42.      case MID_TB_3:
  43.         psz= "Pressed: III";
  44.         break;
  45.      case MID_TB_4:
  46.         psz= "Pressed: IV";
  47.         break;
  48.      case MID_TB_5:
  49.         psz= "Pressed: V";
  50.         break;
  51.      case MID_TB_6:
  52.         psz= "Pressed: VI";
  53.         break;
  54.      case MID_TB_7:
  55.         psz= "Pressed: VII";
  56.         break;
  57.      case MID_TB_8:
  58.         psz= "Pressed: VIII";
  59.         break;
  60.      case MID_TB_9:
  61.         psz= "Pressed: IX";
  62.         break;
  63.      case MID_TB_10:
  64.         psz= "Pressed: X";
  65.         break;
  66.      default:
  67.         pGpf->mresult=
  68.             GpfDefWindowProc(pGpf->hwnd,pGpf->msg,pGpf->mp1,pGpf->mp2);
  69.      }
  70.  
  71.     if(psz != NULL)
  72.        WinSetWindowText(hwndFrameMain,psz);
  73.  
  74.      return;
  75.  
  76. }
  77.  
  78. MRESULT EXPENTRY NewFrameProc(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
  79. {
  80. PFNWP pfnwpOldProc;
  81.  
  82.      pfnwpOldProc= (PFNWP) WinQueryWindowULong(hwnd, QWL_USER);
  83.  
  84.      switch(msg){
  85.          case WM_QUERYFRAMECTLCOUNT:
  86.             {
  87.              USHORT usItemCount;
  88.              usItemCount= SHORT1FROMMR(pfnwpOldProc(hwnd,msg,mp1,mp2));
  89.              return (MRESULT) ++usItemCount;
  90.              }
  91.          case WM_FORMATFRAME:
  92.              {PSWP pSWP;
  93.              USHORT usNewMenu;
  94.              USHORT usItemCount;
  95.              USHORT usToolBarIndex=0;
  96.              USHORT usClientIndex=0;
  97.              USHORT usVScrollIndex=0;
  98.              HWND hwndVertScroll;
  99.  
  100.              pSWP= PVOIDFROMMP(mp1);
  101.              usItemCount= SHORT1FROMMR(pfnwpOldProc(hwnd,msg,mp1,mp2));
  102.              for( ;usToolBarIndex<usItemCount;usToolBarIndex++)
  103.                 if(pSWP[usToolBarIndex].hwnd == hwndToolBar)
  104.                    break;
  105.              for( ;usClientIndex<usItemCount;usClientIndex++)
  106.                 if(pSWP[usClientIndex].hwnd == hwndMain)
  107.                    break;
  108.              if((hwndVertScroll =
  109.                 WinWindowFromID(hwnd,FID_VERTSCROLL)) != NULLHANDLE)
  110.                    for( ;usVScrollIndex<usItemCount; usVScrollIndex++)
  111.                       if(pSWP[usVScrollIndex].hwnd == hwndVertScroll)
  112.                          break;
  113.              usNewMenu= usItemCount;
  114.              pSWP[usNewMenu].fl= SWP_SIZE;
  115.              pSWP[usNewMenu].cx= pSWP[usToolBarIndex].cx;
  116.              pSWP[usNewMenu].cy= pSWP[usToolBarIndex].cy;
  117.              pSWP[usNewMenu].hwndInsertBehind= HWND_TOP;
  118.              pSWP[usNewMenu].hwnd= hwndMenuBar;
  119.              WinSendMsg(hwndMenuBar,
  120.                  WM_ADJUSTWINDOWPOS,
  121.                  MPFROMP(pSWP+usNewMenu),(MPARAM)0L);
  122.              pSWP[usNewMenu].x= pSWP[usToolBarIndex].x;
  123.              pSWP[usNewMenu].y= pSWP[usToolBarIndex].y -
  124.                  pSWP[usNewMenu].cy;
  125.              pSWP[usNewMenu].fl= pSWP[usToolBarIndex].fl;
  126.              pSWP[usClientIndex].cy -= pSWP[usNewMenu].cy;
  127.              if(hwndVertScroll != NULLHANDLE)
  128.                 pSWP[usVScrollIndex].cy -= pSWP[usNewMenu].cy;
  129.              return (MRESULT) ++usItemCount;
  130.              }
  131.           default:
  132.              return (pfnwpOldProc(hwnd,msg,mp1,mp2));
  133.              break;
  134.      }
  135.  
  136.      return FALSE;
  137. }
  138.  
  139. VOID UfPBDel(PGPFPARMS pGpf)
  140. {
  141.     WinSendMsg(
  142.         hwndToolBar,
  143.         MM_DELETEITEM,
  144.         MPFROM2SHORT(MID_TB_9,FALSE),
  145.         (MPARAM)0L);
  146. }
  147.  
  148. VOID UfPBAdd(PGPFPARMS pGpf)
  149. {
  150. HBITMAP hbm;
  151. MENUITEM mi;
  152. HPS hps;
  153.  
  154.     hps= WinGetPS(hwndToolBar);
  155.     hbm= GpiLoadBitmap(hps,NULLHANDLE,MID_EXTRA,32L,32L);
  156.     mi.iPosition= 9;
  157.     mi.afStyle= MIS_BITMAP;
  158.     mi.afAttribute= 0;
  159.     mi.id= MID_EXTRA;
  160.     mi.hItem= (ULONG)hbm;
  161.  
  162.     WinSendMsg(
  163.         hwndToolBar,
  164.         MM_INSERTITEM,
  165.         MPFROMP(&mi),
  166.        (MPARAM)0L);
  167.  
  168.     WinReleasePS(hps);
  169. }
  170.  
  171.  
  172.