mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.5 KiB
112 lines
2.5 KiB
/*************************************************************************
|
|
**
|
|
** OLE 2 Sample Code
|
|
**
|
|
** outlname.c
|
|
**
|
|
** This file contains OutlineName functions.
|
|
**
|
|
** (c) Copyright Microsoft Corp. 1992 - 1993 All Rights Reserved
|
|
**
|
|
*************************************************************************/
|
|
|
|
|
|
#include "outline.h"
|
|
|
|
OLEDBGDATA
|
|
|
|
|
|
/* OutlineName_SetName
|
|
* -------------------
|
|
*
|
|
* Change the string of a name.
|
|
*/
|
|
void OutlineName_SetName(LPOUTLINENAME lpOutlineName, LPSTR lpszName)
|
|
{
|
|
lstrcpy(lpOutlineName->m_szName, lpszName);
|
|
}
|
|
|
|
|
|
/* OutlineName_SetSel
|
|
* ------------------
|
|
*
|
|
* Change the line range of a name.
|
|
*/
|
|
void OutlineName_SetSel(LPOUTLINENAME lpOutlineName, LPLINERANGE lplrSel, BOOL fRangeModified)
|
|
{
|
|
#if defined( OLE_SERVER )
|
|
// Call OLE server specific function instead
|
|
ServerName_SetSel((LPSERVERNAME)lpOutlineName, lplrSel, fRangeModified);
|
|
#else
|
|
|
|
lpOutlineName->m_nStartLine = lplrSel->m_nStartLine;
|
|
lpOutlineName->m_nEndLine = lplrSel->m_nEndLine;
|
|
#endif
|
|
}
|
|
|
|
|
|
/* OutlineName_GetSel
|
|
* ------------------
|
|
*
|
|
* Retrieve the line range of a name.
|
|
*/
|
|
void OutlineName_GetSel(LPOUTLINENAME lpOutlineName, LPLINERANGE lplrSel)
|
|
{
|
|
lplrSel->m_nStartLine = lpOutlineName->m_nStartLine;
|
|
lplrSel->m_nEndLine = lpOutlineName->m_nEndLine;
|
|
}
|
|
|
|
|
|
/* OutlineName_SaveToStg
|
|
* ---------------------
|
|
*
|
|
* Save a name into a storage
|
|
*/
|
|
BOOL OutlineName_SaveToStg(LPOUTLINENAME lpOutlineName, LPLINERANGE lplrSel, UINT uFormat, LPSTREAM lpNTStm, BOOL FAR* lpfNameSaved)
|
|
{
|
|
HRESULT hrErr = NOERROR;
|
|
ULONG nWritten;
|
|
|
|
*lpfNameSaved = FALSE;
|
|
|
|
/* if no range given or if the name is completely within the range,
|
|
** write it out.
|
|
*/
|
|
if (!lplrSel ||
|
|
((lplrSel->m_nStartLine <= lpOutlineName->m_nStartLine) &&
|
|
(lplrSel->m_nEndLine >= lpOutlineName->m_nEndLine))) {
|
|
|
|
hrErr = lpNTStm->lpVtbl->Write(
|
|
lpNTStm,
|
|
lpOutlineName,
|
|
sizeof(OUTLINENAME),
|
|
&nWritten
|
|
);
|
|
*lpfNameSaved = TRUE;
|
|
}
|
|
return ((hrErr == NOERROR) ? TRUE : FALSE);
|
|
}
|
|
|
|
|
|
/* OutlineName_LoadFromStg
|
|
* -----------------------
|
|
*
|
|
* Load names from an open stream of a storage. if the name already
|
|
* exits in the OutlineNameTable, it is NOT modified.
|
|
*
|
|
* Returns TRUE is all ok, else FALSE.
|
|
*/
|
|
BOOL OutlineName_LoadFromStg(LPOUTLINENAME lpOutlineName, LPSTREAM lpNTStm)
|
|
{
|
|
HRESULT hrErr = NOERROR;
|
|
ULONG nRead;
|
|
|
|
hrErr = lpNTStm->lpVtbl->Read(
|
|
lpNTStm,
|
|
lpOutlineName,
|
|
sizeof(OUTLINENAME),
|
|
&nRead
|
|
);
|
|
|
|
return ((hrErr == NOERROR) ? TRUE : FALSE);
|
|
}
|