C语言 NOTE24

MFC Web服务器

浏览器 = Socket程序 + http协议

服务器界面设计:并为控件添加变量

在这里插入图片描述

变量 Control Value
"服务器"IP地址控件 LocalIP _
"端口"文本框 localPort m_nPort(UINT)
"根目录"文本框 rootdir m_strRootDir(CString)
"开启"按钮 m_StartStop _
服务器状态列表控件 m_StatList _
"退出"按钮 m_exit _

Web服务器界面总控

1.为开始按钮添加事件处理:并为类CWebServerDlg添加类成员变量m_bStart,成员函数StartWebServer()和StopWebServer()。
在这里插入图片描述
2.在初始化对话框BOOL CWebServerDlg::OnInitDialog()里添加如下代码:

m_bStart = false;
localPort.SetWindowText("");

3.“开启”事件处理代码:

UpdateData();
	if (!m_bStart)
	{
		//StartWebServer();
		m_start.SetWindowTextA("关闭");
		LocalIP.EnableWindow(false);
		localPort.EnableWindow(false);
		rootdir.EnableWindow(false);
		m_exit.EnableWindow(false);
		m_bStart = true;
	}
	else
	{
		//StopWebServer();
		m_start.SetWindowTextA("开启");
		LocalIP.EnableWindow(true);
		localPort.EnableWindow(true);
		rootdir.EnableWindow(true);
		m_exit.EnableWindow(true);
		m_bStart = false;
	}

4.为服务器添加消息驱动动态显示日志信息:任何事件的触发都会显示在状态列表中。函数实现了时间+消息的格式。
在CWebServerDlg.h添加成员函数:

afx_msg LRESULT AddLog(WPARAM wParam, LPARAM IPatam);

在CWebServerDlg.cpp实现

//显示日志信息:
LRESULT CWebServerDlg::AddLog(WPARAM wParam, LPARAM IPatam)
{
	char szBuf[1024];
	CString *strTemp = (CString *)wParam;
	SYSTEMTIME st;
	GetLocalTime(&st);
	wsprintf(szBuf, "%02d:%02d:%02d.%03d  %s", st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, *strTemp);
	m_list.AddString(szBuf);
	m_list.SetTopIndex(m_list.GetCount() - 1);
	delete strTemp;
	strTemp = NULL;
	return 0L;
}

5.此时已基本实现服务器的界面总控,演示效果:
在这里插入图片描述

发布了52 篇原创文章 · 获赞 2 · 访问量 2002

猜你喜欢

转载自blog.csdn.net/weixin_42191545/article/details/103717328