home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / devpl016.zip / DWP.C < prev    next >
Text File  |  1994-02-07  |  41KB  |  1,155 lines

  1. /***************************************************************************/
  2. /* Development Work Place                                                  */
  3. /*                                                                         */
  4. /* Version 0.11   1991/11/25 Release Profile/WinCreateStdWindow support    */
  5. /* Version 0.14   1991/11/29 Release New CLEAR Command/argv parm support   */
  6. /* Version 0.15   1991/11/29 Release \pipe\text to \pipe\dwp change        */
  7. /* Version 0.16   1991/12/22 Release Codeview option add                   */
  8. /*                                                                         */
  9. /***************************************************************************/
  10.  
  11. // ***** Window title bar string *****
  12. #define    MAIN_TITLE  " : Development Work Place Version 0.16"
  13.  
  14.  
  15.  
  16. #define INCL_WIN                     // *** PMâwâbâ_ü[üEâtâ@âCâïé╠è╓ÿAòöò¬ 
  17. #define INCL_GPI                     // *** é≡æIæ≡é╡é─âCâôâNâïü[âh         
  18. //#define INCL_DOSPROCESS
  19. #define INCL_BASE
  20.  
  21. #include <os2.h>
  22. #include <string.h>                     /*C/2âXâgâèâôâOè╓Éö                 */
  23. #include <stdlib.h>
  24. #include <stdio.h>
  25. #include "DWP.h"                    /*âèâ\ü[âXïLìåID                    */
  26.  
  27.  
  28.  
  29. /* ï@ö\âvâìâgâ^âCâv                                                         */
  30. MRESULT EXPENTRY MyWindowProc( HWND hwnd, USHORT msg, MPARAM mp1,MPARAM mp2);
  31. MRESULT EXPENTRY MyDlgProc( HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 );
  32. MRESULT EXPENTRY MakeDlgProc(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 );
  33. MRESULT EXPENTRY RunDlgProc(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 );
  34. MRESULT EXPENTRY GseeEntry( HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 );
  35. MRESULT EXPENTRY GrepEntry( HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 );
  36. int pm_session(char *pgmname,char *parm,char *title);
  37. int TextWinB_session(char *pgmname,char *parm,char *title);
  38. int TextWinF_session(char *pgmname,char *parm,char *title);
  39. int TextFullF_session(char *pgmname,char *parm,char *title);
  40. VOID GetParmFile(char *FileName);
  41. VOID WriteParmFile(char *FileName);
  42.  
  43. VOID cdecl main(int argc,char **argv);
  44. USHORT    server_thread(void);
  45.  
  46.  
  47. #define LENGTH_STRING      33              // *** èeâpâëâüü[â^ü[âXâgâèâôâOé╠Æ╖é│
  48. #define ID_TIMER           1        // *** timer id
  49. #define    MAXLEN           100        // *** ëíò¥é╠ì┼æσÆl
  50. #define    MAXLINE           3000        // *** Åcìsé╠ì┼æσÆl
  51. #define    PARM_FILE      "dwp.pro"    // *** âpâëâüü[â^ü[èiö[ùpé╠âvâìâtâ@âCâï
  52.  
  53.  
  54. USHORT    linebf_end;
  55. CHAR  szEDITPARM[LENGTH_STRING]  = "";   // ╒░╗▐░é¬ôⁿù═é╡é╜Editor parm
  56. CHAR  szMAKEPARM[LENGTH_STRING]  = "";   // ╒░╗▐░é¬ôⁿù═é╡é╜MAKE parm
  57. CHAR  szRUNPARM[LENGTH_STRING]   = "";   // ╒░╗▐░é¬ôⁿù═é╡é╜RUN  parm
  58. CHAR  szGSEEPARM[LENGTH_STRING]  = "";   // ╒░╗▐░é¬ôⁿù═é╡é╜GSEE parm
  59. CHAR  szGREPPARM[LENGTH_STRING]  = "";   // ╒░╗▐░é¬ôⁿù═é╡é╜GREP parm
  60. CHAR  szGREPPARM2[LENGTH_STRING] = "";   // ╒░╗▐░é¬ôⁿù═é╡é╜GREP parm
  61.  
  62.  
  63. char huge linebf[MAXLINE][MAXLEN+1];    // *** ô╟é▌ì₧é▐âpâCâvâoâbâtâ@ü[
  64. extern USHORT  st_len=0;        // âèü[âhâoâbâtâ@é╠î╗ì▌é╠Æ╖é│.
  65.  
  66.  
  67.  
  68.                                         /*â^âCâvé▓é╞é╔âpâëâüü[â^ü[é≡ÆΦï`é╖éΘ*/
  69. HAB   hab;                              /*âAâôâJü[üEâuâìâbâNüEânâôâhâï      */
  70. HMQ   hmq;                              /*âüâbâZü[âWæ╥é┐ìsù±ânâôâhâï        */
  71. HWND  hwndClient;                       /*âNâëâCâAâôâgüEâEâBâôâhâEüEânâôâhâï*/
  72.  
  73.  
  74. // *** WinCreateStdWindow é┼É╢ɼé╖éΘ│¿▌─▐⌐é╠âXâ^âCâï
  75. ULONG flCreate = (FCF_STANDARD |  FCF_VERTSCROLL  | FCF_HORZSCROLL) ;
  76.  
  77.  
  78. HWND  hwndFrame;                        /*âtâîü[âÇüEâEâBâôâhâEüEânâôâhâï    */
  79. BYTE abStackArea[4096];
  80.  
  81. PVOID    pStack1=abStackArea+4096;
  82. TID    tidThread1;
  83.  
  84. USHORT disp_flag=0;        // ò\Īì╧é▌âtâëâOé╠ÆΦï`é╞âNâèâAü[
  85.  
  86. BOOL    cancelFLAG=0;        // *** GSEE/GREPùpé╠[cancel]Ä₧é╠âtâëâO
  87. BOOL    subdirsFLAG=0;        // *** GREPé╠╗╠▐├▐¿┌╕─╪░ùpé╠╠╫╕▐
  88.  
  89.  
  90. /**********************  âüâCâôüEâvâìâVü[âWââü[é╠Äné▀ ***********************/
  91. VOID cdecl main(int argc,char **argv)
  92. {
  93.   QMSG  qmsg;
  94.   int    retcode;
  95.  
  96.   // ***** ùºé┐Åπé░é╠Ä₧é╠âpâëâüü[â^ü[é┼Ä⌐ô«ôIé╔PROFILEé≡âZâbâgé╖éΘü@*****
  97.   // ***** é╡é⌐é╡DWP.PROé¬éáéΩé╬é╗éΩé¬ùDɵé│éΩéΘ
  98.   if(1 != argc)
  99.     {
  100.     strcpy(szEDITPARM,argv[1]);    strcat(szEDITPARM,".C");  
  101.     strcpy(szMAKEPARM,argv[1]);    strcat(szMAKEPARM,".EXE");  
  102.     strcpy(szRUNPARM,argv[1]);    strcat(szRUNPARM,".EXE");  
  103.     }
  104.  
  105.   // ***** PM é╠ÅÇö⌡èJÄn *****
  106.   hab = WinInitialize( NULL );
  107.   hmq = WinCreateMsgQueue( hab, 0 );
  108.  
  109.  
  110.   WinRegisterClass(                     /*âEâBâôâhâEüEâNâëâXé≡ôoÿ^é╖éΘ     */
  111.       hab,                              /*âAâôâJü[üEâuâìâbâNüEânâôâhâï     */
  112.       "MyWindow",                       /*âEâBâôâhâEüEâNâëâXû╝             */
  113.       MyWindowProc,                     /*âEâBâôâhâEüEâvâìâVü[âWââü[é╠âAâh */
  114.                                         /*âîâX                             */
  115.       CS_SIZEREDRAW,                    /*âNâëâXüEâXâ^âCâï                 */
  116.       0                                 /*Æ╟ë┴é╠âEâBâôâhâEüEâÅü[âhé═é╚éó   */
  117.       );
  118.  
  119.     // ***** òWÅÇ│¿▌─▐⌐é≡ì∞ɼ *****
  120.   hwndFrame = WinCreateStdWindow(
  121.         HWND_DESKTOP,                   /*âfâXâNâgâbâvüEâEâBâôâhâEé¬Ée     */
  122.     WS_VISIBLE,                        /*âtâîü[âÇüEâXâ^âCâï               */
  123.     &flCreate,                      /*âtâîü[âÇɺîΣâtâëâOü@ü@ü@ü@       */
  124.         "MyWindow",                     /*âEâBâôâhâEüEâNâëâXû╝ü@ü@ü@ü@ü@ü@ */
  125.     MAIN_TITLE,
  126.                         /*âEâBâôâhâEüEâ^âCâgâï             */
  127.         0L,                            /*ë┬ÄïâEâBâôâhâEé╠âNâëâCâAâôâgüEâX */
  128.                                     /*â^âCâï                           */
  129.         NULL,                           /*âèâ\ü[âXé═.EXEâtâ@âCâïôαé╔éáéΘ   */
  130.         ID_MAINWND,                     /*âtâîü[âÇüEâEâBâôâhâEÄ»ò╩Äq       */
  131.         (PHWND)&hwndClient              /*âNâëâCâAâôâgüEâEâBâôâhâEüEü@ü@ü@ */
  132.                                         /*ânâôâhâï                         */
  133.       );
  134.  
  135.     // ***** Window é≡ì┼æσë╗é╖éΘ *****
  136.     WinSetWindowPos ( hwndFrame , NULL , 0 , 0 , 0 , 0 ,
  137.              SWP_MAXIMIZE | SWP_ACTIVATE
  138.              );
  139.  
  140.  
  141.     // ***** âpâCâvô╟é▌ì₧é▌âXâîâbâhé≡É╢ɼ *****
  142.     retcode=DosCreateThread(server_thread,
  143.                &tidThread1,
  144.                pStack1
  145.                    );
  146.  
  147.  
  148.     if(retcode >= 1 )  DosBeep(500,700);    
  149.  
  150.  
  151.  
  152.  
  153.  
  154. /***************************************************************************/
  155. /*WinGetMsgé¬WM_QUITâüâbâZü[âWé≡Īé╖FALSEé≡û▀é╖é▄é┼üCôKùpï╞û▒âüâbâZü[âW    */
  156. /*æ╥é┐ìsù±é⌐éτâüâbâZü[âWé≡ĵéΦÅoé╡é─üCözòzé╖éΘ                             */
  157. /***************************************************************************/
  158.  
  159.  
  160.      if (WinStartTimer (hab, hwndClient, ID_TIMER, 1000))
  161.           {
  162.       while( WinGetMsg( hab, (PQMSG)&qmsg, (HWND)NULL, 0, 0 ) )
  163.         WinDispatchMsg( hab, (PQMSG)&qmsg );
  164.  
  165.           WinStopTimer (hab, hwndClient, ID_TIMER) ;
  166.           }
  167.      else
  168.           WinMessageBox (HWND_DESKTOP, hwndClient,
  169.                          "Too many clocks or timers",
  170.                          "Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ;
  171.  
  172.  
  173.   WinDestroyWindow( hwndFrame );        /*É«ù¥é╡,...                       */
  174.   WinDestroyMsgQueue( hmq );            /*é╗é╠îπ                           */
  175.  
  176.  
  177.     WriteParmFile(PARM_FILE);    // *** ╩▀╫╥░└░èiö[╠º▓┘û╝
  178.  
  179.  
  180.   WinTerminate( hab );                  /*ôKùpï╞û▒é≡ÅIù╣é╖éΘ               */
  181.  }
  182.  
  183.  
  184.  
  185. /***********************  âüâCâôüEâvâìâVü[âWââü[é╠ÅIéφéΦ  *******************/
  186.  
  187. /*********************  âEâBâôâhâEüEâvâìâVü[âWââü[é╠Äné▀  *******************/
  188. MRESULT EXPENTRY MyWindowProc ( HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 )
  189. {
  190.  
  191. // ***** ╛»╝«▌ïNô«ùpé╠ò╧Éö  *****
  192.     char    *pgmname;
  193.     char    *parm;
  194.     char    pp_parm[80];
  195.     char    *title;
  196.  
  197.  
  198.      static HWND  hwndHscroll, hwndVscroll ;
  199.      static SHORT sHscrollMax, sVscrollMax, sHscrollPos, sVscrollPos,
  200.                   cxChar, cxCaps, cyChar, cyDesc, cxClient, cyClient,
  201.                   cxTextTotal ;
  202.      FONTMETRICS  fm ;
  203.      HPS          hps ;
  204.      POINTL       ptl ;
  205.      SHORT        sLine, sPaintBeg, sPaintEnd, sHscrollInc, sVscrollInc ;
  206.      RECTL        rclInvalid ;
  207.      USHORT      end_st,t;
  208.  
  209.      static USHORT      run1_sessret=0;
  210.      static USHORT      run2_sessret=0;
  211.      static USHORT      run3_sessret=0;
  212.      static USHORT      run7_sessret=0;
  213.      static USHORT      run8_sessret=0;
  214.      static USHORT      run9_sessret=0;
  215.  
  216.  
  217.   switch( msg )
  218.   {
  219.     case WM_CREATE:
  220.       /*âEâBâôâhâEé╠Åëè·É▌ÆΦ                            */
  221.  
  222.  
  223.         GetParmFile(PARM_FILE);        // *** parameter fileé⌐éτ
  224.                         // *** szXXXXXX é╠dataé≡ĵéΘ
  225.  
  226.                hps = WinGetPS (hwnd) ;
  227.                GpiQueryFontMetrics (hps, (LONG) sizeof fm, &fm) ;
  228.  
  229.                cxChar = (SHORT) fm.lAveCharWidth ;
  230.                cxCaps = (SHORT) fm.lEmInc ;
  231.                cyChar = (SHORT) fm.lMaxBaselineExt ;
  232.                cyDesc = (SHORT) fm.lMaxDescender ;
  233.  
  234.                WinReleasePS (hps) ;
  235.  
  236.                cxTextTotal = 28 * cxCaps + 38 * cxChar ;
  237.  
  238.                hwndHscroll = WinWindowFromID (
  239.                                    WinQueryWindow (hwnd, QW_PARENT, FALSE),
  240.                                    FID_HORZSCROLL) ;
  241.  
  242.                hwndVscroll = WinWindowFromID (
  243.                                    WinQueryWindow (hwnd, QW_PARENT, FALSE),
  244.                                    FID_VERTSCROLL) ;
  245.  
  246.     return 0 ;
  247.  
  248.  
  249.     case WM_COMMAND:
  250.  
  251.       /**********************************************************************/
  252.       /*                                                                    */
  253.       /**********************************************************************/
  254.       switch ( SHORT1FROMMP( mp1 ) )
  255.       {
  256.  
  257.     // ********** ÄqâvâìâZâXé╠Ä└ìs(editor) **********
  258.     case ID_RUN1:
  259.     title = "DWP Editors MIFES(PM)";
  260.     pgmname = "mipm.exe";
  261.  
  262.     if(run1_sessret==0)
  263.         {
  264.         run1_sessret=pm_session(pgmname,szEDITPARM,title);
  265.         if(run1_sessret == 0) {
  266.               WinMessageBox (HWND_DESKTOP, hwndClient,
  267.                          "Session can't start",
  268.                          "Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
  269.         }
  270.     else
  271.         {
  272.         if(0 != DosSelectSession(run1_sessret,0L))
  273.         {
  274.         run1_sessret=pm_session(pgmname,szEDITPARM,title);
  275.         if(run1_sessret == 0) {
  276.               WinMessageBox (HWND_DESKTOP, hwndClient,
  277.                          "Session can't start",
  278.                          "Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
  279.  
  280.         }
  281.         }
  282.  
  283.     break;
  284.  
  285.     // ********** ÄqâvâìâZâXé╠Ä└ìs(make) **********
  286.     case ID_RUN2:
  287.     title = "DWP Compile NMAKE";
  288.     pgmname = "cmd.exe";
  289.     strcpy(pp_parm,"/c nmake ");
  290.     strcat(pp_parm,szMAKEPARM);
  291.     strcat(pp_parm," >\\pipe\\dwp");
  292. //    parm = "/c nmake *.exe >\\pipe\\dwp";       // <==============
  293.     TextWinB_session(pgmname,pp_parm,title);    
  294.     break;
  295.  
  296.  
  297.     // ********** ÄqâvâìâZâXé╠Ä└ìs(QH) **********
  298.     case ID_RUN3:
  299.     title = "DWP Qick Help";
  300.     pgmname = "cmd.exe";
  301.     parm = "/c QH";       // <==============
  302.  
  303.     if(run3_sessret==0)
  304.         {
  305.         run3_sessret=TextFullF_session(pgmname,parm,title);
  306.         if(run3_sessret == 0) {
  307.               WinMessageBox (HWND_DESKTOP, hwndClient,
  308.                          "Session can't start",
  309.                          "Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
  310.         }
  311.     else
  312.         {
  313.         if(0 != DosSelectSession(run3_sessret,0L))
  314.         {
  315.         run3_sessret=TextFullF_session(pgmname,parm,title);
  316.         if(run3_sessret == 0) {
  317.               WinMessageBox (HWND_DESKTOP, hwndClient,
  318.                          "Session can't start",
  319.                          "Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
  320.  
  321.         }
  322.         }
  323.     break;
  324.  
  325.  
  326.  
  327.     // ********** ÄqâvâìâZâXé╠Ä└ìs(GSEE) **********
  328.     case ID_RUN4:
  329.  
  330.           WinDlgBox( HWND_DESKTOP,      /* âfâXâNâgâbâvé╠é╟é▒é⌐é╔Æué¡   */
  331.                      hwndFrame,         /* âtâîü[âÇé╔éµé┴é─ÅèùLé│éΩéΘ   */
  332.                      GseeEntry,         /* â_âCâAâìâOüEâvâìâVü[âWââü[é╠ */
  333.                                         /* âAâhâîâX                     */
  334.                      NULL,              /* âéâWâàü[âïüEânâôâhâï         */
  335.                      ID_GSEEDLG,        /* âèâ\ü[âXôαé╠â_âCâAâìâOÄ»ò╩Äq */
  336.                      NULL );            /* Åëè·É▌ÆΦâfü[â^               */
  337.           WinInvalidateRegion( hwnd, NULL, FALSE ); /* ï¡ÉºôIé╔ôhéΦÆ╝é╡ */
  338.  
  339.  
  340.     title = "DWP File name search";
  341.     pgmname = "cmd.exe";
  342.     strcpy(pp_parm ,"/c gsee ");
  343.     strcat(pp_parm,szGSEEPARM);
  344.     strcat(pp_parm," >\\pipe\\dwp");       
  345.     TextWinB_session(pgmname,pp_parm,title);
  346.     break;
  347.  
  348.  
  349.     // ********** ÄqâvâìâZâXé╠Ä└ìs(GREP) **********
  350.     case ID_RUN5:
  351.  
  352.           WinDlgBox( HWND_DESKTOP,      /* âfâXâNâgâbâvé╠é╟é▒é⌐é╔Æué¡   */
  353.                      hwndFrame,         /* âtâîü[âÇé╔éµé┴é─ÅèùLé│éΩéΘ   */
  354.                      GrepEntry,         /* â_âCâAâìâOüEâvâìâVü[âWââü[é╠ */
  355.                                         /* âAâhâîâX                     */
  356.                      NULL,              /* âéâWâàü[âïüEânâôâhâï         */
  357.                      ID_GREPDLG,        /* âèâ\ü[âXôαé╠â_âCâAâìâOÄ»ò╩Äq */
  358.                      NULL );            /* Åëè·É▌ÆΦâfü[â^               */
  359.  
  360.     if(cancelFLAG==1) break;    // *** ÄµéΦÅ┴é╡Ä₧é╔┘░┴▌é⌐éτö▓é»éΘ
  361.  
  362.           WinInvalidateRegion( hwnd, NULL, FALSE ); /* ï¡ÉºôIé╔ôhéΦÆ╝é╡ */
  363.  
  364.     title = "DWP Source search";
  365.     pgmname = "cmd.exe";
  366.     strcpy(pp_parm ,"/c grep ");
  367.         if(subdirsFLAG==1) strcat(pp_parm,"-r ");
  368.  
  369.     strcat(pp_parm,szGREPPARM);
  370.         if(szGREPPARM[0]=='\0') strcpy(szGREPPARM,"*.*");  //defult
  371.  
  372.     strcat(pp_parm," ");        // *** ïµÉ╪éΦò╢ÄÜ
  373.     strcat(pp_parm,szGREPPARM2);
  374.     strcat(pp_parm," >\\pipe\\dwp");       
  375.     TextWinB_session(pgmname,pp_parm,title);
  376.     break;
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.     // ********** ÄqâvâìâZâXé╠Ä└ìs(User PROGRAM) **********
  384.     case ID_RUN7:
  385.     title = "*** DWP CVP ***";
  386.     pgmname = "cmd.exe";
  387.     parm = "/c cvp ";       // <==============
  388.     strcat(parm,szRUNPARM);
  389.  
  390.         run7_sessret=TextFullF_session(pgmname,parm,title);
  391.         if(run7_sessret == 0) {
  392.               WinMessageBox (HWND_DESKTOP, hwndClient,
  393.                          "Session can't start",
  394.                          "Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
  395.     break;
  396.  
  397.  
  398.  
  399.     // ********** ÄqâvâìâZâXé╠Ä└ìs(User PROGRAM) **********
  400.     case ID_RUN8:
  401.     title = "DWP User Program";
  402.     pgmname = "cmd.exe";
  403.     parm = "/c ";       // <==============
  404.     strcat(parm,szRUNPARM);
  405.  
  406.         run8_sessret=TextFullF_session(pgmname,parm,title);
  407.         if(run8_sessret == 0) {
  408.               WinMessageBox (HWND_DESKTOP, hwndClient,
  409.                          "Session can't start",
  410.                          "Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
  411.     break;
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.     // ********** âRâ}âôâhâvâìâôâvâgüEâvâìâZâXé╠Ä└ìs **********
  421.     case ID_RUN9:
  422.     title = "DWP Command Prompt";
  423.     pgmname = "cmd.exe";
  424.     parm = "";       // <==============
  425.     if(run9_sessret==0)
  426.         {
  427.         run9_sessret=TextWinF_session(pgmname,parm,title);
  428.         if(run9_sessret == 0) {
  429.               WinMessageBox (HWND_DESKTOP, hwndClient,
  430.                          "Session can't start",
  431.                          "Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
  432.         }
  433.     else
  434.         {
  435.         if(0 != DosSelectSession(run9_sessret,0L))
  436.         {
  437.         run9_sessret=TextWinF_session(pgmname,parm,title);
  438.         if(run9_sessret == 0) {
  439.               WinMessageBox (HWND_DESKTOP, hwndClient,
  440.                          "Session can't start",
  441.                          "Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
  442.  
  443.         }
  444.         }
  445.  
  446.     break;
  447.  
  448.  
  449.  
  450.  
  451.     // ********** editor path and filename é╠É▌ÆΦ (entry) *********
  452.     case ID_SET1:
  453.           WinDlgBox( HWND_DESKTOP,      /* âfâXâNâgâbâvé╠é╟é▒é⌐é╔Æué¡   */
  454.                      hwndFrame,         /* âtâîü[âÇé╔éµé┴é─ÅèùLé│éΩéΘ   */
  455.                      MyDlgProc,         /* â_âCâAâìâOüEâvâìâVü[âWââü[é╠ */
  456.                                         /* âAâhâîâX                     */
  457.                      NULL,              /* âéâWâàü[âïüEânâôâhâï         */
  458.                      ID_MYDIALOG,       /* âèâ\ü[âXôαé╠â_âCâAâìâOÄ»ò╩Äq */
  459.                      NULL );            /* Åëè·É▌ÆΦâfü[â^               */
  460.           WinInvalidateRegion( hwnd, NULL, FALSE ); /* ï¡ÉºôIé╔ôhéΦÆ╝é╡ */
  461.           break;
  462.  
  463.  
  464.     // ********** MAKE terget File(exe) é╠É▌ÆΦ (entry) *********
  465.     case ID_SET2:
  466.           WinDlgBox( HWND_DESKTOP,      /* âfâXâNâgâbâvé╠é╟é▒é⌐é╔Æué¡   */
  467.                      hwndFrame,         /* âtâîü[âÇé╔éµé┴é─ÅèùLé│éΩéΘ   */
  468.                      MakeDlgProc,       /* â_âCâAâìâOüEâvâìâVü[âWââü[é╠ */
  469.                                         /* âAâhâîâX                     */
  470.                      NULL,              /* âéâWâàü[âïüEânâôâhâï         */
  471.                      ID_MAKEDLG,       /* âèâ\ü[âXôαé╠â_âCâAâìâOÄ»ò╩Äq */
  472.                      NULL );            /* Åëè·É▌ÆΦâfü[â^               */
  473.           WinInvalidateRegion( hwnd, NULL, FALSE ); /* ï¡ÉºôIé╔ôhéΦÆ╝é╡ */
  474.           break;
  475.  
  476.  
  477.     // ********** USER_EXEC RUN terget File(exe) é╠É▌ÆΦ (entry) *********
  478.     case ID_SET3:
  479.           WinDlgBox( HWND_DESKTOP,      /* âfâXâNâgâbâvé╠é╟é▒é⌐é╔Æué¡   */
  480.                      hwndFrame,         /* âtâîü[âÇé╔éµé┴é─ÅèùLé│éΩéΘ   */
  481.                      RunDlgProc,       /* â_âCâAâìâOüEâvâìâVü[âWââü[é╠ */
  482.                                         /* âAâhâîâX                     */
  483.                      NULL,              /* âéâWâàü[âïüEânâôâhâï         */
  484.                      ID_RUNDLG,       /* âèâ\ü[âXôαé╠â_âCâAâìâOÄ»ò╩Äq */
  485.                      NULL );            /* Åëè·É▌ÆΦâfü[â^               */
  486.           WinInvalidateRegion( hwnd, NULL, FALSE ); /* ï¡ÉºôIé╔ôhéΦÆ╝é╡ */
  487.           break;
  488.  
  489.  
  490.  
  491.  
  492.     // ********* PIPEÄ≤ĵëµû╩é╠âoâbâtâ@ü[âNâèâAü[ *********
  493.     case ID_CLEAR:
  494.       end_st=st_len;
  495.       for (t=0;t != end_st;t++)    // *** âeâLâXâgâoâbâtâ@ü[é≡Å┴ïÄ
  496.         linebf[t][0]=0;
  497.       st_len=0;            // *** ÅΩÅèâJâEâôâ^ü[é≡âèâZâbâg
  498.  
  499.  
  500. // <===NEW
  501.                sVscrollPos = 0;
  502.                     WinSendMsg (hwndVscroll, SBM_SETPOS,
  503.                                 MPFROMSHORT (sVscrollPos), NULL) ;
  504.  
  505. //                    WinUpdateWindow (hwnd) ;
  506.  
  507.  
  508.  
  509.           WinInvalidateRegion( hwnd, NULL, FALSE );
  510.                                         /*ï¡ÉºôIé╔ôhéΦÆ╝é╡           */
  511.           break;
  512.  
  513.  
  514.         case ID_EXITPROGRAM:
  515.           WinPostMsg( hwnd, WM_CLOSE, 0L, 0L );
  516.           break;
  517.         default:
  518.       return WinDefWindowProc( hwnd, msg, mp1, mp2 );
  519.       }
  520.       break;
  521.  
  522.           case WM_SIZE:
  523.                cxClient = SHORT1FROMMP (mp2) ;
  524.                cyClient = SHORT2FROMMP (mp2) ;
  525.  
  526.                sHscrollMax = max (0, cxTextTotal - cxClient) ;
  527.                sHscrollPos = min (sHscrollPos, sHscrollMax) ;
  528.  
  529.                WinSendMsg (hwndHscroll, SBM_SETSCROLLBAR,
  530.                                         MPFROM2SHORT (sHscrollPos, 0),
  531.                                         MPFROM2SHORT (0, sHscrollMax)) ;
  532.  
  533.                WinEnableWindow (hwndHscroll, sHscrollMax ? TRUE : FALSE) ;
  534.  
  535.                sVscrollMax = max (0, MAXLINE - cyClient / cyChar) ; //<===
  536.  
  537.                sVscrollPos = min (sVscrollPos, sVscrollMax) ;
  538.  
  539.                WinSendMsg (hwndVscroll, SBM_SETSCROLLBAR,
  540.                                         MPFROM2SHORT (sVscrollPos, 0),
  541.                                         MPFROM2SHORT (0, sVscrollMax)) ;
  542.  
  543.                WinEnableWindow (hwndVscroll, sVscrollMax ? TRUE : FALSE) ;
  544.                return 0 ;
  545.  
  546.           case WM_HSCROLL:
  547.                switch (SHORT2FROMMP (mp2))
  548.                     {
  549.                     case SB_LINELEFT:
  550.                          sHscrollInc = -cxCaps ;
  551.                          break ;
  552.  
  553.                     case SB_LINERIGHT:
  554.                          sHscrollInc = cxCaps ;
  555.                          break ;
  556.  
  557.                     case SB_PAGELEFT:
  558.                          sHscrollInc = -8 * cxCaps ;
  559.                          break ;
  560.  
  561.                     case SB_PAGERIGHT:
  562.                          sHscrollInc = 8 * cxCaps ;
  563.                          break ;
  564.  
  565.                     case SB_SLIDERPOSITION:
  566.                          sHscrollInc = SHORT1FROMMP (mp2) - sHscrollPos;
  567.                          break ;
  568.  
  569.                     default:
  570.                          sHscrollInc = 0 ;
  571.                          break ;
  572.                     }
  573.                sHscrollInc = max (-sHscrollPos,
  574.                              min (sHscrollInc, sHscrollMax - sHscrollPos)) ;
  575.  
  576.                if (sHscrollInc != 0)
  577.                     {
  578.                     sHscrollPos += sHscrollInc ;
  579.                     WinScrollWindow (hwnd, -sHscrollInc, 0,
  580.                                    NULL, NULL, NULL, NULL, SW_INVALIDATERGN) ;
  581.  
  582.                     WinSendMsg (hwndHscroll, SBM_SETPOS,
  583.                                 MPFROMSHORT (sHscrollPos), NULL) ;
  584.                     }
  585.                return 0 ;
  586.  
  587.           case WM_VSCROLL:
  588.                switch (SHORT2FROMMP (mp2))
  589.                     {
  590.                     case SB_LINEUP:
  591.                          sVscrollInc = -1 ;
  592.                          break ;
  593.  
  594.                     case SB_LINEDOWN:
  595.                          sVscrollInc = 1 ;
  596.                          break ;
  597.  
  598.                     case SB_PAGEUP:
  599.                          sVscrollInc = min (-1, -cyClient / cyChar) ;
  600.                          break ;
  601.  
  602.                     case SB_PAGEDOWN:
  603.                          sVscrollInc = max (1, cyClient / cyChar) ;
  604.                          break ;
  605.  
  606.                     case SB_SLIDERTRACK:
  607.                          sVscrollInc = SHORT1FROMMP (mp2) - sVscrollPos;
  608.                          break ;
  609.  
  610.                     default:
  611.                          sVscrollInc = 0 ;
  612.                          break ;
  613.                     }
  614.                sVscrollInc = max (-sVscrollPos,
  615.                              min (sVscrollInc, sVscrollMax - sVscrollPos)) ;
  616.  
  617.                if (sVscrollInc != 0)
  618.                     {
  619.                     sVscrollPos += sVscrollInc ;
  620.                     WinScrollWindow (hwnd, 0, cyChar * sVscrollInc,
  621.                                    NULL, NULL, NULL, NULL, SW_INVALIDATERGN) ;
  622.  
  623.                     WinSendMsg (hwndVscroll, SBM_SETPOS,
  624.                                 MPFROMSHORT (sVscrollPos), NULL) ;
  625.  
  626.                     WinUpdateWindow (hwnd) ;
  627.                     }
  628.                return 0 ;
  629.  
  630.  
  631.           case WM_CHAR:
  632.                switch (CHARMSG(&msg)->vkey)
  633.                     {
  634.                     case VK_LEFT:
  635.                     case VK_RIGHT:
  636.                          return WinSendMsg (hwndHscroll, msg, mp1, mp2) ;
  637.                     case VK_UP:
  638.                     case VK_DOWN:
  639.                     case VK_PAGEUP:
  640.                     case VK_PAGEDOWN:
  641.                          return WinSendMsg (hwndVscroll, msg, mp1, mp2) ;
  642.                     }
  643.                break ;
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.           case WM_TIMER:
  651.         if(disp_flag==0) break;        // ò\Īé¬òKùvé╚éóÅΩìç
  652.  
  653.       case WM_SEM1:
  654.  
  655.          WinInvalidateRegion( hwnd, NULL, FALSE );   /*ï¡ÉºôIé╔ôhéΦÆ╝é╡ */
  656.      disp_flag=0;        // ò\Īì╧é▌âtâëâOé╠âNâèâAü[
  657.      break;
  658.  
  659.  
  660.  
  661.  
  662.           case WM_PAINT:
  663.                hps = WinBeginPaint (hwnd, NULL, &rclInvalid) ;
  664.                GpiErase (hps) ;
  665.  
  666.                sPaintBeg = max (0, sVscrollPos +
  667.                               (cyClient - (SHORT) rclInvalid.yTop) / cyChar) ;
  668. //               sPaintEnd = min (NUMLINES, sVscrollPos +
  669. //                              (cyClient - (SHORT) rclInvalid.yBottom)
  670. //                                   / cyChar + 1) ;
  671.  
  672.  
  673. //               sPaintEnd = min (linebf_end, sVscrollPos +
  674. //                             (cyClient - (SHORT) rclInvalid.yBottom)
  675. //                                   / cyChar + 1) ;
  676. //
  677.  
  678.                sPaintEnd = min (MAXLINE, sVscrollPos +
  679.                               (cyClient - (SHORT) rclInvalid.yBottom)
  680.                                    / cyChar + 1) ;
  681.  
  682.  
  683.                for (sLine = sPaintBeg ; sLine < sPaintEnd ; sLine++)
  684.                     {
  685.                     ptl.x = cxCaps - sHscrollPos ;
  686.                     ptl.y = cyClient - cyChar * (sLine + 1 - sVscrollPos)
  687.                                      + cyDesc ;
  688.  
  689.  
  690.         // ***** ò╢ÄÜù±é╠Åæé½ì₧é▌
  691.                     GpiCharStringAt (hps, &ptl,
  692.                               (LONG) strlen (linebf[sLine]),linebf[sLine]) ;
  693.  
  694.                     }
  695.                WinEndPaint (hps) ;
  696.                return 0 ;
  697.           }
  698.      return WinDefWindowProc (hwnd, msg, mp1, mp2) ;
  699.      }
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719. /****************************************************************************
  720.              â_âCâAâìâOüEâvâìâVü[âWââü[ 
  721.              âGâfâBâ^ü[é╠âtâ@âCâïû╝é≡ôⁿù═é╖éΘ
  722.               âGâôâgâèü[âtâBü[âïâhé╠â_âCâAâìâO
  723. *****************************************************************************/
  724.  
  725. MRESULT EXPENTRY MyDlgProc( HWND hwndDlg, USHORT msg, MPARAM mp1, MPARAM mp2)
  726. {
  727.     USHORT    lngtex;
  728.  
  729.   switch ( msg )
  730.   {
  731.     // ****************************************
  732.     // â_âCâAâìâOé╠Åëè·ë╗
  733.     // ****************************************
  734.     case WM_INITDLG:
  735.  
  736.         // ***** └▐▓▒█╕▐É╢ɼÄ₧é╔┤▌─╪░╠¿░┘─▐(ID_ENTRYFIELD)é╔
  737.         // ***** ò╢ÄÜù±é¬É▌ÆΦé│éΩéΘ
  738.             WinSetDlgItemText(        // *** ├╖╜─é≡└▐▓▒█╕▐ìÇû┌é╔╛»─é╖éΘè╓Éö
  739.             hwndDlg,     // *** └▐▓▒█╕▐│¿▌─▐⌐é╠╩▌─▐┘
  740.                         // ***   DlgProcé╠æµêΩê÷Éö
  741.             ID_ENTRYFIELD,  // *** ----.DLG é┼ÆΦï`é╡é╜ENTRYFIELDé╠
  742.                     // ***   ìÇû┌é╠ID
  743.             szEDITPARM    // *** âfâFâtâHâïâgé╞é╚éΘò╢ÄÜù±
  744.             );
  745.       break;
  746.  
  747.  
  748.     case WM_COMMAND:                           /*ëƒé╡â{â^âôé▄é╜é═âLü[é╔éµé┴*/
  749.                                                /*é─Æ╩Æmé│éΩéΘ              */
  750.       /*********************************************************************/
  751.       /*âåü[âUü[é¬Enteré▄é╜é═üuĵÅ┴üvëƒé╡â{â^âôé≡ëƒé╖é╞üCPMé═              */
  752.       /*WM_COMMANDâüâbâZü[âWé≡æùòté╖éΘüB                                   */
  753.       /*********************************************************************/
  754.       switch( SHORT1FROMMP( mp1 ) )            /*âRâ}âôâhÆlé≡ÆèÅoé╖éΘ      */
  755.       {
  756.         case DID_OK:                           /*Enterëƒé╡â{â^âôé▄é╜é═âLü[ */
  757.                                                /*WinQueryWindowTexté═      */
  758.                                                /*ôⁿù═âtâBü[âïâhé╠ôαùeé≡    */
  759.                                                /*szFilenameé╔òíÄ╩é╖éΘ      */
  760.  
  761.           lngtex=WinQueryWindowText( WinWindowFromID( hwndDlg, ID_ENTRYFIELD ),
  762.                               LENGTH_STRING,
  763.                               szEDITPARM );
  764.       szEDITPARM[lngtex+1]=0;
  765.  
  766.  
  767.         case DID_CANCEL:                       /*üuĵÅ┴üvëƒé╡â{â^âôé▄é╜é═   */
  768.                                                /*EscâLü[                    */
  769.           WinDismissDlg( hwndDlg, TRUE );      /*â_âCâAâìâOüEâ{âbâNâXé≡     */
  770.                                                /*ĵéΦţ顠                  */
  771.           return FALSE;
  772.         default:
  773.           break;
  774.       }
  775.       break;
  776.     default:
  777.       /********************************************************************/
  778.       /*â_âCâAâìâOüEâvâìâVü[âWââü[é¬é▄é╛Åêù¥é╡é─éóé╚éóÄûÅ█âüâbâZü[âWé¬éáéΩ*/
  779.       /*é╬é▒é▒é╔é½é─üCWinDefDlgProcé╔éµé┴é─Åêù¥é│éΩéΘüB                   */
  780.       /*é▒é╠î─é╤Åoé╡é═èeÄ⌐é╠â_âCâAâìâOüEâvâìâVü[âWââü[é╠Æåé╔òKé╕é╚é»éΩé╬  */
  781.       /*é╚éτé╚éóüB                                                        */
  782.       /********************************************************************/
  783.       return WinDefDlgProc( hwndDlg, msg, mp1, mp2 );
  784.   }
  785.  
  786.   return FALSE;
  787. }
  788.  
  789.  
  790. /****************************************************************************
  791.              â_âCâAâìâOüEâvâìâVü[âWââü[ 
  792.              MAKE ùpâ^ü[âQâbâgüEâtâ@âCâïû╝é≡ôⁿù═é╖éΘ
  793.               âGâôâgâèü[âtâBü[âïâhé╠â_âCâAâìâO
  794. *****************************************************************************/
  795.  
  796. MRESULT EXPENTRY MakeDlgProc(HWND hwndDlg,USHORT msg, MPARAM mp1, MPARAM mp2)
  797. {
  798.     USHORT    lngtex;
  799.  
  800.  
  801.  
  802.   switch ( msg )
  803.   {
  804.  
  805.  
  806.     // ****************************************
  807.     // â_âCâAâìâOé╠Åëè·ë╗
  808.     // ****************************************
  809.     case WM_INITDLG:
  810.  
  811.         // ***** └▐▓▒█╕▐É╢ɼÄ₧é╔┤▌─╪░╠¿░┘─▐(ID_ENTRYFIELD)é╔
  812.         // ***** ò╢ÄÜù±é¬É▌ÆΦé│éΩéΘ
  813.             WinSetDlgItemText(        // *** ├╖╜─é≡└▐▓▒█╕▐ìÇû┌é╔╛»─é╖éΘè╓Éö
  814.             hwndDlg,     // *** └▐▓▒█╕▐│¿▌─▐⌐é╠╩▌─▐┘
  815.                         // ***   DlgProcé╠æµêΩê÷Éö
  816.             ID_ENTRYFIELD,  // *** ----.DLG é┼ÆΦï`é╡é╜ENTRYFIELDé╠
  817.                     // ***   ìÇû┌é╠ID
  818.             szMAKEPARM    // *** âfâFâtâHâïâgé╞é╚éΘò╢ÄÜù±
  819.             );
  820.       break;
  821.  
  822.  
  823.  
  824.     case WM_COMMAND:                           /*ëƒé╡â{â^âôé▄é╜é═âLü[é╔éµé┴*/
  825.                                                /*é─Æ╩Æmé│éΩéΘ              */
  826.       /*********************************************************************/
  827.       /*âåü[âUü[é¬Enteré▄é╜é═üuĵÅ┴üvëƒé╡â{â^âôé≡ëƒé╖é╞üCPMé═              */
  828.       /*WM_COMMANDâüâbâZü[âWé≡æùòté╖éΘüB                                   */
  829.       /*********************************************************************/
  830.       switch( SHORT1FROMMP( mp1 ) )            /*âRâ}âôâhÆlé≡ÆèÅoé╖éΘ      */
  831.       {
  832.         case DID_OK:                           /*Enterëƒé╡â{â^âôé▄é╜é═âLü[ */
  833.                                                /*WinQueryWindowTexté═      */
  834.                                                /*ôⁿù═âtâBü[âïâhé╠ôαùeé≡    */
  835.                                                /*szFilenameé╔òíÄ╩é╖éΘ      */
  836.  
  837.           lngtex=WinQueryWindowText( WinWindowFromID( hwndDlg,ID_ENTRYFIELD),
  838.                               LENGTH_STRING,
  839.                               szMAKEPARM );
  840.       szMAKEPARM[lngtex+1]=0;
  841.  
  842.  
  843.         case DID_CANCEL:                       /*üuĵÅ┴üvëƒé╡â{â^âôé▄é╜é═  */
  844.                                                /*EscâLü[                   */
  845.           WinDismissDlg( hwndDlg, TRUE );      /*â_âCâAâìâOüEâ{âbâNâXé≡    */
  846.                                                /*ĵéΦţ顠                 */
  847.           return FALSE;
  848.         default:
  849.           break;
  850.       }
  851.       break;
  852.     default:
  853.       /********************************************************************/
  854.       /*â_âCâAâìâOüEâvâìâVü[âWââü[é¬é▄é╛Åêù¥é╡é─éóé╚éóÄûÅ█âüâbâZü[âWé¬éáéΩ*/
  855.       /*é╬é▒é▒é╔é½é─üCWinDefDlgProcé╔éµé┴é─Åêù¥é│éΩéΘüB                   */
  856.       /*é▒é╠î─é╤Åoé╡é═èeÄ⌐é╠â_âCâAâìâOüEâvâìâVü[âWââü[é╠Æåé╔òKé╕é╚é»éΩé╬  */
  857.       /*é╚éτé╚éóüB                                                        */
  858.       /********************************************************************/
  859.       return WinDefDlgProc( hwndDlg, msg, mp1, mp2 );
  860.   }
  861.  
  862.   return FALSE;
  863. }
  864.  
  865.  
  866. /****************************************************************************
  867.              â_âCâAâìâOüEâvâìâVü[âWââü[ 
  868.              USER_EXEC RUN ùpâ^ü[âQâbâgüEâtâ@âCâïû╝é≡ôⁿù═é╖éΘ
  869.               âGâôâgâèü[âtâBü[âïâhé╠â_âCâAâìâO
  870. *****************************************************************************/
  871.  
  872. MRESULT EXPENTRY RunDlgProc(HWND hwndDlg,USHORT msg, MPARAM mp1, MPARAM mp2)
  873. {
  874.     USHORT    lngtex;
  875.  
  876.  
  877.  
  878.   switch ( msg )
  879.   {
  880.  
  881.  
  882.     // ****************************************
  883.     // â_âCâAâìâOé╠Åëè·ë╗
  884.     // ****************************************
  885.     case WM_INITDLG:
  886.  
  887.         // ***** └▐▓▒█╕▐É╢ɼÄ₧é╔┤▌─╪░╠¿░┘─▐(ID_ENTRYFIELD)é╔
  888.         // ***** ò╢ÄÜù±é¬É▌ÆΦé│éΩéΘ
  889.             WinSetDlgItemText(        // *** ├╖╜─é≡└▐▓▒█╕▐ìÇû┌é╔╛»─é╖éΘè╓Éö
  890.             hwndDlg,     // *** └▐▓▒█╕▐│¿▌─▐⌐é╠╩▌─▐┘
  891.                         // ***   DlgProcé╠æµêΩê÷Éö
  892.             ID_ENTRYFIELD,  // *** ----.DLG é┼ÆΦï`é╡é╜ENTRYFIELDé╠
  893.                     // ***   ìÇû┌é╠ID
  894.             szRUNPARM    // *** âfâFâtâHâïâgé╞é╚éΘò╢ÄÜù±
  895.             );
  896.       break;
  897.  
  898.  
  899.  
  900.     case WM_COMMAND:                           /*ëƒé╡â{â^âôé▄é╜é═âLü[é╔éµé┴*/
  901.                                                /*é─Æ╩Æmé│éΩéΘ              */
  902.       /*********************************************************************/
  903.       /*âåü[âUü[é¬Enteré▄é╜é═üuĵÅ┴üvëƒé╡â{â^âôé≡ëƒé╖é╞üCPMé═              */
  904.       /*WM_COMMANDâüâbâZü[âWé≡æùòté╖éΘüB                                   */
  905.       /*********************************************************************/
  906.       switch( SHORT1FROMMP( mp1 ) )            /*âRâ}âôâhÆlé≡ÆèÅoé╖éΘ      */
  907.       {
  908.         case DID_OK:                           /*Enterëƒé╡â{â^âôé▄é╜é═âLü[ */
  909.                                                /*WinQueryWindowTexté═      */
  910.                                                /*ôⁿù═âtâBü[âïâhé╠ôαùeé≡    */
  911.                                                /*szFilenameé╔òíÄ╩é╖éΘ      */
  912.  
  913.           lngtex=WinQueryWindowText( WinWindowFromID( hwndDlg,ID_ENTRYFIELD),
  914.                               LENGTH_STRING,
  915.                               szRUNPARM );
  916.       szRUNPARM[lngtex+1]=0;
  917.  
  918.  
  919.         case DID_CANCEL:                       /*üuĵÅ┴üvëƒé╡â{â^âôé▄é╜é═  */
  920.                                                /*EscâLü[                   */
  921.           WinDismissDlg( hwndDlg, TRUE );      /*â_âCâAâìâOüEâ{âbâNâXé≡    */
  922.                                                /*ĵéΦţ顠                 */
  923.           return FALSE;
  924.         default:
  925.           break;
  926.       }
  927.       break;
  928.     default:
  929.       /********************************************************************/
  930.       /*â_âCâAâìâOüEâvâìâVü[âWââü[é¬é▄é╛Åêù¥é╡é─éóé╚éóÄûÅ█âüâbâZü[âWé¬éáéΩ*/
  931.       /*é╬é▒é▒é╔é½é─üCWinDefDlgProcé╔éµé┴é─Åêù¥é│éΩéΘüB                   */
  932.       /*é▒é╠î─é╤Åoé╡é═èeÄ⌐é╠â_âCâAâìâOüEâvâìâVü[âWââü[é╠Æåé╔òKé╕é╚é»éΩé╬  */
  933.       /*é╚éτé╚éóüB                                                        */
  934.       /********************************************************************/
  935.       return WinDefDlgProc( hwndDlg, msg, mp1, mp2 );
  936.   }
  937.  
  938.   return FALSE;
  939. }
  940.  
  941.  
  942.  
  943. /****************************************************************************
  944.              â_âCâAâìâOüEâvâìâVü[âWââü[ 
  945.              GSEE.EXEé╠âtâ@âCâïû╝é≡ôⁿù═é╖éΘ
  946.               âGâôâgâèü[âtâBü[âïâhé╠â_âCâAâìâO
  947. *****************************************************************************/
  948.  
  949. MRESULT EXPENTRY GseeEntry( HWND hwndDlg, USHORT msg, MPARAM mp1, MPARAM mp2)
  950. {
  951.     USHORT    lngtex;
  952.  
  953.  
  954.  
  955.   switch ( msg )
  956.   {
  957.  
  958.     // ****************************************
  959.     // â_âCâAâìâOé╠Åëè·ë╗
  960.     // ****************************************
  961.     case WM_INITDLG:
  962.  
  963.         // ***** └▐▓▒█╕▐É╢ɼÄ₧é╔┤▌─╪░╠¿░┘─▐(ID_ENTRYFIELD)é╔
  964.         // ***** ò╢ÄÜù±é¬É▌ÆΦé│éΩéΘ
  965.             WinSetDlgItemText(        // *** ├╖╜─é≡└▐▓▒█╕▐ìÇû┌é╔╛»─é╖éΘè╓Éö
  966.             hwndDlg,     // *** └▐▓▒█╕▐│¿▌─▐⌐é╠╩▌─▐┘
  967.                         // ***   DlgProcé╠æµêΩê÷Éö
  968.             ID_ENTRYFIELD,  // *** ----.DLG é┼ÆΦï`é╡é╜ENTRYFIELDé╠
  969.                     // ***   ìÇû┌é╠ID
  970.             szGSEEPARM    // *** âfâFâtâHâïâgé╞é╚éΘò╢ÄÜù±
  971.             );
  972.       break;
  973.  
  974.  
  975.  
  976.     case WM_COMMAND:                           /*ëƒé╡â{â^âôé▄é╜é═âLü[é╔éµé┴*/
  977.                                                /*é─Æ╩Æmé│éΩéΘ              */
  978.       /*********************************************************************/
  979.       /*âåü[âUü[é¬Enteré▄é╜é═üuĵÅ┴üvëƒé╡â{â^âôé≡ëƒé╖é╞üCPMé═              */
  980.       /*WM_COMMANDâüâbâZü[âWé≡æùòté╖éΘüB                                   */
  981.       /*********************************************************************/
  982.       switch( SHORT1FROMMP( mp1 ) )            /*âRâ}âôâhÆlé≡ÆèÅoé╖éΘ      */
  983.       {
  984.         case DID_OK:                           /*Enterëƒé╡â{â^âôé▄é╜é═âLü[ */
  985.                                                /*WinQueryWindowTexté═      */
  986.                                                /*ôⁿù═âtâBü[âïâhé╠ôαùeé≡    */
  987.                                                /*szFilenameé╔òíÄ╩é╖éΘ      */
  988.  
  989.           lngtex=WinQueryWindowText( WinWindowFromID( hwndDlg,ID_ENTRYFIELD),
  990.                               LENGTH_STRING,
  991.                               szGSEEPARM );
  992.       szGSEEPARM[lngtex+1]=0;
  993.  
  994.       cancelFLAG=0;            // *** é┐éßé±é╞É▌ÆΦé│éΩé╜
  995.  
  996.           WinDismissDlg( hwndDlg, TRUE );      /*â_âCâAâìâOüEâ{âbâNâXé≡    */
  997.                                                /*ĵéΦţ顠                 */
  998.           return FALSE;
  999.  
  1000.  
  1001.         case DID_CANCEL:                       /*üuĵÅ┴üvëƒé╡â{â^âôé▄é╜é═  */
  1002.                                                /*EscâLü[                   */
  1003.  
  1004.       cancelFLAG=1;            // *** ÄµÅ┴é╡é╛!
  1005.  
  1006.           WinDismissDlg( hwndDlg, TRUE );      /*â_âCâAâìâOüEâ{âbâNâXé≡    */
  1007.                                                /*ĵéΦţ顠                 */
  1008.           return FALSE;
  1009.         default:
  1010.           break;
  1011.       }
  1012.       break;
  1013.     default:
  1014.       /********************************************************************/
  1015.       /*â_âCâAâìâOüEâvâìâVü[âWââü[é¬é▄é╛Åêù¥é╡é─éóé╚éóÄûÅ█âüâbâZü[âWé¬éáéΩ*/
  1016.       /*é╬é▒é▒é╔é½é─üCWinDefDlgProcé╔éµé┴é─Åêù¥é│éΩéΘüB                   */
  1017.       /*é▒é╠î─é╤Åoé╡é═èeÄ⌐é╠â_âCâAâìâOüEâvâìâVü[âWââü[é╠Æåé╔òKé╕é╚é»éΩé╬  */
  1018.       /*é╚éτé╚éóüB                                                        */
  1019.       /********************************************************************/
  1020.       return WinDefDlgProc( hwndDlg, msg, mp1, mp2 );
  1021.   }
  1022.  
  1023.   return FALSE;
  1024. }
  1025.  
  1026.  
  1027. /****************************************************************************
  1028.              â_âCâAâìâOüEâvâìâVü[âWââü[ 
  1029.              GREP.EXEé╠âtâ@âCâïû╝é≡ôⁿù═é╖éΘ
  1030.               âGâôâgâèü[âtâBü[âïâhé╠â_âCâAâìâO
  1031. *****************************************************************************/
  1032.  
  1033. MRESULT EXPENTRY GrepEntry( HWND hwndDlg, USHORT msg, MPARAM mp1, MPARAM mp2)
  1034. {
  1035.     USHORT    lngtex;
  1036.     BOOL    fChecked;
  1037.  
  1038.  
  1039.   switch ( msg )
  1040.   {
  1041.  
  1042.  
  1043.     // ****************************************
  1044.     // â_âCâAâìâOé╠Åëè·ë╗
  1045.     // ****************************************
  1046.     case WM_INITDLG:
  1047.  
  1048.         // ***** └▐▓▒█╕▐É╢ɼÄ₧é╔┤▌─╪░╠¿░┘─▐(ID_ENTRYFIELD)é╔
  1049.         // ***** ò╢ÄÜù±é¬É▌ÆΦé│éΩéΘ
  1050.             WinSetDlgItemText(        // *** ├╖╜─é≡└▐▓▒█╕▐ìÇû┌é╔╛»─é╖éΘè╓Éö
  1051.             hwndDlg,     // *** └▐▓▒█╕▐│¿▌─▐⌐é╠╩▌─▐┘
  1052.                         // ***   DlgProcé╠æµêΩê÷Éö
  1053.             ID_ENTRYFIELD,  // *** ----.DLG é┼ÆΦï`é╡é╜ENTRYFIELDé╠
  1054.                     // ***   ìÇû┌é╠ID
  1055.             szGREPPARM    // *** âfâFâtâHâïâgé╞é╚éΘò╢ÄÜù±
  1056.             );
  1057.  
  1058.             WinSetDlgItemText(        // *** ├╖╜─é≡└▐▓▒█╕▐ìÇû┌é╔╛»─é╖éΘè╓Éö
  1059.             hwndDlg,     // *** └▐▓▒█╕▐│¿▌─▐⌐é╠╩▌─▐┘
  1060.                         // ***   DlgProcé╠æµêΩê÷Éö
  1061.             ID_ENTRYFIELD2,  // *** ----.DLG é┼ÆΦï`é╡é╜ENTRYFIELDé╠
  1062.                     // ***   ìÇû┌é╠ID
  1063.             szGREPPARM2    // *** âfâFâtâHâïâgé╞é╚éΘò╢ÄÜù±
  1064.             );
  1065.  
  1066.  
  1067.     subdirsFLAG=0;        // *** ╗╠▐├▐¿┌╕─╪░é╠É▌ÆΦé╠âtâëâO
  1068.     break;
  1069.  
  1070.  
  1071.     case WM_CONTROL:
  1072.  
  1073.       if( SHORT2FROMMP( mp1 ) == BN_CLICKED )
  1074.  
  1075.   /*â`âFâbâNüEâ{âbâNâXé╠â`âFâbâNü^âAâôâ`âFâbâNé╠Å≤æ╘é≡ûΓéóìçéφé╣üCé╗éΩé╔Å]é┴*/
  1076.   /*é─fCheckedé≡TRUEüiâ`âFâbâNüjé▄é╜é═FALSEüiâAâôâ`âFâbâNüjé╔âZâbâgé╖éΘ     */
  1077.   fChecked = SHORT1FROMMR( WinSendMsg( WinWindowFromID( hwndDlg ,
  1078.                        SHORT1FROMMP( mp1 ) ),
  1079.                                        BM_QUERYCHECK,
  1080.                                        0L,
  1081.                                        0L ) );
  1082.  
  1083.  
  1084.         switch( SHORT1FROMMP( mp1 ) )
  1085.           {
  1086.           case ID_CHECK:
  1087.         subdirsFLAG=fChecked;
  1088.         break;
  1089.  
  1090.           default:
  1091.            return FALSE;
  1092.           }
  1093.         break;
  1094.  
  1095.  
  1096.  
  1097.     case WM_COMMAND:                           /*ëƒé╡â{â^âôé▄é╜é═âLü[é╔éµé┴*/
  1098.                                                /*é─Æ╩Æmé│éΩéΘ              */
  1099.       /*********************************************************************/
  1100.       /*âåü[âUü[é¬Enteré▄é╜é═üuĵÅ┴üvëƒé╡â{â^âôé≡ëƒé╖é╞üCPMé═              */
  1101.       /*WM_COMMANDâüâbâZü[âWé≡æùòté╖éΘüB                                   */
  1102.       /*********************************************************************/
  1103.       switch( SHORT1FROMMP( mp1 ) )            /*âRâ}âôâhÆlé≡ÆèÅoé╖éΘ      */
  1104.       {
  1105.         case DID_OK:                           /*Enterëƒé╡â{â^âôé▄é╜é═âLü[ */
  1106.                                                /*WinQueryWindowTexté═      */
  1107.                                                /*ôⁿù═âtâBü[âïâhé╠ôαùeé≡    */
  1108.                                                /*szFilenameé╔òíÄ╩é╖éΘ      */
  1109.  
  1110.           lngtex=WinQueryWindowText( WinWindowFromID( hwndDlg,ID_ENTRYFIELD),
  1111.                               LENGTH_STRING,
  1112.                               szGREPPARM );
  1113.       szGREPPARM[lngtex+1]=0;
  1114.  
  1115.  
  1116.           lngtex=WinQueryWindowText( WinWindowFromID( hwndDlg,ID_ENTRYFIELD2),
  1117.                               LENGTH_STRING,
  1118.                               szGREPPARM2 );
  1119.       szGREPPARM2[lngtex+1]=0;
  1120.  
  1121.  
  1122.       cancelFLAG=0;            // *** é┐éßé±é╞É▌ÆΦé│éΩé╜
  1123.  
  1124.           WinDismissDlg( hwndDlg, TRUE );      /*â_âCâAâìâOüEâ{âbâNâXé≡    */
  1125.                                                /*ĵéΦţ顠                 */
  1126.           return FALSE;
  1127.  
  1128.  
  1129.         case DID_CANCEL:                       /*üuĵÅ┴üvëƒé╡â{â^âôé▄é╜é═  */
  1130.                                                /*EscâLü[                   */
  1131.  
  1132.       cancelFLAG=1;            // *** ÄµÅ┴é╡é╛!
  1133.  
  1134.           WinDismissDlg( hwndDlg, TRUE );      /*â_âCâAâìâOüEâ{âbâNâXé≡    */
  1135.                                                /*ĵéΦţ顠                 */
  1136.           return FALSE;
  1137.         default:
  1138.           break;
  1139.       }
  1140.       break;
  1141.     default:
  1142.       /********************************************************************/
  1143.       /*â_âCâAâìâOüEâvâìâVü[âWââü[é¬é▄é╛Åêù¥é╡é─éóé╚éóÄûÅ█âüâbâZü[âWé¬éáéΩ*/
  1144.       /*é╬é▒é▒é╔é½é─üCWinDefDlgProcé╔éµé┴é─Åêù¥é│éΩéΘüB                   */
  1145.       /*é▒é╠î─é╤Åoé╡é═èeÄ⌐é╠â_âCâAâìâOüEâvâìâVü[âWââü[é╠Æåé╔òKé╕é╚é»éΩé╬  */
  1146.       /*é╚éτé╚éóüB                                                        */
  1147.       /********************************************************************/
  1148.       return WinDefDlgProc( hwndDlg, msg, mp1, mp2 );
  1149.   }
  1150.  
  1151.   return FALSE;
  1152. }
  1153.  
  1154.  
  1155.