PWB Extension Converts Selected Text to Uppercase Letters
ID: Q94837
|
The information in this article applies to:
-
Microsoft Programmer's Workbench for MS-DOS, versions 1.0, 1.1, 2.0
-
Microsoft Programmer's Workbench for OS/2, versions 1.0, 1.1
SUMMARY
The text below demonstrates the process to create a Programmer's WorkBench
(PWB) extension to convert one selected line of text to uppercase. Note
that nothing appears to happen if the cursor is on a different line than
the selected line.
MORE INFORMATION
To load and use the extension, perform the following five steps:
- Copy REVERSE.MXT into the same directory as PWB. By default on an MS-DOS
system, this is the BIN subdirectory. By default on an OS/2 system, this
is the BINP subdirectory.
- Modify the TOOLS.INI file to place a load command in the [PWB] section.
For example,
[pwb]
load:[path\]reverse
- Start the PWB editor.
- Select the text to convert to uppercase letters. The selection must be
on one line.
- From the Case menu, select Lower to Upper.
The source code for this PWB extension is as follows.
Sample Code
/*
* Compile options needed: cl /c /Gs /ACw reverse.c
* link exthdr test, reverse.mxt;
*/
#define BUF_LEN 250
#define TRUE 1
#define FALSE 0
#include <ext.h>
#include <string.h>
#include <ctype.h>
PWBFUNC ToUpper(unsigned argData, ARG _far *pArg, flagType fMeta);
struct swiDesc swiTable[] =
{
{"ToUpper", toPIF(ToUpper), SWI_BOOLEAN},
{ NULL, NULL, 0}
};
struct cmdDesc cmdTable[] =
{
{"ToUpper", ToUpper, 0, STREAMARG},
{NULL, NULL, 0, 0}
};
void EXTERNAL WhenLoaded(void)
{
int hmatch;
hmatch = AddMenu("~Case", "xxxx", "", TRUE);
AddMenuItem(hmatch, "~Lower to Upper", "Case switch", NULL, "ToUpper");
}
PWBFUNC ToUpper(unsigned argData, ARG _far *pArg, flagType fMeta)
{
LINE ycurr, ystart, yend;
COL xcurr, xstart, xend;
char buf[BUF_LEN + 1];
PFILE pfile;
int i;
int maxlines;
switch (pArg->argType)
{
case STREAMARG:
// The following code retrieves the corners
// of the stream for future use
ystart = pArg->arg.streamarg.yStart;
yend = pArg->arg.streamarg.yEnd;
xstart = pArg->arg.streamarg.xStart;
xend = pArg->arg.streamarg.xEnd;
pfile = FileNameToHandle("", "");
maxlines = FileLength(pfile);
ycurr = ystart;
xcurr = xstart;
// Read the argument
pfile = FileNameToHandle("","");
GetLine(ystart, buf, pfile);
// Convert to uppercase letters
for ( ; xcurr < xend ; xcurr++)
buf[xcurr] = toupper(buf[xcurr]);
// Output converted argument
PutLine(ystart, buf, pfile);
break;
default:
DoMessageBox("Default", buf, NULL, MBOX_OK, 0);
break;
}
}
Additional query words:
kbinf 1.00 1.10 2.00 PWBIss
Keywords : kb16bitonly
Version : MS-DOS:1.0,1.1,2.0; OS/2:1.0,1.1
Platform : MS-DOS OS/2
Issue type :