📄 docmanage.cpp
字号:
pXmlChildNode = pXmlNode->GetlastChild();
char* pszData = new char[2048];
memset(pszData, 0, sizeof(pszData));
sprintf(pszData, "%s", W2A(pXmlChildNode->Gettext()));
FormatData(pszData, 1);
fputs(pszData, pDocFile);
fputs("\n_________________________________________________________________________________________________________\n", pDocFile);
pXmlNode = pXmlNodeList->nextNode();
}
}
}
catch(_com_error& e)
{
MessageBox(0, W2A(e.Description()),0,0);
}
return true;
}
BOOL CDocManage::PutFunctionAllInfo(FILE *pDocFile, CString strClassName, CString strVisit)
{
USES_CONVERSION;
HRESULT hr = NULL;
CString strLine;
char pszFilePath[160];
memset(pszFilePath, 0, sizeof(pszFilePath));
sprintf(pszFilePath,"%s\\%s%s", theApp.m_strLocPath, strClassName, FILEEXT);
IXMLDOMDocumentPtr pXmlDoc;
IXMLDOMNodePtr pXmlNode;
IXMLDOMNodePtr pXmlChildNode;
IXMLDOMNodeListPtr pXmlNodeList;
IXMLDOMNodeListPtr pXmlChildNodeList;
IXMLDOMNamedNodeMapPtr pXmlNodeMap;
try
{
hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));
if(FAILED(hr))
{
MessageBox(0,"error!",0,0);
}
else
{
pXmlDoc->load(_bstr_t(pszFilePath));
pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/Functions/function[@visit='" + strVisit + "']" ));
pXmlNode = pXmlNodeList->nextNode();
while(pXmlNode != NULL)
{
strLine.Format("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n%s: %s\n",MEMBERTYPE, strVisit);
fputs(strLine, pDocFile);
pXmlNodeMap = pXmlNode->Getattributes();
pXmlChildNode = pXmlNodeMap->getNamedItem(_bstr_t("name"));
strLine.Format("%s: %s\n", FUNCTIONNAME, W2A(pXmlChildNode->Gettext()));
fputs(strLine, pDocFile);
pXmlChildNodeList = pXmlNode->GetchildNodes();
pXmlChildNode = pXmlChildNodeList->nextNode();
strLine.Format("%s: %s\n", FUNCTIONDECLARE, W2A(pXmlChildNode->Gettext()));
fputs(strLine, pDocFile);
pXmlChildNode = pXmlChildNodeList->nextNode();
strLine.Format("%s:\n", RETURNDESC);
fputs(strLine, pDocFile);
char* pszData = new char[2048];
memset(pszData, 0, sizeof(pszData));
sprintf(pszData, "%s", W2A(pXmlChildNode->Gettext()));
FormatData(pszData, 1);
fputs(pszData, pDocFile);
pXmlChildNode = pXmlChildNodeList->nextNode();
strLine.Format("\n%s:\n", PARAMDESC);
fputs(strLine, pDocFile);
memset(pszData, 0, sizeof(pszData));
sprintf(pszData, "%s", W2A(pXmlChildNode->Gettext()));
FormatData(pszData, 1);
fputs(pszData, pDocFile);
pXmlChildNode = pXmlChildNodeList->nextNode();
strLine.Format("\n%s:\n", EXAMPLE);
fputs(strLine, pDocFile);
memset(pszData, 0, sizeof(pszData));
sprintf(pszData, "%s", W2A(pXmlChildNode->Gettext()));
FormatData(pszData, 1);
fputs(pszData, pDocFile);
pXmlChildNode = pXmlChildNodeList->nextNode();
strLine.Format("\n%s:\n", REMARKS);
fputs(strLine, pDocFile);
memset(pszData, 0, sizeof(pszData));
sprintf(pszData, "%s", W2A(pXmlChildNode->Gettext()));
FormatData(pszData, 1);
fputs(pszData, pDocFile);
pXmlNode = pXmlNodeList->nextNode();
}
}
}
catch(_com_error& e)
{
MessageBox(0, W2A(e.Description()),0,0);
}
return true;
}
BOOL CDocManage::PutPropertyAllInfo(FILE *pDocFile, CString strClassName, CString strVisit)
{
USES_CONVERSION;
HRESULT hr = NULL;
CString strLine;
char pszFilePath[160];
memset(pszFilePath, 0, sizeof(pszFilePath));
sprintf(pszFilePath,"%s\\%s%s", theApp.m_strLocPath, strClassName, FILEEXT);
IXMLDOMDocumentPtr pXmlDoc;
IXMLDOMNodePtr pXmlNode;
IXMLDOMNodePtr pXmlChildNode;
IXMLDOMNodeListPtr pXmlNodeList;
IXMLDOMNodeListPtr pXmlChildNodeList;
IXMLDOMNamedNodeMapPtr pXmlNodeMap;
try
{
hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));
if(FAILED(hr))
{
MessageBox(0,"error!",0,0);
}
else
{
pXmlDoc->load(_bstr_t(pszFilePath));
pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/Propertys/property[@visit='" + strVisit + "']" ));
pXmlNode = pXmlNodeList->nextNode();
while(pXmlNode != NULL)
{
strLine.Format("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n%s: %s\n",MEMBERTYPE, strVisit);
fputs(strLine, pDocFile);
pXmlNodeMap = pXmlNode->Getattributes();
pXmlChildNode = pXmlNodeMap->getNamedItem(_bstr_t("name"));
strLine.Format("%s: %s\n", PROPERTYNAME, W2A(pXmlChildNode->Gettext()));
fputs(strLine, pDocFile);
pXmlChildNodeList = pXmlNode->GetchildNodes();
pXmlChildNode = pXmlChildNodeList->nextNode();
strLine.Format("%s: %s\n", PROPERTYDECLARE, W2A(pXmlChildNode->Gettext()));
fputs(strLine, pDocFile);
pXmlChildNode = pXmlChildNodeList->nextNode();
strLine.Format("%s:\n", PROPERTYTYPE);
fputs(strLine, pDocFile);
char* pszData = new char[2048];
memset(pszData, 0, sizeof(pszData));
sprintf(pszData, "%s", W2A(pXmlChildNode->Gettext()));
FormatData(pszData, 1);
fputs(pszData, pDocFile);
pXmlChildNode = pXmlChildNodeList->nextNode();
strLine.Format("\n%s:\n", EXAMPLE);
fputs(strLine, pDocFile);
memset(pszData, 0, sizeof(pszData));
sprintf(pszData, "%s", W2A(pXmlChildNode->Gettext()));
FormatData(pszData, 1);
fputs(pszData, pDocFile);
pXmlChildNode = pXmlChildNodeList->nextNode();
strLine.Format("\n%s:\n", REMARKS);
fputs(strLine, pDocFile);
memset(pszData, 0, sizeof(pszData));
sprintf(pszData, "%s", W2A(pXmlChildNode->Gettext()));
FormatData(pszData, 1);
fputs(pszData, pDocFile);
pXmlNode = pXmlNodeList->nextNode();
}
}
}
catch(_com_error& e)
{
MessageBox(0, W2A(e.Description()),0,0);
}
return true;
}
BOOL CDocManage::PutPropertyInfo(FILE *pDocFile, CString strClassName, CString strVisit)
{
USES_CONVERSION;
HRESULT hr = NULL;
CString strLine;
char pszFilePath[160];
memset(pszFilePath, 0, sizeof(pszFilePath));
sprintf(pszFilePath,"%s\\%s%s", theApp.m_strLocPath, strClassName, FILEEXT);
strLine.Format("%s: \n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", strVisit);
fputs(strLine, pDocFile);
IXMLDOMDocumentPtr pXmlDoc;
IXMLDOMNodePtr pXmlNode;
IXMLDOMNodePtr pXmlChildNode;
IXMLDOMNodeListPtr pXmlNodeList;
IXMLDOMNamedNodeMapPtr pXmlNodeMap;
try
{
hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));
if(FAILED(hr))
{
MessageBox(0,"error!",0,0);
}
else
{
pXmlDoc->load(_bstr_t(pszFilePath));
pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/Propertys/property[@visit='" + strVisit + "']" ));
pXmlNode = pXmlNodeList->nextNode();
while(pXmlNode != NULL)
{
pXmlNodeMap = pXmlNode->Getattributes();
pXmlChildNode = pXmlNodeMap->getNamedItem(_bstr_t("name"));
strLine.Format("%s\n", W2A(pXmlChildNode->Gettext()));
fputs(strLine, pDocFile);
pXmlChildNode = pXmlNode->GetlastChild();
strLine.Format("%s", W2A(pXmlChildNode->Gettext()));
char* pszData = new char[2048];
memset(pszData, 0, sizeof(pszData));
sprintf(pszData, "%s", strLine);
FormatData(pszData, 1);
fputs(pszData, pDocFile);
fputs("\n_________________________________________________________________________________________________________\n", pDocFile);
pXmlNode = pXmlNodeList->nextNode();
}
}
}
catch(_com_error& e)
{
MessageBox(0, W2A(e.Description()),0,0);
}
return true;
}
void CDocManage::FormatData(char *pszData, int num)
{
char pszTmpData[1600];
char *pData = NULL;
char*pTmpData = NULL;
memset(pszTmpData, 0, sizeof(pszTmpData));
strcpy(pszTmpData, pszData);
pData = pszData;
pTmpData = pszTmpData;
for(int i=0;i<num;i++)
{
*pData = '\t';
pData++;
}
while(*pTmpData != '\0')
{
if(*pTmpData == '\r')
{
pTmpData++;
continue;
}
if(*pTmpData != '\n')
{
*pData = *pTmpData;
pData++;
pTmpData++;
}
else
{
*pData = *pTmpData;
pData++;
for(int j=0;j<num;j++)
{
*pData = '\t';
pData++;
}
pTmpData++;
}
}
*pData= '\0';
}
CString CDocManage::CreateTemplate()
{
return "<?xml version=\"1.0\"?><Classes><class><name></name><declare></declare><classdesc></classdesc><Functions></Functions><Propertys></Propertys></class></Classes>";
}
BOOL CDocManage::DeleteClass(CString strClassName)
{
char pszFilePath[160];
memset(pszFilePath, 0, sizeof(pszFilePath));
sprintf(pszFilePath,"%s\\%s%s", theApp.m_strLocPath, strClassName, FILEEXT);
return DeleteFile(pszFilePath);
}
BOOL CDocManage::DeleteFunction(CString strClassName, int ID)
{
USES_CONVERSION;
HRESULT hr = NULL;
BOOL breturn = true;
char pszFilePath[160];
memset(pszFilePath, 0, sizeof(pszFilePath));
sprintf(pszFilePath,"%s\\%s%s", theApp.m_strLocPath, strClassName, FILEEXT);
CString strID;
strID.Format("%d", ID);
IXMLDOMDocumentPtr pXmlDoc;
IXMLDOMNodePtr pXmlNode;
IXMLDOMNodePtr pXmlParentNode;
IXMLDOMNodeListPtr pXmlNodeList;
try
{
hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));
if(FAILED(hr))
{
MessageBox(0,"error!",0,0);
breturn = false;
}
else
{
pXmlDoc->load(_bstr_t(pszFilePath));
pXmlNode = pXmlDoc->selectSingleNode(_bstr_t("Classes/class/Functions/function[@ID='" + strID + "']"));
if(pXmlNode != NULL)
{
if(MessageBox(NULL, "确定要删除该类成员?", "警告", MB_YESNO) !=IDYES)
{
breturn = false;
}
else
{
pXmlParentNode = pXmlDoc->selectSingleNode(_bstr_t("Classes/class/Functions"));
pXmlParentNode->removeChild(pXmlNode);
}
}
else
{
MessageBox(NULL, strClassName + "该类的文档不存在", 0, 0);
}
pXmlDoc->save(_bstr_t(pszFilePath));
}
}
catch(_com_error& e)
{
MessageBox(0, W2A(e.Description()),0,0);
}
return breturn;
}
BOOL CDocManage::DeleteProperty(CString strClassName, int ID)
{
USES_CONVERSION;
HRESULT hr = NULL;
BOOL breturn = true;
char pszFilePath[160];
memset(pszFilePath, 0, sizeof(pszFilePath));
sprintf(pszFilePath,"%s\\%s%s", theApp.m_strLocPath, strClassName, FILEEXT);
CString strID;
strID.Format("%d", ID);
IXMLDOMDocumentPtr pXmlDoc;
IXMLDOMNodePtr pXmlNode;
IXMLDOMNodePtr pXmlParentNode;
IXMLDOMNodeListPtr pXmlNodeList;
try
{
hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));
if(FAILED(hr))
{
MessageBox(0,"error!",0,0);
breturn = false;
}
else
{
pXmlDoc->load(_bstr_t(pszFilePath));
pXmlNode = pXmlDoc->selectSingleNode(_bstr_t("Classes/class/Propertys/property[@ID='" + strID + "']"));
if(pXmlNode != NULL)
{
if(MessageBox(NULL, "确定要删除该类成员?", "警告", MB_YESNO) !=IDYES)
{
breturn = false;
}
else
{
pXmlParentNode = pXmlDoc->selectSingleNode(_bstr_t("Classes/class/Propertys"));
pXmlParentNode->removeChild(pXmlNode);
}
}
else
{
MessageBox(NULL, strClassName + "该类的文档不存在", 0, 0);
}
pXmlDoc->save(_bstr_t(pszFilePath));
}
}
catch(_com_error& e)
{
MessageBox(0, W2A(e.Description()),0,0);
}
return breturn;
}
long CDocManage::GetMemberNum(CString strClassName, CString strQuery)
{
USES_CONVERSION;
HRESULT hr = NULL;
long num = 0;
char pszFilePath[160];
memset(pszFilePath, 0, sizeof(pszFilePath));
sprintf(pszFilePath,"%s\\%s%s", theApp.m_strLocPath, strClassName, FILEEXT);
IXMLDOMDocumentPtr pXmlDoc;
IXMLDOMNodePtr pXmlNode;
IXMLDOMNodeListPtr pXmlNodeList;
try
{
hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));
if(FAILED(hr))
{
MessageBox(0,"error!",0,0);
}
else
{
pXmlDoc->load(_bstr_t(pszFilePath));
pXmlNodeList = pXmlDoc->selectNodes(_bstr_t(strQuery));
num = pXmlNodeList->Getlength();
}
}
catch(_com_error& e)
{
MessageBox(0, W2A(e.Description()),0,0);
}
return num;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -