home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 3 Comm / 03-Comm.zip / SLIDCO.ZIP / SLIDCOM.C < prev    next >
C/C++ Source or Header  |  1993-02-02  |  8KB  |  306 lines

  1. #define INCL_PM
  2. #define INCL_DOS
  3. #define  INCL_WINSYS
  4. #define INCL_DOSDEVIOCTL
  5.  
  6. #include <os2.h>
  7. #include "protype.h"
  8. #include "sliddlg.h"
  9.  
  10. #define RETURN_SUCCESS      0            /* successful return in DosExit */
  11. #define RETURN_ERROR        1            /* error return in DosExit      */
  12. #define BEEP_WARN_FREQ      60           /* frequency of warning beep    */
  13. #define BEEP_WARN_DUR      100           /* duration of warning beep     */
  14.  
  15. CHAR PrintBuf[80];
  16.  
  17. HAB           hab;
  18. HMQ           hmq;
  19. HWND           hwndMainFrame;
  20. HWND           hwndMain;
  21. HWND           hwndDlg;
  22. QMSG           qmsg;
  23.  
  24. HFILE         HandleComm;
  25.  
  26. CHAR szClientClass1[MAXNAMEL];
  27.  
  28. ULONG flFrameFlags = FCF_TITLEBAR | FCF_SYSMENU      |
  29.                      FCF_SIZEBORDER | FCF_MINMAX |
  30.                      FCF_SHELLPOSITION | FCF_TASKLIST |
  31.                             FCF_MENU;
  32.  
  33. /****************************************************************************
  34.                       M A I N
  35. ****************************************************************************/
  36.  
  37. int main(VOID)
  38. {
  39.    ULONG ulCtlData;      /* frame control data */
  40.  
  41.    hab = WinInitialize(0);
  42.    if(!hab)
  43.    {
  44.       DosBeep(BEEP_WARN_FREQ, BEEP_WARN_DUR);
  45.       return(RETURN_ERROR);
  46.    }
  47.  
  48.    hmq = WinCreateMsgQueue(hab, 0);
  49.    if(!hmq)
  50.    {
  51.       DosBeep(BEEP_WARN_FREQ, BEEP_WARN_DUR);
  52.       WinTerminate(hab);
  53.       return(RETURN_ERROR);
  54.    }
  55.  
  56.  
  57.     if ( DosExitList(EXLST_ADD, (PFNEXITLIST)ExitProc) )
  58.         {
  59.       MessageBox(HWND_DESKTOP,
  60.                    IDMSG_CANNOTLOADEXITLIST,
  61.                    MB_OK | MB_ERROR,
  62.                    TRUE);
  63.       
  64.         DosExit(EXIT_PROCESS, RETURN_ERROR);
  65.         }
  66.  
  67.  
  68.     if( !WinLoadString(hab, (HMODULE)0, IDS_CLIENT1CLASS,
  69.                               MAXNAMEL, szClientClass1))
  70.        {
  71.       MessageBox(HWND_DESKTOP,
  72.                    IDMSG_TEST,
  73.                    MB_OK | MB_ERROR,
  74.                    TRUE);
  75.  
  76.        return (0);
  77.     }
  78.     
  79.  
  80.     if ( !WinRegisterClass ( hab,
  81.                     (PSZ)szClientClass1,
  82.                     (PFNWP)ClientWndProc,
  83.                     CS_SIZEREDRAW | CS_CLIPCHILDREN,
  84.                     0) )
  85.        {
  86.       MessageBox(HWND_DESKTOP,
  87.                    IDMSG_TEST,
  88.                    MB_OK | MB_ERROR,
  89.                    TRUE);
  90.  
  91.        return (0);
  92.        }
  93.    
  94.    ulCtlData = FCF_STANDARD;
  95.  
  96.  
  97.     hwndMainFrame = WinCreateStdWindow( HWND_DESKTOP,
  98.                                    WS_VISIBLE,
  99.                                    (PVOID)&ulCtlData,
  100.                                    (PSZ)szClientClass1,
  101.                                    (PSZ)NULL,
  102.                                    WS_VISIBLE,
  103.                                    (HMODULE)NULL,
  104.                                    IDR_MAIN_MENU_WIN1,
  105.                                    (PHWND)&hwndMain);
  106.     if (hwndMainFrame == 0)
  107.         {
  108.     
  109.       MessageBox(HWND_DESKTOP,
  110.                    IDMSG_TEST,
  111.                    MB_OK | MB_ERROR,
  112.                    TRUE);
  113.         return(0);
  114.         }
  115.    
  116.    WinSetWindowText(hwndMainFrame, szClientClass1);
  117.  
  118.    HandleComm = 0;
  119.  
  120.    InitTermDriver();
  121.  
  122.    while(WinGetMsg(hmq, (PQMSG)&qmsg, 0, 0, 0))
  123.        WinDispatchMsg(hmq, (PQMSG)&qmsg);
  124.  
  125.     WinDestroyMsgQueue(hmq);
  126.     WinTerminate(hab);
  127.     return 0;
  128.  
  129. }
  130.  
  131. /****************************************************************************
  132.  
  133. ****************************************************************************/
  134. MRESULT EXPENTRY ClientWndProc (HWND hwnd,USHORT msg, MPARAM mp1 ,MPARAM mp2)
  135. {
  136.  
  137.     switch (msg)
  138.         {
  139.         case WM_PAINT:
  140.                MainPaint(CLR_BLUE,hwnd);
  141.                break;
  142.         
  143.       case WM_COMMAND:
  144.             MainCommand(mp1, mp2);
  145.                break;
  146.  
  147.         default:
  148.             return(WinDefWindowProc(hwnd, msg, mp1, mp2));
  149.             break;
  150.  
  151.    }
  152.    return (MRESULT)0;
  153. }
  154.  
  155. /****************************************************************************
  156.  
  157. ****************************************************************************/
  158. VOID MainPaint(ULONG color, HWND hwnd)
  159. {
  160.     RECTL rclUpdate;
  161.     HPS hps;
  162.  
  163.     hps = WinBeginPaint(hwnd, NULLHANDLE, (PRECTL)&rclUpdate);
  164.  
  165.     WinFillRect(hps, (PRECTL)&rclUpdate, color);
  166.  
  167.     WinEndPaint(hps);
  168.  
  169.  
  170. /*****************************************************************************
  171.  
  172. *****************************************************************************/
  173.  
  174. VOID APIENTRY ExitProc(USHORT usTermCode)
  175. {
  176.  
  177.     WinDestroyMsgQueue(hmq);
  178.  
  179.     WinTerminate(hab);
  180.  
  181.     DosExitList(EXLST_EXIT, (PFNEXITLIST)ExitProc);
  182.  
  183.     usTermCode;
  184.  
  185.  
  186. /*****************************************************************************
  187. *****************************************************************************/
  188. SHORT MessageBox(HWND hwndOwner, SHORT idMsg, SHORT fsStyle, BOOL fBeep)
  189. {
  190.    CHAR szText[MESSAGELEN];
  191.  
  192.    if(!WinLoadMessage(hab, (HMODULE)NULL, idMsg, MESSAGELEN, (PSZ)szText))
  193.    {
  194.       WinAlarm(HWND_DESKTOP, WA_ERROR);
  195.       return MBID_ERROR;
  196.    }
  197.  
  198.    if(fBeep)
  199.       WinAlarm(HWND_DESKTOP, WA_ERROR);
  200.  
  201.    return(WinMessageBox(HWND_DESKTOP, hwndOwner, szText, (PSZ)NULL,
  202.           IDD_MSGBOX, fsStyle));
  203.  
  204.  
  205. /****************************************************************************
  206.  
  207. ****************************************************************************/
  208.  
  209. VOID WinDebugMsg(char *DebugMsg,HWND hwnd)
  210. {
  211.  
  212.    char *StrBuf;
  213.  
  214.    int end_of_line,insert_pos,start_of_filename;
  215.  
  216.    StrBuf = DebugMsg;
  217.  
  218.    end_of_line = 0;
  219.    while (StrBuf[end_of_line++] != '\0');
  220.    end_of_line--;
  221.  
  222.    insert_pos = 0;
  223.    while (StrBuf[insert_pos++] != '\\');
  224.    insert_pos -= 3;
  225.  
  226.    start_of_filename = end_of_line;
  227.    while (StrBuf[start_of_filename--] != '\\');
  228.    start_of_filename++;
  229.  
  230.    while (StrBuf[start_of_filename++] != '\0')
  231.       {
  232.       StrBuf[insert_pos++] = StrBuf[start_of_filename];
  233.       }
  234.  
  235.    StrBuf[insert_pos] = '\0';
  236.  
  237.    WinMessageBox(HWND_DESKTOP, hwnd, DebugMsg, "Debug Message",
  238.                      0, MB_NOICON | MB_OK  );
  239.  
  240. }
  241.  
  242. /****************************************************************************
  243.  
  244. ****************************************************************************/
  245. BOOL CommPortOpen(HWND hwnd)
  246. {
  247.  
  248.    if (HandleComm == 0)
  249.       {
  250.        MessageBox(HWND_DESKTOP,
  251.                    IDMSG_NOCOMMPORTSELECTED,
  252.                    MB_OK | MB_ERROR,
  253.                    TRUE);
  254.  
  255.       return FALSE;
  256.       }
  257.    else
  258.       return TRUE;
  259.  
  260. }
  261.  
  262. /****************************************************************************
  263.  
  264. ****************************************************************************/
  265. VOID MainCommand(MPARAM mp1, MPARAM mp2)
  266. {
  267.    static SHORT sIdDlg;
  268.    SHORT sOptions, sIdText;
  269.    APIRET  rc;
  270.  
  271.    switch(SHORT1FROMMP(mp1))
  272.       {
  273.         case IDM_PORT_SELECTION:      //Menu selection ID
  274.             sIdDlg = IDD_PORT_SELECT;  //Dialog selection ID
  275.                rc = WinDlgBox(HWND_DESKTOP, hwndMain,
  276.                             (PFNWP)ComSelectDlgProc,
  277.                             (HMODULE)0, sIdDlg, 
  278.                      (PVOID)&sIdDlg); 
  279.                break;
  280.  
  281.         case IDM_PORT_INIT:      //Menu selection ID
  282.             sIdDlg = IDD_PORT_INIT;  //Dialog selection ID
  283.                rc = WinDlgBox(HWND_DESKTOP, hwndMain,
  284.                             (PFNWP)ComInitDlgProc,
  285.                             (HMODULE)0, sIdDlg, 
  286.                      (PVOID)&sIdDlg); 
  287.                break;
  288.  
  289.         case IDM_SLIDER_CONTROL:      //Menu selection ID
  290.             sIdDlg = IDD_SLIDER_CONTROL;  //Dialog selection ID
  291.                rc = WinDlgBox(HWND_DESKTOP, hwndMain,
  292.                             (PFNWP)SliderDlgProc,
  293.                             (HMODULE)0, sIdDlg, 
  294.                      (PVOID)&sIdDlg); 
  295.                break;
  296.  
  297.        default:
  298.             break;
  299.    }
  300.  
  301.  
  302.