BBS Server扩展功能应该方便,定义Servlet类,就是以前的state_xxx_xxx回调函数
的演化,状态机。
Servlet Demo:
一个弹出对话框例子:
Screen:
=============================
※ Message ※
登录错误,还有 2 机会!
确定
Code:
=============================
#ifndef _MESSAGE_BOX_SERVLET_H_
#define _MESSAGE_BOX_SERVLET_H_
#include "servlets.h"
class MessageBoxServlet : public Servlet
{
protected:
Frame *mainFrame;
Button *btnOK;
Label *lMessage;
String m_message;
public:
MessageBoxServlet(const String&);
void init();
void processEvent(Event);
};
#endif
// $Id: message_box.cpp,v 1.2 2004/04/09 12:55:46 jth Exp $
#include "servlets.h"
MessageBoxServlet::MessageBoxServlet(const String& message)
{
m_message = message;
}
void MessageBoxServlet::init()
{
mainFrame = new Frame();
mainFrame->setTitle("Message");
mainFrame->setWidth(32);
mainFrame->setHeight(6);
mainFrame->setStartRow((m_client->height - mainFrame->height) / 2);
mainFrame->setStartCol((m_client->width -mainFrame-> width) / 2);
lMessage = new Label(m_message);
lMessage->setStyle(Color(black, white, normal));
btnOK = new Button(" 确定 ");
mainFrame->packWidget("1", btnOK, "buttom", "center");
mainFrame->packWidget("2", lMessage, "top", "center");
mainFrame->focusWidget("1");
mainFrame->signalConnect("1", R_DONE);
addWidget("w_main_frame", mainFrame);
focusWidget("w_main_frame");
}
void MessageBoxServlet::processEvent(Event event)
{
int response = processWidgetEvent(event);
if (response == R_DONE) {
m_client->backward();
}
}
=================
调用:
String msg = String::format("登录错误,还有 %d 机会!", MAX_LOGIN - mLoginTimes);
m_client->forward(new MessageBoxServlet(msg));
--------------------
一个Servlet可以定义static成员变量,供多客户端模式同时服务,比如聊天室servlet
..
--
FROM 202.120.174.78