代码如下,操作在后
#include "resource1.h"
#include<winsock2.h> #pragma comment(lib,"ws2_32.lib") #define DEFAULT_iPort 5000 LRESULT CALLBACK DialProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow) { DialogBox(hInstance,(LPCSTR)IDD_FORMVIEW, NULL,(DLGPROC)DialProc); return 0; } LRESULT CALLBACK DialProc(HWND hDIg, UINT uID, WPARAM wParam, LPARAM lParam) { char ip[16]; char port[5];//端口号 char recvBuf[1000];//缓存区大小 char sendBuf[1000]; SOCKET sListen, sAccept; SOCKADDR_IN ser, cli; int iLen = sizeof(cli); sListen = socket(AF_INET, SOCK_STREAM,0); sAccept= socket(AF_INET, SOCK_STREAM,0); switch (uID) { case WM_COMMAND://对话框消息 switch(wParam) { case IDC_IPSTART: { GetDlgItemText(hDIg, IDC_IP,ip, 16); GetDlgItemText(hDIg, IDC_PORT,port, 16); ser.sin_family = AF_INET; ser.sin_addr.s_addr = inet_addr(ip); ser.sin_port = htons(atoi(port)); bind(sListen, (sockaddr *)&ser, sizeof(ser)); listen(sListen, 5); sAccept = accept(sListen, (sockaddr *)&cli, &iLen); if (INVALID_SOCKET == sAccept) { SetDlgItemText(hDIg, IDC_EDIT1, "服务器创建失败"); } else { SetDlgItemText(hDIg, IDC_RECVBUF, "服务器创建成功"); } } break; case IDC_RECVBUF: if (INVALID_SOCKET == sAccept) { } else { recv(sAccept, recvBuf, sizeof(recvBuf), 1000); SetDlgItemText(hDIg, IDC_RECVBUF, recvBuf); } break; case IDC_SENDBUF: GetDlgItemText(hDIg, IDC_SENDBUF, sendBuf, 1000); send(sAccept, sendBuf, sizeof(recvBuf), 1000); SetDlgItemText(hDIg, IDC_SENDBUF, ""); break; case IDC_STOP://关闭窗口 { closesocket(sAccept); closesocket(sListen); WSACleanup(); EndDialog(hDIg,wParam); } break; } break; default: break; }
return DefWindowProc(hDIg, uID, wParam, lParam);//让系统自动处理一些默认消息
一.
}
资源文件->添加->添加资源->找到如下图所示,新建
二.
把这个字删除,点属性,找到这一个风格把Child换成Overlapped或者Popup都可以(版本不同可能问题不一样)
然后往这个大界面上加东西,打开工具箱
选择你想要的,然后创建界面
根据你创建的ID写代码。
例如
我的示例边框ID 是IDC_EDIT1,
代码这样写:
然后创建失败就会在这个边框出现消息
至于代码中的函数会用就行