📄 rcp2c.c
字号:
case rwBoldFrame:
CheckGrif(ifFrame);
pitm->frame = boldButtonFrame;
break;
case rwDisabled:
case rwEnabled:
CheckGrif(ifEnabled);
pitm->enabled = tok.rw == rwEnabled;
break;
case rwChecked:
CheckGrif(ifOn);
pitm->on = fTrue;
break;
case rwEditable:
case rwNonEditable:
CheckGrif(ifEditable);
pitm->editable = tok.rw == rwEditable;
break;
case rwSingleLine:
case rwMultipleLines:
CheckGrif(ifSingleLine);
pitm->singleLine = tok.rw == rwSingleLine;
break;
case rwVertical: /* RMa add */
CheckGrif2(if2Vertical);
pitm->vertical = tok.rw == rwVertical;
break;
case rwGraphical: /* RMa add */
CheckGrif2(if2Graphical);
pitm->graphical = tok.rw == rwGraphical;
break;
case rwDynamicSize:
CheckGrif(ifDynamicSize);
pitm->dynamicSize = 1;
break;
case rwMaxChars:
CheckGrif(ifMaxChars);
pitm->maxChars = WGetConstEx("MaxChars",NULL);
break;
case rwLeftAlign: /* default? */
CheckGrif(ifAlign);
pitm->justification = leftAlign;
break;
case rwRightAlign:
CheckGrif(ifAlign);
pitm->justification = rightAlign;
break;
case rwUnderlined:
CheckGrif(ifUnderlined);
pitm->underlined = 1; /* WES! try 2 & 3! */
break;
case rwVisibleItems:
CheckGrif(ifCvis);
pitm->cvis = WGetConstEx("VisibleItems",NULL);
break;
case rwValue:
CheckGrif2(if2Value);
pitm->value = WGetConstEx("Value",NULL);
break;
case rwMinValue:
CheckGrif2(if2MinValue);
pitm->minValue = WGetConstEx("MinValue",NULL);
break;
case rwMaxValue:
CheckGrif2(if2MaxValue);
pitm->maxValue = WGetConstEx("MaxValue",NULL);
break;
case rwPageSize:
CheckGrif2(if2PageSize);
pitm->pageSize = WGetConstEx("PageSize",NULL);
break;
case rwFeedback: /* RMa add */
CheckGrif2(if2Feedback);
pitm->feedback = tok.rw == rwFeedback;
break;
case rwThumbID: /* RMa add */
CheckGrif2(if2ThumbID);
pitm->thumbid = WGetConstEx("ThumbID",szIdNameBuf);
pitm->szThumIdName=strdup(szIdNameBuf);
break;
case rwBackgroundID: /* RMa add */
CheckGrif2(if2BackgroundID);
pitm->backgroundid = WGetConstEx("BackgroundID",NULL);
break;
case rwBitmapID: /* RMa add */
CheckGrif2(if2BitmapID);
pitm->bitmapid = WGetConstEx("BitmapID",szIdNameBuf);
pitm->szBitmapIdName=strdup(szIdNameBuf);
break;
case rwSelectedBitmapID: /* RMa add */
CheckGrif2(if2SelectedBitmapID);
pitm->selectedbitmapid = WGetConstEx("SelectedBitmapID",szIdNameBuf);
pitm->szSelectedBitmapIdName=strdup(szIdNameBuf);
break;
case rwBitmap:
CheckGrif(ifBitmap);
pitm->rscID = WGetConstEx("BitmapId",szIdNameBuf);
pitm->szRscIdName=strdup(szIdNameBuf);
break;
case rwModal:
CheckGrif(ifModal);
pitm->modal = 1;
break;
case rwSaveBehind:
CheckGrif(ifSaveBehind);
pitm->saveBehind = 1;
break;
case rwNoSaveBehind:
CheckGrif(ifSaveBehind);
pitm->saveBehind = 0;
break;
case rwHelpId:
CheckGrif(ifHelpId);
pitm->helpId = WGetConstEx("HelpId",szIdNameBuf);
pitm->szHelpIdName=strdup(szIdNameBuf);
break;
case rwDefaultBtnId:
CheckGrif(ifDefaultBtnId);
pitm->defaultBtnId = WGetConstEx("DefaultButtonId",szIdNameBuf);
pitm->szDefaultBtnIdName=strdup(szIdNameBuf);
break;
case rwMenuId:
CheckGrif(ifDefaultBtnId);
pitm->menuId = WGetConstEx("MenuId",szIdNameBuf);
pitm->szMenuIdName=strdup(szIdNameBuf);
break;
case rwNumColumns:
CheckGrif2(if2NumColumns);
pitm->numColumns = WGetConstEx("NumColumns",NULL);
break;
case rwNumRows:
CheckGrif2(if2NumRows);
pitm->numRows = WGetConstEx("NumRows",NULL);
break;
case rwColumnWidths:
CheckGrif2(if2ColumnWidths);
for (icol = 0; icol < pitm->numColumns; icol++)
pitm->rgdxcol[icol] = WGetConstEx("ColumnWidth",NULL);
break;
case rwAutoShift:
CheckGrif2(if2AutoShift);
pitm->autoShift = 1;
break;
case rwHasScrollBar:
CheckGrif2(if2Scrollbar);
pitm->hasScrollBar = 1;
break;
case rwNumeric:
CheckGrif2(if2Numeric);
pitm->numeric = 1;
break;
case rwVersion: /* RMa addition */
CheckGrif3(if3Vers);
pitm->version = WGetConstEx("version",NULL);
break;
case rwCreator: /* RMa addition */
CheckGrif3(if3Creator);
pitm->creator = PchGetSz("creator");
break;
case rwLanguage: /* RMa addition */
CheckGrif3(if3Language);
pitm->language = PchGetSz("language");
break;
case rwCountry: /* RMa addition */
CheckGrif3(if3Country);
pitm->country = PchGetSz("country");
break;
case rwScreen: /* RMa addition */
case rwGraffiti: /* BUG! other types */
CheckGrif3(if3areaType);
pitm->areaType = tok.rw == rwGraffiti;
break;
case rwAreaIndex: /* RMa addition */
CheckGrif3(if3areaIndex);
pitm->areaIndex = WGetConstEx("index",NULL);
break;
case rwKeyDownChr: /* RMa addition */
CheckGrif3(if3keyDownChr);
pitm->keyDownChr = WGetConstEx("keydownchr",NULL);
break;
case rwKeyDownKeyCode: /* RMa addition */
CheckGrif3(if3keyDownKeyCode);
pitm->keyDownKeyCode = WGetConstEx("keydownkeycode",NULL);
break;
case rwKeyDownModifiers: /* RMa addition */
CheckGrif3(if3keyDownModifiers);
pitm->keyDownModifiers = WGetConstEx("keydownmodifiers",NULL);
break;
case rwNumber: /* RMa addition */
CheckGrif3(if3Number);
pitm->Number = WGetConstEx("number",NULL);
break;
case rwName: /* RMa addition */
CheckGrif3(if3Name);
pitm->Name = PchGetSz("name");
break;
case rwDateFormat: /* RMa addition */
CheckGrif3(if3DateFormat);
pitm->DateFormat = WGetConstEx("dateformat",NULL);
break;
case rwLongDateFormat: /* RMa addition */
CheckGrif3(if3LongDateFormat);
pitm->LongDateFormat = WGetConstEx("longdateformat",NULL);
break;
case rwWeekStartDay: /* RMa addition */
CheckGrif3(if3WeekStartDay);
pitm->WeekStartDay = WGetConstEx("weekstartday",NULL);
break;
case rwTimeFormat: /* RMa addition */
CheckGrif3(if3TimeFormat);
pitm->TimeFormat = WGetConstEx("timeformat",NULL);
break;
case rwNumberFormat: /* RMa addition */
CheckGrif3(if3NumberFormat);
pitm->NumberFormat = WGetConstEx("numberformat",NULL);
break;
case rwCurrencyName: /* RMa addition */
CheckGrif3(if3CurrencyName);
pitm->CurrencyName = PchGetSz("currencyname");
break;
case rwCurrencySymbol: /* RMa addition */
CheckGrif3(if3CurrencySymbol);
pitm->CurrencySymbol = PchGetSz("currencysymbol");
break;
case rwCurrencyUniqueSymbol: /* RMa addition */
CheckGrif3(if3CurrencyUniqueSymbol);
pitm->CurrencyUniqueSymbol = PchGetSz("currencyuniquesymbol");
break;
case rwCurrencyDecimalPlaces: /* RMa addition */
CheckGrif3(if3CurrencyDecimalPlaces);
pitm->CurrencyDecimalPlaces = WGetConstEx("currencydecimalplaces",NULL);
break;
case rwDaylightSavings: /* RMa addition */
CheckGrif3(if3DayLightSaving);
pitm->DaylightSavings = WGetConstEx("daylightsavings",NULL);
break;
case rwMinutesWestOfGmt: /* RMa addition */
CheckGrif3(if3MinutesWestOfGmt);
pitm->MinutesWestOfGmt = WGetConstEx("minuteswestofgmt",NULL);
break;
case rwMeasurementSystem: /* RMa addition */
CheckGrif3(if3MeasurementSystem);
pitm->MeasurementSystem = WGetConstEx("measurementsystem",NULL);
break;
case rwDefaultItem:
CheckGrif3(if3DefaultItm);
pitm->DefaultItem = WGetConstEx("defaultitem",NULL);
break;
}
}
}
#define CondEmitB(b) do {if (fEmit) EmitB(b);} while (0)
#define CondEmitW(w) do {if (fEmit) EmitW(w);} while (0)
#define CondEmitL(l) do {if (fEmit) EmitL(l);} while (0)
/*-----------------------------------------------------------------------------
| CbEmitStruct
|
| Emit a struct (RC*). It is assumed that the members of the struct
| are integers or pointers only. Further it is assumed that pointers and
| integers are the same size.
|
| Arguments:
| void *pv : struct to emit
| char *szPic: format picture -- see RCP2C.h for format
| char **ppchText: if szPic contains a 'p' then return that pointer here
| BOOL fEmit: Actually emit the bytes
|
| Returns:
| size of the structure
-------------------------------------------------------------WESC------------*/
int
CbEmitStruct(void *pv,
char *szPic,
char **ppchText,
BOOL fEmit)
{
char *pch;
int *pi;
int ibit;
unsigned char byte;
unsigned short word; /* RMa add */
int cb;
if (ppchText != NULL)
*ppchText = NULL;
cb = 0;
ibit = 0;
byte = 0;
word = 0; /* RMa add */
Assert(sizeof(char *) == sizeof(int));
pi = (int *)pv;
for (pch = szPic; *pch != 0;)
{
int ch;
int c;
BOOL fZero;
if (*pch == ',')
{
pch++;
continue;
}
fZero = *pch == 'z';
if (fZero)
pch++;
ch = *pch++;
c = 0;
while (isdigit(*pch))
{
c = 10 * c + (*pch - '0');
pch++;
}
if (c == 0)
c = 1;
switch (ch)
{
default:
Assert(fFalse);
break;
case 'b': /* byte (8 bit) */
while (c--)
{
if (fZero)
CondEmitB(0);
else
{
CondEmitB((unsigned char)*pi);
pi++;
}
cb += 1;
}
break;
case 'w': /* word (16 bit) */
while (c--)
{
if (fZero)
CondEmitW(0);
else
{
CondEmitW((unsigned short)*pi);
pi++;
}
cb += 2;
}
break;
case 'p': /* text (pointer) */
Assert(c == 1);
if (ppchText != NULL)
*ppchText = *(char **)pi;
if (!fZero)
pi++;
fZero = fTrue;
/*
* fall thru
*/
case 'l': /* long (32bit) */
while (c--)
{
if (fZero)
CondEmitL(0);
else
{
CondEmitL(*pi);
pi++;
}
cb += 4;
}
break;
case 't': /* 8 bits field to byte */
ibit += c;
if (vfLE32)
{
byte = (unsigned char)(byte >> c);
if (pv != NULL && pi != NULL && !fZero)
{
byte |= (*pi << (8 - c));
pi++;
}
}
else
{
byte = (unsigned char)(byte << c);
if (pv != NULL && pi != NULL && !fZero) // RMa : Bug correction test Pi != Null
byte |= *pi++;
}
if (ibit == 8)
{
CondEmitB(byte);
cb++;
byte = 0;
ibit = 0;
}
break;
case 'u': /* RMa add: 16 bits field to word */
ibit += c;
if (vfLE32)
{ /* RMa add */
word = (unsigned short)(word >> c);
if (pv != NULL && pi != NULL && !fZero)
{
word |= (*pi << (16 - c));
pi++;
}
}
else
{
word = (unsigned short)(word << c);
if (pv != NULL && pi != NULL && !fZero)
word |= *pi++;
}
if (ibit == 16)
{
CondEmitW(word);
cb += 2;
word = 0;
ibit = 0;
}
break;
}
}
Assert(ibit == 0);
return cb;
}
/*-----------------------------------------------------------------------------
| CbStruct
|
| returns the size of a pilot struct given it's format pic
-------------------------------------------------------------WESC------------*/
int
CbStruct(char *szPic)
{
return CbEmitStruct(NULL, szPic, NULL, fFalse);
}
/*
* mapping of form object types to resource ids
*/
static char *mpotszEmit[16];
void
CbInit(void)
{
mpotszEmit[5] = NULL; /* 'tLIN' bogus */
mpotszEmit[6] = NULL; /* 'tFRA' bogus */
mpotszEmit[7] = NULL; /* 'tREC' bogus */
mpotszEmit[9] = szRCFORMTITLE; /* 'tTTL' */
mpotszEmit[10] = szRCFORMPOPUP; /* 'tPUL' */
mpotszEmit[11] = szRCFORMGRAFFITISTATE; /* 'tGSI' */
mpotszEmit[12] = szRCFORMGADGET; /* 'tGDT' */
mpotszEmit[13] = szRCSCROLLBAR; /* 'tSCL' */
if (vfLE32)
{
mpotszEmit[0] = szRCFieldBA32; /* 'tFLD' */
mpotszEmit[1] = szRCControlBA32; /* 'tCTL' need to special case this one! */
mpotszEmit[2] = szRCListBA32; /* 'tLST' */
mpotszEmit[3] = szRCTableBA32; /* szRCTBL'tTBL', */
mpotszEmit[4] = szRCFormBitMapBA32; /* 'tFBM' */
mpotszEmit[8] = szRCFormLabelBA32; /* 'tLBL' */
mpotszEmit[14] = szRCSliderControlBA32;
mpotszEmit[15] = szRCGraphicalControlBA32;
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -