home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
devpl016.zip
/
DWP.C
< prev
next >
Wrap
Text File
|
1994-02-07
|
41KB
|
1,155 lines
/***************************************************************************/
/* Development Work Place */
/* */
/* Version 0.11 1991/11/25 Release Profile/WinCreateStdWindow support */
/* Version 0.14 1991/11/29 Release New CLEAR Command/argv parm support */
/* Version 0.15 1991/11/29 Release \pipe\text to \pipe\dwp change */
/* Version 0.16 1991/12/22 Release Codeview option add */
/* */
/***************************************************************************/
// ***** Window title bar string *****
#define MAIN_TITLE " : Development Work Place Version 0.16"
#define INCL_WIN // *** PMâwâbâ_ü[üEâtâ@âCâïé╠è╓ÿAòöò¬
#define INCL_GPI // *** é≡æIæ≡é╡é─âCâôâNâïü[âh
//#define INCL_DOSPROCESS
#define INCL_BASE
#include <os2.h>
#include <string.h> /*C/2âXâgâèâôâOè╓Éö */
#include <stdlib.h>
#include <stdio.h>
#include "DWP.h" /*âèâ\ü[âXïLìåID */
/* ï@ö\âvâìâgâ^âCâv */
MRESULT EXPENTRY MyWindowProc( HWND hwnd, USHORT msg, MPARAM mp1,MPARAM mp2);
MRESULT EXPENTRY MyDlgProc( HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 );
MRESULT EXPENTRY MakeDlgProc(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 );
MRESULT EXPENTRY RunDlgProc(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 );
MRESULT EXPENTRY GseeEntry( HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 );
MRESULT EXPENTRY GrepEntry( HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 );
int pm_session(char *pgmname,char *parm,char *title);
int TextWinB_session(char *pgmname,char *parm,char *title);
int TextWinF_session(char *pgmname,char *parm,char *title);
int TextFullF_session(char *pgmname,char *parm,char *title);
VOID GetParmFile(char *FileName);
VOID WriteParmFile(char *FileName);
VOID cdecl main(int argc,char **argv);
USHORT server_thread(void);
#define LENGTH_STRING 33 // *** èeâpâëâüü[â^ü[âXâgâèâôâOé╠Æ╖é│
#define ID_TIMER 1 // *** timer id
#define MAXLEN 100 // *** ëíò¥é╠ì┼æσÆl
#define MAXLINE 3000 // *** Åcìsé╠ì┼æσÆl
#define PARM_FILE "dwp.pro" // *** âpâëâüü[â^ü[èiö[ùpé╠âvâìâtâ@âCâï
USHORT linebf_end;
CHAR szEDITPARM[LENGTH_STRING] = ""; // ╒░╗▐░é¬ôⁿù═é╡é╜Editor parm
CHAR szMAKEPARM[LENGTH_STRING] = ""; // ╒░╗▐░é¬ôⁿù═é╡é╜MAKE parm
CHAR szRUNPARM[LENGTH_STRING] = ""; // ╒░╗▐░é¬ôⁿù═é╡é╜RUN parm
CHAR szGSEEPARM[LENGTH_STRING] = ""; // ╒░╗▐░é¬ôⁿù═é╡é╜GSEE parm
CHAR szGREPPARM[LENGTH_STRING] = ""; // ╒░╗▐░é¬ôⁿù═é╡é╜GREP parm
CHAR szGREPPARM2[LENGTH_STRING] = ""; // ╒░╗▐░é¬ôⁿù═é╡é╜GREP parm
char huge linebf[MAXLINE][MAXLEN+1]; // *** ô╟é▌ì₧é▐âpâCâvâoâbâtâ@ü[
extern USHORT st_len=0; // âèü[âhâoâbâtâ@é╠î╗ì▌é╠Æ╖é│.
/*â^âCâvé▓é╞é╔âpâëâüü[â^ü[é≡ÆΦï`é╖éΘ*/
HAB hab; /*âAâôâJü[üEâuâìâbâNüEânâôâhâï */
HMQ hmq; /*âüâbâZü[âWæ╥é┐ìsù±ânâôâhâï */
HWND hwndClient; /*âNâëâCâAâôâgüEâEâBâôâhâEüEânâôâhâï*/
// *** WinCreateStdWindow é┼É╢ɼé╖éΘ│¿▌─▐⌐é╠âXâ^âCâï
ULONG flCreate = (FCF_STANDARD | FCF_VERTSCROLL | FCF_HORZSCROLL) ;
HWND hwndFrame; /*âtâîü[âÇüEâEâBâôâhâEüEânâôâhâï */
BYTE abStackArea[4096];
PVOID pStack1=abStackArea+4096;
TID tidThread1;
USHORT disp_flag=0; // ò\Īì╧é▌âtâëâOé╠ÆΦï`é╞âNâèâAü[
BOOL cancelFLAG=0; // *** GSEE/GREPùpé╠[cancel]Ä₧é╠âtâëâO
BOOL subdirsFLAG=0; // *** GREPé╠╗╠▐├▐¿┌╕─╪░ùpé╠╠╫╕▐
/********************** âüâCâôüEâvâìâVü[âWââü[é╠Äné▀ ***********************/
VOID cdecl main(int argc,char **argv)
{
QMSG qmsg;
int retcode;
// ***** ùºé┐Åπé░é╠Ä₧é╠âpâëâüü[â^ü[é┼Ä⌐ô«ôIé╔PROFILEé≡âZâbâgé╖éΘü@*****
// ***** é╡é⌐é╡DWP.PROé¬éáéΩé╬é╗éΩé¬ùDɵé│éΩéΘ
if(1 != argc)
{
strcpy(szEDITPARM,argv[1]); strcat(szEDITPARM,".C");
strcpy(szMAKEPARM,argv[1]); strcat(szMAKEPARM,".EXE");
strcpy(szRUNPARM,argv[1]); strcat(szRUNPARM,".EXE");
}
// ***** PM é╠ÅÇö⌡èJÄn *****
hab = WinInitialize( NULL );
hmq = WinCreateMsgQueue( hab, 0 );
WinRegisterClass( /*âEâBâôâhâEüEâNâëâXé≡ôoÿ^é╖éΘ */
hab, /*âAâôâJü[üEâuâìâbâNüEânâôâhâï */
"MyWindow", /*âEâBâôâhâEüEâNâëâXû╝ */
MyWindowProc, /*âEâBâôâhâEüEâvâìâVü[âWââü[é╠âAâh */
/*âîâX */
CS_SIZEREDRAW, /*âNâëâXüEâXâ^âCâï */
0 /*Æ╟ë┴é╠âEâBâôâhâEüEâÅü[âhé═é╚éó */
);
// ***** òWÅÇ│¿▌─▐⌐é≡ì∞ɼ *****
hwndFrame = WinCreateStdWindow(
HWND_DESKTOP, /*âfâXâNâgâbâvüEâEâBâôâhâEé¬Ée */
WS_VISIBLE, /*âtâîü[âÇüEâXâ^âCâï */
&flCreate, /*âtâîü[âÇɺîΣâtâëâOü@ü@ü@ü@ */
"MyWindow", /*âEâBâôâhâEüEâNâëâXû╝ü@ü@ü@ü@ü@ü@ */
MAIN_TITLE,
/*âEâBâôâhâEüEâ^âCâgâï */
0L, /*ë┬ÄïâEâBâôâhâEé╠âNâëâCâAâôâgüEâX */
/*â^âCâï */
NULL, /*âèâ\ü[âXé═.EXEâtâ@âCâïôαé╔éáéΘ */
ID_MAINWND, /*âtâîü[âÇüEâEâBâôâhâEÄ»ò╩Äq */
(PHWND)&hwndClient /*âNâëâCâAâôâgüEâEâBâôâhâEüEü@ü@ü@ */
/*ânâôâhâï */
);
// ***** Window é≡ì┼æσë╗é╖éΘ *****
WinSetWindowPos ( hwndFrame , NULL , 0 , 0 , 0 , 0 ,
SWP_MAXIMIZE | SWP_ACTIVATE
);
// ***** âpâCâvô╟é▌ì₧é▌âXâîâbâhé≡É╢ɼ *****
retcode=DosCreateThread(server_thread,
&tidThread1,
pStack1
);
if(retcode >= 1 ) DosBeep(500,700);
/***************************************************************************/
/*WinGetMsgé¬WM_QUITâüâbâZü[âWé≡Īé╖FALSEé≡û▀é╖é▄é┼üCôKùpï╞û▒âüâbâZü[âW */
/*æ╥é┐ìsù±é⌐éτâüâbâZü[âWé≡ĵéΦÅoé╡é─üCözòzé╖éΘ */
/***************************************************************************/
if (WinStartTimer (hab, hwndClient, ID_TIMER, 1000))
{
while( WinGetMsg( hab, (PQMSG)&qmsg, (HWND)NULL, 0, 0 ) )
WinDispatchMsg( hab, (PQMSG)&qmsg );
WinStopTimer (hab, hwndClient, ID_TIMER) ;
}
else
WinMessageBox (HWND_DESKTOP, hwndClient,
"Too many clocks or timers",
"Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ;
WinDestroyWindow( hwndFrame ); /*É«ù¥é╡,... */
WinDestroyMsgQueue( hmq ); /*é╗é╠îπ */
WriteParmFile(PARM_FILE); // *** ╩▀╫╥░└░èiö[╠º▓┘û╝
WinTerminate( hab ); /*ôKùpï╞û▒é≡ÅIù╣é╖éΘ */
}
/*********************** âüâCâôüEâvâìâVü[âWââü[é╠ÅIéφéΦ *******************/
/********************* âEâBâôâhâEüEâvâìâVü[âWââü[é╠Äné▀ *******************/
MRESULT EXPENTRY MyWindowProc ( HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 )
{
// ***** ╛»╝«▌ïNô«ùpé╠ò╧Éö *****
char *pgmname;
char *parm;
char pp_parm[80];
char *title;
static HWND hwndHscroll, hwndVscroll ;
static SHORT sHscrollMax, sVscrollMax, sHscrollPos, sVscrollPos,
cxChar, cxCaps, cyChar, cyDesc, cxClient, cyClient,
cxTextTotal ;
FONTMETRICS fm ;
HPS hps ;
POINTL ptl ;
SHORT sLine, sPaintBeg, sPaintEnd, sHscrollInc, sVscrollInc ;
RECTL rclInvalid ;
USHORT end_st,t;
static USHORT run1_sessret=0;
static USHORT run2_sessret=0;
static USHORT run3_sessret=0;
static USHORT run7_sessret=0;
static USHORT run8_sessret=0;
static USHORT run9_sessret=0;
switch( msg )
{
case WM_CREATE:
/*âEâBâôâhâEé╠Åëè·É▌ÆΦ */
GetParmFile(PARM_FILE); // *** parameter fileé⌐éτ
// *** szXXXXXX é╠dataé≡ĵéΘ
hps = WinGetPS (hwnd) ;
GpiQueryFontMetrics (hps, (LONG) sizeof fm, &fm) ;
cxChar = (SHORT) fm.lAveCharWidth ;
cxCaps = (SHORT) fm.lEmInc ;
cyChar = (SHORT) fm.lMaxBaselineExt ;
cyDesc = (SHORT) fm.lMaxDescender ;
WinReleasePS (hps) ;
cxTextTotal = 28 * cxCaps + 38 * cxChar ;
hwndHscroll = WinWindowFromID (
WinQueryWindow (hwnd, QW_PARENT, FALSE),
FID_HORZSCROLL) ;
hwndVscroll = WinWindowFromID (
WinQueryWindow (hwnd, QW_PARENT, FALSE),
FID_VERTSCROLL) ;
return 0 ;
case WM_COMMAND:
/**********************************************************************/
/* */
/**********************************************************************/
switch ( SHORT1FROMMP( mp1 ) )
{
// ********** ÄqâvâìâZâXé╠Ä└ìs(editor) **********
case ID_RUN1:
title = "DWP Editors MIFES(PM)";
pgmname = "mipm.exe";
if(run1_sessret==0)
{
run1_sessret=pm_session(pgmname,szEDITPARM,title);
if(run1_sessret == 0) {
WinMessageBox (HWND_DESKTOP, hwndClient,
"Session can't start",
"Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
}
else
{
if(0 != DosSelectSession(run1_sessret,0L))
{
run1_sessret=pm_session(pgmname,szEDITPARM,title);
if(run1_sessret == 0) {
WinMessageBox (HWND_DESKTOP, hwndClient,
"Session can't start",
"Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
}
}
break;
// ********** ÄqâvâìâZâXé╠Ä└ìs(make) **********
case ID_RUN2:
title = "DWP Compile NMAKE";
pgmname = "cmd.exe";
strcpy(pp_parm,"/c nmake ");
strcat(pp_parm,szMAKEPARM);
strcat(pp_parm," >\\pipe\\dwp");
// parm = "/c nmake *.exe >\\pipe\\dwp"; // <==============
TextWinB_session(pgmname,pp_parm,title);
break;
// ********** ÄqâvâìâZâXé╠Ä└ìs(QH) **********
case ID_RUN3:
title = "DWP Qick Help";
pgmname = "cmd.exe";
parm = "/c QH"; // <==============
if(run3_sessret==0)
{
run3_sessret=TextFullF_session(pgmname,parm,title);
if(run3_sessret == 0) {
WinMessageBox (HWND_DESKTOP, hwndClient,
"Session can't start",
"Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
}
else
{
if(0 != DosSelectSession(run3_sessret,0L))
{
run3_sessret=TextFullF_session(pgmname,parm,title);
if(run3_sessret == 0) {
WinMessageBox (HWND_DESKTOP, hwndClient,
"Session can't start",
"Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
}
}
break;
// ********** ÄqâvâìâZâXé╠Ä└ìs(GSEE) **********
case ID_RUN4:
WinDlgBox( HWND_DESKTOP, /* âfâXâNâgâbâvé╠é╟é▒é⌐é╔Æué¡ */
hwndFrame, /* âtâîü[âÇé╔éµé┴é─ÅèùLé│éΩéΘ */
GseeEntry, /* â_âCâAâìâOüEâvâìâVü[âWââü[é╠ */
/* âAâhâîâX */
NULL, /* âéâWâàü[âïüEânâôâhâï */
ID_GSEEDLG, /* âèâ\ü[âXôαé╠â_âCâAâìâOÄ»ò╩Äq */
NULL ); /* Åëè·É▌ÆΦâfü[â^ */
WinInvalidateRegion( hwnd, NULL, FALSE ); /* ï¡ÉºôIé╔ôhéΦÆ╝é╡ */
title = "DWP File name search";
pgmname = "cmd.exe";
strcpy(pp_parm ,"/c gsee ");
strcat(pp_parm,szGSEEPARM);
strcat(pp_parm," >\\pipe\\dwp");
TextWinB_session(pgmname,pp_parm,title);
break;
// ********** ÄqâvâìâZâXé╠Ä└ìs(GREP) **********
case ID_RUN5:
WinDlgBox( HWND_DESKTOP, /* âfâXâNâgâbâvé╠é╟é▒é⌐é╔Æué¡ */
hwndFrame, /* âtâîü[âÇé╔éµé┴é─ÅèùLé│éΩéΘ */
GrepEntry, /* â_âCâAâìâOüEâvâìâVü[âWââü[é╠ */
/* âAâhâîâX */
NULL, /* âéâWâàü[âïüEânâôâhâï */
ID_GREPDLG, /* âèâ\ü[âXôαé╠â_âCâAâìâOÄ»ò╩Äq */
NULL ); /* Åëè·É▌ÆΦâfü[â^ */
if(cancelFLAG==1) break; // *** ĵéΦÅ┴é╡Ä₧é╔┘░┴▌é⌐éτö▓é»éΘ
WinInvalidateRegion( hwnd, NULL, FALSE ); /* ï¡ÉºôIé╔ôhéΦÆ╝é╡ */
title = "DWP Source search";
pgmname = "cmd.exe";
strcpy(pp_parm ,"/c grep ");
if(subdirsFLAG==1) strcat(pp_parm,"-r ");
strcat(pp_parm,szGREPPARM);
if(szGREPPARM[0]=='\0') strcpy(szGREPPARM,"*.*"); //defult
strcat(pp_parm," "); // *** ïµÉ╪éΦò╢ÄÜ
strcat(pp_parm,szGREPPARM2);
strcat(pp_parm," >\\pipe\\dwp");
TextWinB_session(pgmname,pp_parm,title);
break;
// ********** ÄqâvâìâZâXé╠Ä└ìs(User PROGRAM) **********
case ID_RUN7:
title = "*** DWP CVP ***";
pgmname = "cmd.exe";
parm = "/c cvp "; // <==============
strcat(parm,szRUNPARM);
run7_sessret=TextFullF_session(pgmname,parm,title);
if(run7_sessret == 0) {
WinMessageBox (HWND_DESKTOP, hwndClient,
"Session can't start",
"Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
break;
// ********** ÄqâvâìâZâXé╠Ä└ìs(User PROGRAM) **********
case ID_RUN8:
title = "DWP User Program";
pgmname = "cmd.exe";
parm = "/c "; // <==============
strcat(parm,szRUNPARM);
run8_sessret=TextFullF_session(pgmname,parm,title);
if(run8_sessret == 0) {
WinMessageBox (HWND_DESKTOP, hwndClient,
"Session can't start",
"Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
break;
// ********** âRâ}âôâhâvâìâôâvâgüEâvâìâZâXé╠Ä└ìs **********
case ID_RUN9:
title = "DWP Command Prompt";
pgmname = "cmd.exe";
parm = ""; // <==============
if(run9_sessret==0)
{
run9_sessret=TextWinF_session(pgmname,parm,title);
if(run9_sessret == 0) {
WinMessageBox (HWND_DESKTOP, hwndClient,
"Session can't start",
"Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
}
else
{
if(0 != DosSelectSession(run9_sessret,0L))
{
run9_sessret=TextWinF_session(pgmname,parm,title);
if(run9_sessret == 0) {
WinMessageBox (HWND_DESKTOP, hwndClient,
"Session can't start",
"Main ERROR", 0, MB_OK | MB_ICONEXCLAMATION) ; }
}
}
break;
// ********** editor path and filename é╠É▌ÆΦ (entry) *********
case ID_SET1:
WinDlgBox( HWND_DESKTOP, /* âfâXâNâgâbâvé╠é╟é▒é⌐é╔Æué¡ */
hwndFrame, /* âtâîü[âÇé╔éµé┴é─ÅèùLé│éΩéΘ */
MyDlgProc, /* â_âCâAâìâOüEâvâìâVü[âWââü[é╠ */
/* âAâhâîâX */
NULL, /* âéâWâàü[âïüEânâôâhâï */
ID_MYDIALOG, /* âèâ\ü[âXôαé╠â_âCâAâìâOÄ»ò╩Äq */
NULL ); /* Åëè·É▌ÆΦâfü[â^ */
WinInvalidateRegion( hwnd, NULL, FALSE ); /* ï¡ÉºôIé╔ôhéΦÆ╝é╡ */
break;
// ********** MAKE terget File(exe) é╠É▌ÆΦ (entry) *********
case ID_SET2:
WinDlgBox( HWND_DESKTOP, /* âfâXâNâgâbâvé╠é╟é▒é⌐é╔Æué¡ */
hwndFrame, /* âtâîü[âÇé╔éµé┴é─ÅèùLé│éΩéΘ */
MakeDlgProc, /* â_âCâAâìâOüEâvâìâVü[âWââü[é╠ */
/* âAâhâîâX */
NULL, /* âéâWâàü[âïüEânâôâhâï */
ID_MAKEDLG, /* âèâ\ü[âXôαé╠â_âCâAâìâOÄ»ò╩Äq */
NULL ); /* Åëè·É▌ÆΦâfü[â^ */
WinInvalidateRegion( hwnd, NULL, FALSE ); /* ï¡ÉºôIé╔ôhéΦÆ╝é╡ */
break;
// ********** USER_EXEC RUN terget File(exe) é╠É▌ÆΦ (entry) *********
case ID_SET3:
WinDlgBox( HWND_DESKTOP, /* âfâXâNâgâbâvé╠é╟é▒é⌐é╔Æué¡ */
hwndFrame, /* âtâîü[âÇé╔éµé┴é─ÅèùLé│éΩéΘ */
RunDlgProc, /* â_âCâAâìâOüEâvâìâVü[âWââü[é╠ */
/* âAâhâîâX */
NULL, /* âéâWâàü[âïüEânâôâhâï */
ID_RUNDLG, /* âèâ\ü[âXôαé╠â_âCâAâìâOÄ»ò╩Äq */
NULL ); /* Åëè·É▌ÆΦâfü[â^ */
WinInvalidateRegion( hwnd, NULL, FALSE ); /* ï¡ÉºôIé╔ôhéΦÆ╝é╡ */
break;
// ********* PIPEÄ≤ĵëµû╩é╠âoâbâtâ@ü[âNâèâAü[ *********
case ID_CLEAR:
end_st=st_len;
for (t=0;t != end_st;t++) // *** âeâLâXâgâoâbâtâ@ü[é≡Å┴ïÄ
linebf[t][0]=0;
st_len=0; // *** ÅΩÅèâJâEâôâ^ü[é≡âèâZâbâg
// <===NEW
sVscrollPos = 0;
WinSendMsg (hwndVscroll, SBM_SETPOS,
MPFROMSHORT (sVscrollPos), NULL) ;
// WinUpdateWindow (hwnd) ;
WinInvalidateRegion( hwnd, NULL, FALSE );
/*ï¡ÉºôIé╔ôhéΦÆ╝é╡ */
break;
case ID_EXITPROGRAM:
WinPostMsg( hwnd, WM_CLOSE, 0L, 0L );
break;
default:
return WinDefWindowProc( hwnd, msg, mp1, mp2 );
}
break;
case WM_SIZE:
cxClient = SHORT1FROMMP (mp2) ;
cyClient = SHORT2FROMMP (mp2) ;
sHscrollMax = max (0, cxTextTotal - cxClient) ;
sHscrollPos = min (sHscrollPos, sHscrollMax) ;
WinSendMsg (hwndHscroll, SBM_SETSCROLLBAR,
MPFROM2SHORT (sHscrollPos, 0),
MPFROM2SHORT (0, sHscrollMax)) ;
WinEnableWindow (hwndHscroll, sHscrollMax ? TRUE : FALSE) ;
sVscrollMax = max (0, MAXLINE - cyClient / cyChar) ; //<===
sVscrollPos = min (sVscrollPos, sVscrollMax) ;
WinSendMsg (hwndVscroll, SBM_SETSCROLLBAR,
MPFROM2SHORT (sVscrollPos, 0),
MPFROM2SHORT (0, sVscrollMax)) ;
WinEnableWindow (hwndVscroll, sVscrollMax ? TRUE : FALSE) ;
return 0 ;
case WM_HSCROLL:
switch (SHORT2FROMMP (mp2))
{
case SB_LINELEFT:
sHscrollInc = -cxCaps ;
break ;
case SB_LINERIGHT:
sHscrollInc = cxCaps ;
break ;
case SB_PAGELEFT:
sHscrollInc = -8 * cxCaps ;
break ;
case SB_PAGERIGHT:
sHscrollInc = 8 * cxCaps ;
break ;
case SB_SLIDERPOSITION:
sHscrollInc = SHORT1FROMMP (mp2) - sHscrollPos;
break ;
default:
sHscrollInc = 0 ;
break ;
}
sHscrollInc = max (-sHscrollPos,
min (sHscrollInc, sHscrollMax - sHscrollPos)) ;
if (sHscrollInc != 0)
{
sHscrollPos += sHscrollInc ;
WinScrollWindow (hwnd, -sHscrollInc, 0,
NULL, NULL, NULL, NULL, SW_INVALIDATERGN) ;
WinSendMsg (hwndHscroll, SBM_SETPOS,
MPFROMSHORT (sHscrollPos), NULL) ;
}
return 0 ;
case WM_VSCROLL:
switch (SHORT2FROMMP (mp2))
{
case SB_LINEUP:
sVscrollInc = -1 ;
break ;
case SB_LINEDOWN:
sVscrollInc = 1 ;
break ;
case SB_PAGEUP:
sVscrollInc = min (-1, -cyClient / cyChar) ;
break ;
case SB_PAGEDOWN:
sVscrollInc = max (1, cyClient / cyChar) ;
break ;
case SB_SLIDERTRACK:
sVscrollInc = SHORT1FROMMP (mp2) - sVscrollPos;
break ;
default:
sVscrollInc = 0 ;
break ;
}
sVscrollInc = max (-sVscrollPos,
min (sVscrollInc, sVscrollMax - sVscrollPos)) ;
if (sVscrollInc != 0)
{
sVscrollPos += sVscrollInc ;
WinScrollWindow (hwnd, 0, cyChar * sVscrollInc,
NULL, NULL, NULL, NULL, SW_INVALIDATERGN) ;
WinSendMsg (hwndVscroll, SBM_SETPOS,
MPFROMSHORT (sVscrollPos), NULL) ;
WinUpdateWindow (hwnd) ;
}
return 0 ;
case WM_CHAR:
switch (CHARMSG(&msg)->vkey)
{
case VK_LEFT:
case VK_RIGHT:
return WinSendMsg (hwndHscroll, msg, mp1, mp2) ;
case VK_UP:
case VK_DOWN:
case VK_PAGEUP:
case VK_PAGEDOWN:
return WinSendMsg (hwndVscroll, msg, mp1, mp2) ;
}
break ;
case WM_TIMER:
if(disp_flag==0) break; // ò\Īé¬òKùvé╚éóÅΩìç
case WM_SEM1:
WinInvalidateRegion( hwnd, NULL, FALSE ); /*ï¡ÉºôIé╔ôhéΦÆ╝é╡ */
disp_flag=0; // ò\Īì╧é▌âtâëâOé╠âNâèâAü[
break;
case WM_PAINT:
hps = WinBeginPaint (hwnd, NULL, &rclInvalid) ;
GpiErase (hps) ;
sPaintBeg = max (0, sVscrollPos +
(cyClient - (SHORT) rclInvalid.yTop) / cyChar) ;
// sPaintEnd = min (NUMLINES, sVscrollPos +
// (cyClient - (SHORT) rclInvalid.yBottom)
// / cyChar + 1) ;
// sPaintEnd = min (linebf_end, sVscrollPos +
// (cyClient - (SHORT) rclInvalid.yBottom)
// / cyChar + 1) ;
//
sPaintEnd = min (MAXLINE, sVscrollPos +
(cyClient - (SHORT) rclInvalid.yBottom)
/ cyChar + 1) ;
for (sLine = sPaintBeg ; sLine < sPaintEnd ; sLine++)
{
ptl.x = cxCaps - sHscrollPos ;
ptl.y = cyClient - cyChar * (sLine + 1 - sVscrollPos)
+ cyDesc ;
// ***** ò╢ÄÜù±é╠Åæé½ì₧é▌
GpiCharStringAt (hps, &ptl,
(LONG) strlen (linebf[sLine]),linebf[sLine]) ;
}
WinEndPaint (hps) ;
return 0 ;
}
return WinDefWindowProc (hwnd, msg, mp1, mp2) ;
}
/****************************************************************************
â_âCâAâìâOüEâvâìâVü[âWââü[
âGâfâBâ^ü[é╠âtâ@âCâïû╝é≡ôⁿù═é╖éΘ
âGâôâgâèü[âtâBü[âïâhé╠â_âCâAâìâO
*****************************************************************************/
MRESULT EXPENTRY MyDlgProc( HWND hwndDlg, USHORT msg, MPARAM mp1, MPARAM mp2)
{
USHORT lngtex;
switch ( msg )
{
// ****************************************
// â_âCâAâìâOé╠Åëè·ë╗
// ****************************************
case WM_INITDLG:
// ***** └▐▓▒█╕▐É╢ɼÄ₧é╔┤▌─╪░╠¿░┘─▐(ID_ENTRYFIELD)é╔
// ***** ò╢ÄÜù±é¬É▌ÆΦé│éΩéΘ
WinSetDlgItemText( // *** ├╖╜─é≡└▐▓▒█╕▐ìÇû┌é╔╛»─é╖éΘè╓Éö
hwndDlg, // *** └▐▓▒█╕▐│¿▌─▐⌐é╠╩▌─▐┘
// *** DlgProcé╠æµêΩê÷Éö
ID_ENTRYFIELD, // *** ----.DLG é┼ÆΦï`é╡é╜ENTRYFIELDé╠
// *** ìÇû┌é╠ID
szEDITPARM // *** âfâFâtâHâïâgé╞é╚éΘò╢ÄÜù±
);
break;
case WM_COMMAND: /*ëƒé╡â{â^âôé▄é╜é═âLü[é╔éµé┴*/
/*é─Æ╩Æmé│éΩéΘ */
/*********************************************************************/
/*âåü[âUü[é¬Enteré▄é╜é═üuĵÅ┴üvëƒé╡â{â^âôé≡ëƒé╖é╞üCPMé═ */
/*WM_COMMANDâüâbâZü[âWé≡æùòté╖éΘüB */
/*********************************************************************/
switch( SHORT1FROMMP( mp1 ) ) /*âRâ}âôâhÆlé≡ÆèÅoé╖éΘ */
{
case DID_OK: /*Enterëƒé╡â{â^âôé▄é╜é═âLü[ */
/*WinQueryWindowTexté═ */
/*ôⁿù═âtâBü[âïâhé╠ôαùeé≡ */
/*szFilenameé╔òíÄ╩é╖éΘ */
lngtex=WinQueryWindowText( WinWindowFromID( hwndDlg, ID_ENTRYFIELD ),
LENGTH_STRING,
szEDITPARM );
szEDITPARM[lngtex+1]=0;
case DID_CANCEL: /*üuĵÅ┴üvëƒé╡â{â^âôé▄é╜é═ */
/*EscâLü[ */
WinDismissDlg( hwndDlg, TRUE ); /*â_âCâAâìâOüEâ{âbâNâXé≡ */
/*ĵéΦÅ£é¡ */
return FALSE;
default:
break;
}
break;
default:
/********************************************************************/
/*â_âCâAâìâOüEâvâìâVü[âWââü[é¬é▄é╛Åêù¥é╡é─éóé╚éóÄûÅ█âüâbâZü[âWé¬éáéΩ*/
/*é╬é▒é▒é╔é½é─üCWinDefDlgProcé╔éµé┴é─Åêù¥é│éΩéΘüB */
/*é▒é╠î─é╤Åoé╡é═èeÄ⌐é╠â_âCâAâìâOüEâvâìâVü[âWââü[é╠Æåé╔òKé╕é╚é»éΩé╬ */
/*é╚éτé╚éóüB */
/********************************************************************/
return WinDefDlgProc( hwndDlg, msg, mp1, mp2 );
}
return FALSE;
}
/****************************************************************************
â_âCâAâìâOüEâvâìâVü[âWââü[
MAKE ùpâ^ü[âQâbâgüEâtâ@âCâïû╝é≡ôⁿù═é╖éΘ
âGâôâgâèü[âtâBü[âïâhé╠â_âCâAâìâO
*****************************************************************************/
MRESULT EXPENTRY MakeDlgProc(HWND hwndDlg,USHORT msg, MPARAM mp1, MPARAM mp2)
{
USHORT lngtex;
switch ( msg )
{
// ****************************************
// â_âCâAâìâOé╠Åëè·ë╗
// ****************************************
case WM_INITDLG:
// ***** └▐▓▒█╕▐É╢ɼÄ₧é╔┤▌─╪░╠¿░┘─▐(ID_ENTRYFIELD)é╔
// ***** ò╢ÄÜù±é¬É▌ÆΦé│éΩéΘ
WinSetDlgItemText( // *** ├╖╜─é≡└▐▓▒█╕▐ìÇû┌é╔╛»─é╖éΘè╓Éö
hwndDlg, // *** └▐▓▒█╕▐│¿▌─▐⌐é╠╩▌─▐┘
// *** DlgProcé╠æµêΩê÷Éö
ID_ENTRYFIELD, // *** ----.DLG é┼ÆΦï`é╡é╜ENTRYFIELDé╠
// *** ìÇû┌é╠ID
szMAKEPARM // *** âfâFâtâHâïâgé╞é╚éΘò╢ÄÜù±
);
break;
case WM_COMMAND: /*ëƒé╡â{â^âôé▄é╜é═âLü[é╔éµé┴*/
/*é─Æ╩Æmé│éΩéΘ */
/*********************************************************************/
/*âåü[âUü[é¬Enteré▄é╜é═üuĵÅ┴üvëƒé╡â{â^âôé≡ëƒé╖é╞üCPMé═ */
/*WM_COMMANDâüâbâZü[âWé≡æùòté╖éΘüB */
/*********************************************************************/
switch( SHORT1FROMMP( mp1 ) ) /*âRâ}âôâhÆlé≡ÆèÅoé╖éΘ */
{
case DID_OK: /*Enterëƒé╡â{â^âôé▄é╜é═âLü[ */
/*WinQueryWindowTexté═ */
/*ôⁿù═âtâBü[âïâhé╠ôαùeé≡ */
/*szFilenameé╔òíÄ╩é╖éΘ */
lngtex=WinQueryWindowText( WinWindowFromID( hwndDlg,ID_ENTRYFIELD),
LENGTH_STRING,
szMAKEPARM );
szMAKEPARM[lngtex+1]=0;
case DID_CANCEL: /*üuĵÅ┴üvëƒé╡â{â^âôé▄é╜é═ */
/*EscâLü[ */
WinDismissDlg( hwndDlg, TRUE ); /*â_âCâAâìâOüEâ{âbâNâXé≡ */
/*ĵéΦÅ£é¡ */
return FALSE;
default:
break;
}
break;
default:
/********************************************************************/
/*â_âCâAâìâOüEâvâìâVü[âWââü[é¬é▄é╛Åêù¥é╡é─éóé╚éóÄûÅ█âüâbâZü[âWé¬éáéΩ*/
/*é╬é▒é▒é╔é½é─üCWinDefDlgProcé╔éµé┴é─Åêù¥é│éΩéΘüB */
/*é▒é╠î─é╤Åoé╡é═èeÄ⌐é╠â_âCâAâìâOüEâvâìâVü[âWââü[é╠Æåé╔òKé╕é╚é»éΩé╬ */
/*é╚éτé╚éóüB */
/********************************************************************/
return WinDefDlgProc( hwndDlg, msg, mp1, mp2 );
}
return FALSE;
}
/****************************************************************************
â_âCâAâìâOüEâvâìâVü[âWââü[
USER_EXEC RUN ùpâ^ü[âQâbâgüEâtâ@âCâïû╝é≡ôⁿù═é╖éΘ
âGâôâgâèü[âtâBü[âïâhé╠â_âCâAâìâO
*****************************************************************************/
MRESULT EXPENTRY RunDlgProc(HWND hwndDlg,USHORT msg, MPARAM mp1, MPARAM mp2)
{
USHORT lngtex;
switch ( msg )
{
// ****************************************
// â_âCâAâìâOé╠Åëè·ë╗
// ****************************************
case WM_INITDLG:
// ***** └▐▓▒█╕▐É╢ɼÄ₧é╔┤▌─╪░╠¿░┘─▐(ID_ENTRYFIELD)é╔
// ***** ò╢ÄÜù±é¬É▌ÆΦé│éΩéΘ
WinSetDlgItemText( // *** ├╖╜─é≡└▐▓▒█╕▐ìÇû┌é╔╛»─é╖éΘè╓Éö
hwndDlg, // *** └▐▓▒█╕▐│¿▌─▐⌐é╠╩▌─▐┘
// *** DlgProcé╠æµêΩê÷Éö
ID_ENTRYFIELD, // *** ----.DLG é┼ÆΦï`é╡é╜ENTRYFIELDé╠
// *** ìÇû┌é╠ID
szRUNPARM // *** âfâFâtâHâïâgé╞é╚éΘò╢ÄÜù±
);
break;
case WM_COMMAND: /*ëƒé╡â{â^âôé▄é╜é═âLü[é╔éµé┴*/
/*é─Æ╩Æmé│éΩéΘ */
/*********************************************************************/
/*âåü[âUü[é¬Enteré▄é╜é═üuĵÅ┴üvëƒé╡â{â^âôé≡ëƒé╖é╞üCPMé═ */
/*WM_COMMANDâüâbâZü[âWé≡æùòté╖éΘüB */
/*********************************************************************/
switch( SHORT1FROMMP( mp1 ) ) /*âRâ}âôâhÆlé≡ÆèÅoé╖éΘ */
{
case DID_OK: /*Enterëƒé╡â{â^âôé▄é╜é═âLü[ */
/*WinQueryWindowTexté═ */
/*ôⁿù═âtâBü[âïâhé╠ôαùeé≡ */
/*szFilenameé╔òíÄ╩é╖éΘ */
lngtex=WinQueryWindowText( WinWindowFromID( hwndDlg,ID_ENTRYFIELD),
LENGTH_STRING,
szRUNPARM );
szRUNPARM[lngtex+1]=0;
case DID_CANCEL: /*üuĵÅ┴üvëƒé╡â{â^âôé▄é╜é═ */
/*EscâLü[ */
WinDismissDlg( hwndDlg, TRUE ); /*â_âCâAâìâOüEâ{âbâNâXé≡ */
/*ĵéΦÅ£é¡ */
return FALSE;
default:
break;
}
break;
default:
/********************************************************************/
/*â_âCâAâìâOüEâvâìâVü[âWââü[é¬é▄é╛Åêù¥é╡é─éóé╚éóÄûÅ█âüâbâZü[âWé¬éáéΩ*/
/*é╬é▒é▒é╔é½é─üCWinDefDlgProcé╔éµé┴é─Åêù¥é│éΩéΘüB */
/*é▒é╠î─é╤Åoé╡é═èeÄ⌐é╠â_âCâAâìâOüEâvâìâVü[âWââü[é╠Æåé╔òKé╕é╚é»éΩé╬ */
/*é╚éτé╚éóüB */
/********************************************************************/
return WinDefDlgProc( hwndDlg, msg, mp1, mp2 );
}
return FALSE;
}
/****************************************************************************
â_âCâAâìâOüEâvâìâVü[âWââü[
GSEE.EXEé╠âtâ@âCâïû╝é≡ôⁿù═é╖éΘ
âGâôâgâèü[âtâBü[âïâhé╠â_âCâAâìâO
*****************************************************************************/
MRESULT EXPENTRY GseeEntry( HWND hwndDlg, USHORT msg, MPARAM mp1, MPARAM mp2)
{
USHORT lngtex;
switch ( msg )
{
// ****************************************
// â_âCâAâìâOé╠Åëè·ë╗
// ****************************************
case WM_INITDLG:
// ***** └▐▓▒█╕▐É╢ɼÄ₧é╔┤▌─╪░╠¿░┘─▐(ID_ENTRYFIELD)é╔
// ***** ò╢ÄÜù±é¬É▌ÆΦé│éΩéΘ
WinSetDlgItemText( // *** ├╖╜─é≡└▐▓▒█╕▐ìÇû┌é╔╛»─é╖éΘè╓Éö
hwndDlg, // *** └▐▓▒█╕▐│¿▌─▐⌐é╠╩▌─▐┘
// *** DlgProcé╠æµêΩê÷Éö
ID_ENTRYFIELD, // *** ----.DLG é┼ÆΦï`é╡é╜ENTRYFIELDé╠
// *** ìÇû┌é╠ID
szGSEEPARM // *** âfâFâtâHâïâgé╞é╚éΘò╢ÄÜù±
);
break;
case WM_COMMAND: /*ëƒé╡â{â^âôé▄é╜é═âLü[é╔éµé┴*/
/*é─Æ╩Æmé│éΩéΘ */
/*********************************************************************/
/*âåü[âUü[é¬Enteré▄é╜é═üuĵÅ┴üvëƒé╡â{â^âôé≡ëƒé╖é╞üCPMé═ */
/*WM_COMMANDâüâbâZü[âWé≡æùòté╖éΘüB */
/*********************************************************************/
switch( SHORT1FROMMP( mp1 ) ) /*âRâ}âôâhÆlé≡ÆèÅoé╖éΘ */
{
case DID_OK: /*Enterëƒé╡â{â^âôé▄é╜é═âLü[ */
/*WinQueryWindowTexté═ */
/*ôⁿù═âtâBü[âïâhé╠ôαùeé≡ */
/*szFilenameé╔òíÄ╩é╖éΘ */
lngtex=WinQueryWindowText( WinWindowFromID( hwndDlg,ID_ENTRYFIELD),
LENGTH_STRING,
szGSEEPARM );
szGSEEPARM[lngtex+1]=0;
cancelFLAG=0; // *** é┐éßé±é╞É▌ÆΦé│éΩé╜
WinDismissDlg( hwndDlg, TRUE ); /*â_âCâAâìâOüEâ{âbâNâXé≡ */
/*ĵéΦÅ£é¡ */
return FALSE;
case DID_CANCEL: /*üuĵÅ┴üvëƒé╡â{â^âôé▄é╜é═ */
/*EscâLü[ */
cancelFLAG=1; // *** ĵÅ┴é╡é╛!
WinDismissDlg( hwndDlg, TRUE ); /*â_âCâAâìâOüEâ{âbâNâXé≡ */
/*ĵéΦÅ£é¡ */
return FALSE;
default:
break;
}
break;
default:
/********************************************************************/
/*â_âCâAâìâOüEâvâìâVü[âWââü[é¬é▄é╛Åêù¥é╡é─éóé╚éóÄûÅ█âüâbâZü[âWé¬éáéΩ*/
/*é╬é▒é▒é╔é½é─üCWinDefDlgProcé╔éµé┴é─Åêù¥é│éΩéΘüB */
/*é▒é╠î─é╤Åoé╡é═èeÄ⌐é╠â_âCâAâìâOüEâvâìâVü[âWââü[é╠Æåé╔òKé╕é╚é»éΩé╬ */
/*é╚éτé╚éóüB */
/********************************************************************/
return WinDefDlgProc( hwndDlg, msg, mp1, mp2 );
}
return FALSE;
}
/****************************************************************************
â_âCâAâìâOüEâvâìâVü[âWââü[
GREP.EXEé╠âtâ@âCâïû╝é≡ôⁿù═é╖éΘ
âGâôâgâèü[âtâBü[âïâhé╠â_âCâAâìâO
*****************************************************************************/
MRESULT EXPENTRY GrepEntry( HWND hwndDlg, USHORT msg, MPARAM mp1, MPARAM mp2)
{
USHORT lngtex;
BOOL fChecked;
switch ( msg )
{
// ****************************************
// â_âCâAâìâOé╠Åëè·ë╗
// ****************************************
case WM_INITDLG:
// ***** └▐▓▒█╕▐É╢ɼÄ₧é╔┤▌─╪░╠¿░┘─▐(ID_ENTRYFIELD)é╔
// ***** ò╢ÄÜù±é¬É▌ÆΦé│éΩéΘ
WinSetDlgItemText( // *** ├╖╜─é≡└▐▓▒█╕▐ìÇû┌é╔╛»─é╖éΘè╓Éö
hwndDlg, // *** └▐▓▒█╕▐│¿▌─▐⌐é╠╩▌─▐┘
// *** DlgProcé╠æµêΩê÷Éö
ID_ENTRYFIELD, // *** ----.DLG é┼ÆΦï`é╡é╜ENTRYFIELDé╠
// *** ìÇû┌é╠ID
szGREPPARM // *** âfâFâtâHâïâgé╞é╚éΘò╢ÄÜù±
);
WinSetDlgItemText( // *** ├╖╜─é≡└▐▓▒█╕▐ìÇû┌é╔╛»─é╖éΘè╓Éö
hwndDlg, // *** └▐▓▒█╕▐│¿▌─▐⌐é╠╩▌─▐┘
// *** DlgProcé╠æµêΩê÷Éö
ID_ENTRYFIELD2, // *** ----.DLG é┼ÆΦï`é╡é╜ENTRYFIELDé╠
// *** ìÇû┌é╠ID
szGREPPARM2 // *** âfâFâtâHâïâgé╞é╚éΘò╢ÄÜù±
);
subdirsFLAG=0; // *** ╗╠▐├▐¿┌╕─╪░é╠É▌ÆΦé╠âtâëâO
break;
case WM_CONTROL:
if( SHORT2FROMMP( mp1 ) == BN_CLICKED )
/*â`âFâbâNüEâ{âbâNâXé╠â`âFâbâNü^âAâôâ`âFâbâNé╠Å≤æ╘é≡ûΓéóìçéφé╣üCé╗éΩé╔Å]é┴*/
/*é─fCheckedé≡TRUEüiâ`âFâbâNüjé▄é╜é═FALSEüiâAâôâ`âFâbâNüjé╔âZâbâgé╖éΘ */
fChecked = SHORT1FROMMR( WinSendMsg( WinWindowFromID( hwndDlg ,
SHORT1FROMMP( mp1 ) ),
BM_QUERYCHECK,
0L,
0L ) );
switch( SHORT1FROMMP( mp1 ) )
{
case ID_CHECK:
subdirsFLAG=fChecked;
break;
default:
return FALSE;
}
break;
case WM_COMMAND: /*ëƒé╡â{â^âôé▄é╜é═âLü[é╔éµé┴*/
/*é─Æ╩Æmé│éΩéΘ */
/*********************************************************************/
/*âåü[âUü[é¬Enteré▄é╜é═üuĵÅ┴üvëƒé╡â{â^âôé≡ëƒé╖é╞üCPMé═ */
/*WM_COMMANDâüâbâZü[âWé≡æùòté╖éΘüB */
/*********************************************************************/
switch( SHORT1FROMMP( mp1 ) ) /*âRâ}âôâhÆlé≡ÆèÅoé╖éΘ */
{
case DID_OK: /*Enterëƒé╡â{â^âôé▄é╜é═âLü[ */
/*WinQueryWindowTexté═ */
/*ôⁿù═âtâBü[âïâhé╠ôαùeé≡ */
/*szFilenameé╔òíÄ╩é╖éΘ */
lngtex=WinQueryWindowText( WinWindowFromID( hwndDlg,ID_ENTRYFIELD),
LENGTH_STRING,
szGREPPARM );
szGREPPARM[lngtex+1]=0;
lngtex=WinQueryWindowText( WinWindowFromID( hwndDlg,ID_ENTRYFIELD2),
LENGTH_STRING,
szGREPPARM2 );
szGREPPARM2[lngtex+1]=0;
cancelFLAG=0; // *** é┐éßé±é╞É▌ÆΦé│éΩé╜
WinDismissDlg( hwndDlg, TRUE ); /*â_âCâAâìâOüEâ{âbâNâXé≡ */
/*ĵéΦÅ£é¡ */
return FALSE;
case DID_CANCEL: /*üuĵÅ┴üvëƒé╡â{â^âôé▄é╜é═ */
/*EscâLü[ */
cancelFLAG=1; // *** ĵÅ┴é╡é╛!
WinDismissDlg( hwndDlg, TRUE ); /*â_âCâAâìâOüEâ{âbâNâXé≡ */
/*ĵéΦÅ£é¡ */
return FALSE;
default:
break;
}
break;
default:
/********************************************************************/
/*â_âCâAâìâOüEâvâìâVü[âWââü[é¬é▄é╛Åêù¥é╡é─éóé╚éóÄûÅ█âüâbâZü[âWé¬éáéΩ*/
/*é╬é▒é▒é╔é½é─üCWinDefDlgProcé╔éµé┴é─Åêù¥é│éΩéΘüB */
/*é▒é╠î─é╤Åoé╡é═èeÄ⌐é╠â_âCâAâìâOüEâvâìâVü[âWââü[é╠Æåé╔òKé╕é╚é»éΩé╬ */
/*é╚éτé╚éóüB */
/********************************************************************/
return WinDefDlgProc( hwndDlg, msg, mp1, mp2 );
}
return FALSE;
}