继续学习MFC的窗体,边百度,边学习。
复制了网络代码。报错,调试下。
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4996 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings IPX E:\VSC\IPX\IPXDlg.cpp 189
百度了,看看大佬们的答案操作了一编。
项目-属性,C++下的预处理
添加_WINSOCK_DEPRECATED_NO_WARNINGS
添加后就木问题了。
确定按钮添加事件。
GetDlgItem(IDC_STATIC)->SetWindowText(L"你的内网IP地址"+ cStr);
改变静态文本框IDC_STATIC)的内容。
IPXDlg.cpp代码如下
void CIPXDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//LPCSTR str = GetLocalIP2.c_str();
CString cStr;
cStr = GetLocalIP2();
GetDlgItem(IDC_STATIC)->SetWindowText(L"你的内网IP地址"+ cStr);
MessageBox(cStr, L"你的内网IP地址", MB_OK);
CDialogEx::OnOK();
}
CString CIPXDlg::GetLocalIP2()
{
WSADATA wsaData;
int err = WSAStartup(MAKEWORD(2, 0), &wsaData);
if (err != 0)
{
return _T("");
}
char szHostName[MAX_PATH] = { 0 };
int nRetCode;
nRetCode = gethostname(szHostName, sizeof(szHostName));
char* lpLocalIP;
PHOSTENT hostinfo;
if (nRetCode != 0)
{
WSACleanup();
return _T("");
}
hostinfo = gethostbyname(szHostName);
lpLocalIP = inet_ntoa(*(struct in_addr*)*hostinfo->h_addr_list);
CString aa(lpLocalIP);
WSACleanup();
return aa;
}
这个函数GetLocalIP2() 需要添加对话框类的public部分,才可以调用自定义函数
对话框的IPXDlg.h头文件里找到 CLASS类。
刚学习了下 如何改窗体的标题。
SetWindowText(L"学习MFC记录2023.6.4");
运行下