⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 new.cpp

📁 使用socket发送消息.wince smartphone 5
💻 CPP
📖 第 1 页 / 共 2 页
字号:
					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 + -