windows-nt/Source/XPSP1/NT/shell/osshell/accesory/common/message.c
2020-09-26 16:20:57 +08:00

88 lines
1.9 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "windows.h"
#include <port1632.h>
VOID FAR InitMerge();
INT FAR AlertBox();
BOOL FAR MergeStrings(CHAR *szSrc,
CHAR *szMerge,
CHAR *szDst);
WORD wMerge;
/* ** Post a message box */
INT FAR AlertBox(hwndParent, szCaption, szText1, szText2, style)
HWND hwndParent;
CHAR *szCaption;
CHAR *szText1;
CHAR *szText2;
WORD style;
{
CHAR szMessage[256];
MergeStrings(szText1, szText2, szMessage);
return (MessageBox(hwndParent, (LPSTR)szMessage, (LPSTR)szCaption, style));
}
/* ** Scan sz1 for merge spec. If found, insert string sz2 at that point.
Then append rest of sz1 NOTE! Merge spec guaranteed to be two chars.
returns TRUE if it does a merge, false otherwise. */
BOOL FAR MergeStrings(szSrc, szMerge, szDst)
CHAR *szSrc;
CHAR *szMerge;
CHAR *szDst;
{
register CHAR *pchSrc;
register CHAR *pchDst;
pchSrc = szSrc;
pchDst = szDst;
#ifndef UNICODE
/* Find merge spec if there is one. */
while (*(WORD *)pchSrc != wMerge) {
if( IsDBCSLeadByte( *pchSrc ) )
*pchDst++ = *pchSrc++;
*pchDst++ = *pchSrc;
/* If we reach end of string before merge spec, just return. */
if(!*pchSrc++)
return FALSE;
}
#else
/* Find merge spec if there is one. */
while (*(WORD *)pchSrc != wMerge) {
*pchDst++ = *pchSrc;
/* If we reach end of string before merge spec, just return. */
if (!*pchSrc++)
return FALSE;
}
#endif
/* If merge spec found, insert sz2 there. (check for null merge string */
if (szMerge) {
while (*szMerge)
*pchDst++ = *szMerge++;
}
/* Jump over merge spec */
pchSrc++,pchSrc++;
/* Now append rest of Src String */
while (*pchDst++ = *pchSrc++);
return TRUE;
}
VOID MergeInit(sz)
CHAR *sz;
{
wMerge = *(WORD *)sz;
}