📄 new.cpp
字号:
GetDlgItemText(hDlg, IDC_EDIT32, (LPWSTR)addvalue, 10);
p=0;
for(int i = 0; i <= sizeof(id) && id[i]!=NULL; i++)
{
total[p] = (char)id[i];
p++;
}
total[p] = ' ';
p++;
for(int i = 0; i <= sizeof(idvalue) && idvalue[i]!=NULL; i++)
{
total[p] = (char)idvalue[i];
p++;
}
total[p] = ' ';
p++;
for(int i = 0; i <= sizeof(name) && name[i]!=NULL; i++)
{
total[p] = (char)name[i];
p++;
}
total[p] = ' ';
p++;
for(int i = 0; i <= sizeof(namevalue) && namevalue[i]!=NULL; i++)
{
total[p] = (char)namevalue[i];
p++;
}
total[p] = ' ';
p++;
for(int i = 0; i <= sizeof(add) && add[i]!=NULL; i++)
{
total[p] = (char)add[i];
p++;
}
total[p] = ' ';
p++;
for(int i = 0; i <= sizeof(addvalue); i++)
{
total[p] = (char)addvalue[i];
p++;
}
MessageBox(hDlg, (LPWSTR)total, L"Send Mes", MB_OK);
SendMessageToServer( hDlg, total, size );
break;
case ID_CAN:
DestroyWindow(hDlg);
break;
default:
// nothing was processed
bProcessedMsg = false;
break;
}
break;
case WM_DESTROY:
// Destroy the parent window to exit the app
CommandBar_Destroy(g_hDlgMenuBar);
//PostQuitMessage(0);
break;
case WM_CLOSE:
DestroyWindow(hDlg);
break;
case WM_HOTKEY:
// The following is necessary to get the appropriate Back key behavior
// (handle on key-up as per recommendations)
if(VK_TBACK == HIWORD(lParam))
{
DestroyWindow(hDlg);
}
else
bProcessedMsg = false;
break;
default:
// nothing was processed
bProcessedMsg = false;
break;
}
return bProcessedMsg;
}
//
// FUNCTION: OnMenuPopup
//
// PURPOSE: Process necessary changes to menu before it pops up.
//
BOOL OnMenuPopup( const HWND hWnd, const WPARAM wParam )
{
if ( count == 0 || count == num )
{
EnableMenuItem((HMENU)wParam, ID_NEXT, MF_BYCOMMAND | MF_GRAYED);
}
else
{
EnableMenuItem((HMENU)wParam, ID_NEXT, MF_BYCOMMAND | MF_ENABLED);
}
return TRUE;
}
//
// !WIN32_PLATFORM_WFSP
//
// 函数: InitXML()
//
// 目的: 初始化XML文件处理器。
//
BOOL InitXML()
{
HRESULT hr = ::CoInitializeEx( NULL, COINIT_MULTITHREADED );
if (hr != S_OK)
{
return false;
}
if(m_iXMLDoc != NULL)
{
m_iXMLDoc.Detach();
}
hr = CoCreateInstance (CLSID_DOMDocument,
NULL,CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
IID_IXMLDOMDocument, (LPVOID *)&m_iXMLDoc);
if (hr != S_OK)
{
return true;
}
CComQIPtr<IObjectSafety,&IID_IObjectSafety> iSafety(m_iXMLDoc);
if (iSafety)
{
DWORD dwSupported, dwEnabled;
iSafety->GetInterfaceSafetyOptions(IID_IXMLDOMDocument,
&dwSupported, &dwEnabled);
iSafety->SetInterfaceSafetyOptions(IID_IXMLDOMDocument,
dwSupported, 0);
}
return true;
}
//
// 函数: LoadXML(LPCSTR fileName)
//
// 目的: 载入XML文件。
//
// fileName: 载入的XML文件名
//
BOOL LoadXML(LPCSTR fileName)
{
HRESULT hr;
VARIANT_BOOL bSuccess = false;
m_iXMLDoc->put_async( VARIANT_FALSE );
hr = m_iXMLDoc->load( CComVariant(fileName), &bSuccess );
if (hr != S_OK)
{
return false;
}
return true;
}
//
// 函数: SaveXML(LPCSTR fileName)
//
// 目的: 保存XML文件。
//
// fileName: 保存的XML文件名
//
BOOL SaveXML(LPCSTR fileName)
{
HRESULT hr;
VARIANT_BOOL bSuccess = false;
m_iXMLDoc->put_async( VARIANT_FALSE );
hr = m_iXMLDoc->save( CComVariant(fileName) );
if (hr != S_OK)
{
return false;
}
return true;
}
//
// 函数: ShowXML(HWND hWnd)
//
// 目的: 显示XML文件。
//
// hWnd: 主窗口句柄
//
BOOL ShowXML( HWND hWnd )
{
HRESULT hr;
CComPtr<IXMLDOMElement> iRooterElm;
hr = m_iXMLDoc->get_documentElement( &iRooterElm ); //获取根结点"class"
BSTR name;
iRooterElm->get_baseName(&name);
MessageBox(hWnd, (LPWSTR)name, L"Message", MB_OK);
if( FAILED(hr) || iRooterElm == NULL ) //文件为空
{
return false;
}
IXMLDOMNode* iNode = NULL;
IXMLDOMNodeList* List = NULL;
iRooterElm->get_childNodes( &List ); //子结点链"student"
List->get_length(&num); //子结点数"num"
if( count < num )
{
List->get_item(count, &iNode); //第一个子结点"student"
DisplayChildren((IXMLDOMElement*)iNode, hWnd, count);
count++;
return true;
}
}
//
// 函数: DisplayChildren(IXMLDOMElement* pParent, HWND hWnd)
//
// 目的: 以递归方式遍历XML树,前序遍历
//
// pParent: 本次遍历的根结点
// hWnd: 窗口句柄
//
void DisplayChildren(IXMLDOMElement* pParent, HWND hWnd, int n)
{
static IXMLDOMNode* pNextSib = NULL;
static IXMLDOMNode* pChild = NULL;
if(pParent == NULL) //到达子结点
{
return;
}
DisplayChild(pParent, hWnd, n); //显示子结点
do{
pNextSib = pChild;
pParent->get_firstChild(&pChild);
if(pChild == NULL)
{
pNextSib->get_nextSibling(&pChild);
}
DisplayChildren((IXMLDOMElement*)pChild, hWnd, n);
}while(pChild != NULL);
}
//
// 函数: DisplayChild(IXMLDOMElement* pChild, HWND hWnd)
//
// 目的: 以递归方式遍历XML树
//
// pChild: 本次遍历的根结点
// hWnd: 窗口句柄
//
void DisplayChild( IXMLDOMElement* pChild, HWND hWnd, int n )
{
if ( pChild==NULL )
return;
BSTR nodeName;
BSTR nodeValue;
HRESULT hr;
IXMLDOMNamedNodeMap* namedNodeMap = NULL;
hr = pChild->get_attributes(&namedNodeMap);
hr = pChild->get_nodeName(&nodeName);
if(hr != S_OK)
{
return;
}
if(wcscmp(nodeName, TEXT("user")) == 0) //找到名字为student的结点
{
if (SUCCEEDED(hr) && namedNodeMap != NULL)
{
long listLength;
hr = namedNodeMap->get_length(&listLength);
for(int i = 0; i < listLength; i++)
{
IXMLDOMNode* listItem = NULL;
hr = namedNodeMap->get_item(i, &listItem);//student第一个属性
listItem->get_nodeName( &nodeName );
CComVariant nodeVal;
nodeVal.InternalClear();
listItem->get_nodeValue( &nodeVal );
nodeValue = nodeVal.bstrVal;
SetDlgItemText( hWnd, IDC_EDIT11, (LPWSTR)nodeName);
SetDlgItemText( hWnd, IDC_EDIT12, (LPWSTR)nodeValue);
}
}
}
else{ return; }
IXMLDOMNodeList* pChildchildList = NULL;
IXMLDOMNode* iChildNode = NULL;
pChild->get_childNodes( &pChildchildList );
long Amount = 0;
pChildchildList->get_length(&Amount);
for( int i=0; i<Amount; i++ )
{
BSTR nodeChildName;
BSTR nodeChildValue;
pChildchildList->get_item( i, &iChildNode );
iChildNode->get_nodeName( &nodeChildName );
iChildNode->get_text( &nodeChildValue );
switch(i)
{
case 0:
SetDlgItemText( hWnd, IDC_EDIT21, (LPWSTR)nodeChildName);
SetDlgItemText( hWnd, IDC_EDIT22, (LPWSTR)nodeChildValue);
break;
case 1:
SetDlgItemText( hWnd, IDC_EDIT31, (LPWSTR)nodeChildName);
SetDlgItemText( hWnd, IDC_EDIT32, (LPWSTR)nodeChildValue);
break;
default:
break;
}
}
}
void SendMessageToServer( HWND hDlg, const char* mes, const int size )
{
// set up a TCP socket
SOCKET sSock = socket(AF_INET, SOCK_STREAM, 0);
if(INVALID_SOCKET != sSock)
{
struct sockaddr_in sin;
// set up a sockaddr for the destination address
memcpy(&sin.sin_addr, &g_in_addr, sizeof(sin.sin_addr));
sin.sin_family = AF_INET;
sin.sin_port = htons(IPPORT_TIMESERVER);
char smes[10];
// try to connect
if(0 == connect(sSock, (struct sockaddr *) &sin, sizeof(struct sockaddr_in)))
{
send (sSock, mes, strlen(mes)+1, 0);
int iResult;
iResult = recv(sSock, smes, 10, 0);
TCHAR smesW[10];
for(int i = 0; i <= sizeof(smes); i++)
{
smesW[i] = smes[i];
}
MessageBox(hDlg, smesW, L"Send successful", MB_OK);;
}
closesocket(sSock);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -