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

📄 main.cpp

📁 .net 方面的开发说明资料。
💻 CPP
字号:
// ======================================================
// ePlug Plug Manager
//
// ======================================================

#include "fx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>

#include "Eplug.h"
#include "mail.h"

// ======================================================

class ButtonWindow : public FXMainWindow {
	FXDECLARE(ButtonWindow)

protected:
	FXApp *m_app;
	TRANSPORT_HANDLE m_plug;
	FXTimer *m_timer_handle; 
	FXVerticalFrame *m_v_frame;
	FXHorizontalFrame *m_h_frame;
	FXSplitter *m_sep;
	FXText *m_text_area;
	FXButton *m_button1;
	FXButton *m_button2;
	FXButton *m_button3;
	FXButton *m_button4;
	FXButton *m_button5;
	FXList *m_list;

protected:
	ButtonWindow() {}

public:
	enum {
		ID_TIMERTICK = FXMainWindow::ID_LAST,
		ID_BUTTON_1,
		ID_BUTTON_2,
		ID_BUTTON_3,
		ID_BUTTON_4,
		ID_BUTTON_5,
	};

public:
	ButtonWindow(FXApp* a);
	~ButtonWindow();
	void create();
	long onTimerTick(FXObject*,FXSelector,void*);
	long onButton1Press(FXObject *, FXSelector, void*);
	long onButton2Press(FXObject *, FXSelector, void*);
	long onButton3Press(FXObject *, FXSelector, void*);
	long onButton4Press(FXObject *, FXSelector, void*);
	long onButton5Press(FXObject *, FXSelector, void*);
};

// ======================================================

FXDEFMAP(ButtonWindow) ButtonWindowMap[] = {
	FXMAPFUNC(SEL_TIMEOUT, ButtonWindow::ID_TIMERTICK, ButtonWindow::onTimerTick), 
	FXMAPFUNC(SEL_COMMAND, ButtonWindow::ID_BUTTON_1, ButtonWindow::onButton1Press),
	FXMAPFUNC(SEL_COMMAND, ButtonWindow::ID_BUTTON_2, ButtonWindow::onButton2Press),
	FXMAPFUNC(SEL_COMMAND, ButtonWindow::ID_BUTTON_3, ButtonWindow::onButton3Press),
	FXMAPFUNC(SEL_COMMAND, ButtonWindow::ID_BUTTON_4, ButtonWindow::onButton4Press),
	FXMAPFUNC(SEL_COMMAND, ButtonWindow::ID_BUTTON_5, ButtonWindow::onButton5Press),
};

// ======================================================

FXIMPLEMENT(ButtonWindow, FXMainWindow, ButtonWindowMap, ARRAYNUMBER(ButtonWindowMap))

// ======================================================

ButtonWindow::ButtonWindow(FXApp *app) :
FXMainWindow(app, "eTransport Internet Relay Chat", NULL, NULL, DECOR_ALL, 0, 0, 640, 480) {
	// init eTransport

	EpInit(0);

	// init member variables

	m_app = app;
	m_plug = NULL;

	// a frame

	m_v_frame = new FXVerticalFrame(this, LAYOUT_FILL_X | LAYOUT_FILL_Y);
	//m_h_frame = new FXHorizontalFrame(m_v_frame, LAYOUT_FILL_X | LAYOUT_FILL_Y);

	// a text area holds the text for irc

	m_sep = new FXSplitter(m_v_frame,  LAYOUT_FILL_X | LAYOUT_FILL_Y);
	m_text_area = new FXText(m_sep, NULL, 0, TEXT_SHOWACTIVE | LAYOUT_FILL_X | LAYOUT_FILL_Y);
	m_list = new FXList(m_sep, 0, NULL, 0, LIST_NORMAL | LAYOUT_FIX_WIDTH | LAYOUT_FILL_Y);
	m_list->setWidth(100);

	// buttons

	m_button1 = new FXButton(m_v_frame, "Pass", NULL, this, ID_BUTTON_1);
	m_button2 = new FXButton(m_v_frame, "Nick", NULL, this, ID_BUTTON_2);
	m_button3 = new FXButton(m_v_frame, "User", NULL, this, ID_BUTTON_3);
	m_button4 = new FXButton(m_v_frame, "Join", NULL, this, ID_BUTTON_4);
	m_button5 = new FXButton(m_v_frame, "Talk Bitch", NULL, this, ID_BUTTON_5);
	
	// init timer for peeking inside the eTransport message queue

	m_timer_handle = m_app->addTimeout(20, this, ID_TIMERTICK);
}

ButtonWindow::~ButtonWindow() {
	m_app->removeTimeout(m_timer_handle);

	EpDisconnect(m_plug);
	EpDestroyTransport(m_plug);
}

void
ButtonWindow::create() {
	FXMainWindow::create();
	m_v_frame->create();
	m_text_area->create();
	m_list->create();

	m_plug = EpCreateTransport(TRANSPORT_TCPIP, NULL);
	EpAttachProtocol(m_plug, CLSID_IRC_PROTOCOL);
	EpConnect(m_plug, "diemen.nl.eu.undernet.org", 6667, 0);

	show(PLACEMENT_SCREEN);
}

long
ButtonWindow::onTimerTick(FXObject *, FXSelector, void*) {
	EpEventEx *ex = EpReceiveEvent(m_plug);

	while (ex) {
		if (IsEqualGUID(ex->event->protocol, CLSID_PROTOCOL_SYSTEM)) {
			switch(ex->event->msg) {
				case SYSTEM_CONNECTED :
					FXString s = FXString("connected to host...\n");
					m_text_area->appendText(s.text(), s.length());
					break;
			};
		}

		if (IsEqualGUID(ex->event->protocol, CLSID_IRC_PROTOCOL)) {
			switch(ex->event->msg) {
				case IRC_PING :
				{
					m_text_area->appendText("Ping? Pong!\n", 12);

					EpEvent event;
					event.protocol = CLSID_IRC_PROTOCOL;
					event.msg = IRC_PONG;
					event.data = (unsigned char *)ex->event->data;
					event.size = ex->event->size;
					event.timeout = 0;
					event.reference_id = 0;

					EpSendEvent(m_plug, &event);
					break;
				}

				case IRC_NOTICEAUTH :
				{
					FXString s = FXString((const char *)ex->event->data) + FXString("\n");
					m_text_area->appendText(s.text(), s.length());
					break;
				}

				case IRC_MESSAGE :
				{
					IRCReply *m = (IRCReply *)ex->event->data;
					FXString s = FXString(m->trailing) + FXString(" ") + FXString(m->middle) + FXString("\n");
					m_text_area->appendText(s.text(), s.length());
					break;
				}

				case IRC_STATUS_MESSAGE :
				{
					IRCStatusMessage *m = (IRCStatusMessage *)ex->event->data;
					FXString s = FXString(m->message) + FXString("\n");
					m_text_area->appendText(s.text(), s.length());
					break;
				}

				case IRC_CHANNEL_TOPIC :
				{
					IRCChannelTopic *m = (IRCChannelTopic *)ex->event->data;
					setTitle(FXString("[") + FXString(m->channel) + FXString("] - ") + FXString(m->topic));
					FXString tmp = FXString("* Topic is '") + FXString(m->topic) + FXString("'\n");
					m_text_area->appendText(tmp.text(), tmp.length());
					break;
				}

				case IRC_PRIVMSG :
				{
					IRCReplyPrivateMsg *m = (IRCReplyPrivateMsg *)ex->event->data;
					FXString tmp = FXString("<") + FXString(m->nick) + FXString("> ") + FXString(m->message) + FXString("\n");
					m_text_area->appendText(tmp.text(), tmp.length());
					break;
				}

				case IRC_NICK_ENTRY :
				{
					IRCNick *n = (IRCNick *)ex->event->data;
					m_list->appendItem(FXString(n->nick));
					m_list->sortItems();
					break;
				}
			};
		}

		EpDestroyEvent(ex);
		ex = EpReceiveEvent(m_plug);
	}

	m_timer_handle= m_app->addTimeout(20,this,ID_TIMERTICK);
	return 0;
}

long
ButtonWindow::onButton1Press(FXObject *, FXSelector, void*) {
	EpEvent event;
	event.protocol = CLSID_IRC_PROTOCOL;
	event.msg = IRC_PASS;
	event.data = (unsigned char *)"40968192";
	event.size = 9;
	event.timeout = 0;
	event.reference_id = 0;

	EpSendEvent(m_plug, &event);
	return true;
}

long
ButtonWindow::onButton2Press(FXObject *, FXSelector, void*) {
	EpEvent event;
	event.protocol = CLSID_IRC_PROTOCOL;
	event.msg = IRC_NICK;
	event.data = (unsigned char *)"NoEscom-";
	event.size = 9;
	event.timeout = 0;
	event.reference_id = 0;

	EpSendEvent(m_plug, &event);
	return true;
}

long
ButtonWindow::onButton3Press(FXObject *, FXSelector, void*) {
	IRCUser user;
	user.username = "guest";
	user.hostname = "tolmoon";
	user.servername = "tolsun";
	user.realname = "Floris van den Berg";

	EpEvent event;
	event.protocol = CLSID_IRC_PROTOCOL;
	event.msg = IRC_USER;
	event.data = (unsigned char *)&user;
	event.size = sizeof(IRCUser);
	event.timeout = 0;
	event.reference_id = 0;

	EpSendEvent(m_plug, &event);
	return true;
}

long
ButtonWindow::onButton4Press(FXObject *, FXSelector, void*) {
	EpEvent event;
	event.protocol = CLSID_IRC_PROTOCOL;
	event.msg = IRC_JOIN;
	event.data = (unsigned char *)"#mp3passion";
	//event.data = (unsigned char *)"#c++";
	event.size = 12;
	event.timeout = 0;
	event.reference_id = 0;

	EpSendEvent(m_plug, &event);
	return true;
}

long
ButtonWindow::onButton5Press(FXObject *, FXSelector, void*) {
	IRCPrivateMsg msg;
	msg.target = "#c++";
	msg.message = "Khan is a flaming goat raper";

	EpEvent event;
	event.protocol = CLSID_IRC_PROTOCOL;
	event.msg = IRC_PRIVMSG;
	event.data = (unsigned char *)&msg;
	event.size = sizeof(IRCPrivateMsg);
	event.timeout = 0;
	event.reference_id = 0;

	EpSendEvent(m_plug, &event);
	return true;
}

/*******************************************************************************/

std::string
Scramble(std::string strWordA) {
	std::string strWordB;
	int intLen = strWordA.length();

	if (intLen > 0) {
		do {
			int sngPosn = rand() % intLen;
		
			strWordB += strWordA[sngPosn];
			strWordA = strWordA.substr(0, sngPosn) + strWordA.substr(sngPosn + 1, strWordA.length() - sngPosn);

			intLen = strWordA.length();
		} while (intLen > 0);
	}

	return strWordB;
}

// Start the whole thing
int main(int argc,char *argv[]){
  // Make application

  FXApp application("Button", "eTransport Internet Relay Chat");

  // Open display
  application.init(argc,argv);

  // Main window
  new ButtonWindow(&application);

  // Create app
  application.create();

  // Run
  
  int result = application.run();

  EpFinalize();

  return result;


}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -