import java.applet.*
import java.awt.*
import java.io.*
import java.net.*
import java.awt.event.*
public class ChatClient extends Applet{
protected boolean loggedIn//登入状态
protected Frame cp//聊天室框架
protected static int PORTNUM=7777//缺省端口号7777
protected int port//实际端口号
protected Socket sock
protected BufferedReader is//用于从sock读取数据的BufferedReader
protected PrintWriter pw//用于向sock写入数据的PrintWriter
protected TextField tf//用于输入的TextField
protected TextArea ta//用于显示对话的TextArea
protected Button lib//登入按钮
protected Button lob//登出的按钮
final static String TITLE ="Chatroom applet>>>>>>>>>>>>>>>>>>>>>>>>"
protected String paintMessage//发表的消息
public ChatParameter Chat
public void init(){
paintMessage="正在生成聊天窗口"
repaint()
cp=new Frame(TITLE)
cp.setLayout(new BorderLayout())
String portNum=getParameter("port")//呢个参数勿太明
port=PORTNUM
if (portNum!=null) //书上是portNum==null,十分有问题
port=Integer.parseInt(portNum)
//CGI
ta=new TextArea(14,80)
ta.setEditable(false)//read only attribute
ta.setFont(new Font("Monospaced",Font.PLAIN,11))
cp.add(BorderLayout.NORTH,ta)
Panel p=new Panel()
Button b
//for login button
p.add(lib=new Button("Login"))
lib.setEnabled(true)
lib.requestFocus()
lib.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
login()
lib.setEnabled(false)
lob.setEnabled(true)
tf.requestFocus()//将键盘输入锁定再右边的文本框中
}
})
//for logout button
p.add(lob=new Button ("Logout"))
lob.setEnabled(false)
lob.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
logout()
lib.setEnabled(true)
lob.setEnabled(false)
lib.requestFocus()
}
})
p.add(new Label ("输入消息:"))
tf=new TextField(40)
tf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(loggedIn){
//pw.println(Chat.CMD_BCAST+tf.getText())//Chat.CMD....是咩野来?
int j=tf.getText().indexOf(":")
if(j>0) pw.println(Chat.CMD_MESG+tf.getText())
else
pw.println(Chat.CMD_BCAST+tf.getText())
tf.setText("")//勿使用flush()?
}
}
})
p.add(tf)
cp.add(BorderLayout.SOUTH,p)
cp.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
//如果执行了setVisible或者dispose,关闭窗口
ChatClient.this.cp.setVisible(false)
ChatClient.this.cp.dispose()
logout()
}
})
cp.pack()//勿明白有咩用?
//将Frame cp放在中间
Dimension us=cp.getSize(),
them=Toolkit.getDefaultToolkit().getScreenSize()
int newX=(them.width-us.width)/2
int newY=(them.height-us.height)/2
cp.setLocation(newX,newY)
cp.setVisible(true)
paintMessage="Window should now be visible"
repaint()
}
//登录聊天室
public void login(){
if(loggedIn) return
try{
sock=new Socket(getCodeBase().getHost(),port)
is=new BufferedReader(new InputStreamReader(sock.getInputStream()))
pw=new PrintWriter(sock.getOutputStream(),true)
}catch(IOException e){
showStatus("Can't get socket: "+e)
cp.add(new Label("Can't get socket: "+e))
return}
//构造并且启动读入器,从服务器读取数据,输出到文本框中
//这里,长成一个线程来避免锁住资源(lockups)
new Thread (new Runnable(){
public void run(){
String line
try{
while(loggedIn &&((line=is.readLine())!=null))
ta.appendText(line+"\n")
}catch(IOException e){
showStatus("我的天啊,掉线了也!!!!")
return
}
}
}).start()
//假定登录(其实只是打印相关信息,并没有真正登录)
// pw.println(Chat.CMD_LOGIN+"AppletUser")
pw.println(Chat.CMD_LOGIN+"AppletUser")
loggedIn =true
}
//模仿退出的代码
public void logout(){
if(!loggedIn)
return
loggedIn=false
try{
if(sock!=null)
sock.close()
}catch(IOException ign){
// 异常处理哦
}
}
//没有设置stop的方法,即使从浏览器跳到另外一个网页的时候
//聊天程序还可以继续运行
public void paint(Graphics g){
Dimension d=getSize()
int h=d.height
int w=d.width
g.fillRect(0,0,w,2)
g.setColor(Color.black)
g.drawString(paintMessage,10,(h/2)-5)
}
}
聊天室服务器端
import java.net.*
import java.io.*
import java.util.*
public class ChatServer{
//聊天室管理员ID
protected final static String CHATMASTER_ID="ChatMaster"
//系统信息的分隔符
protected final static String SEP=": "
//服务器的Socket
protected ServerSocket servSock
//当前客户端列表
protected ArrayList clients
//调试标记
protected boolean DEBUG=false
public ChatParameter Chat
//主方法构造一个ChatServer,没有返回值
public static void main(String[] argv){
System.out.println("Chat server0.1 starting>>>>>>>>>>>>>>>>")
ChatServer w=new ChatServer()
w.runServer()
System.out.println("***ERROR*** Chat server0.1 quitting")
}
//构造和运行一个聊天服务
ChatServer(){
Chat=new ChatParameter()
clients=new ArrayList()
try{
servSock=new ServerSocket(7777)//实有问题拉,不过可能是他自己定义既一个class.
System.out.println("Chat Server0.1 listening on port:"+7777)
}catch(Exception e){
log("IO Exception in ChatServer.<init>")
System.exit(0)
}
}
public void runServer(){
try{
while(true){
Socket us=servSock.accept()
String hostName=us.getInetAddress().getHostName()
System.out.println("Accpeted from "+hostName)
//一个处理的线程
ChatHandler cl=new ChatHandler(us,hostName)
synchronized(clients){
clients.add(cl)
cl.start()
if(clients.size()==1)
cl.send(CHATMASTER_ID,"Welcome!You are the first one here")
else{
cl.send(CHATMASTER_ID,"Welcome!You are the latest of"+
clients.size()+" users.")
}
}
}
}catch(Exception e){
log("IO Exception in runServer:"+e)
System.exit(0)
}
}
protected void log(String s){
System.out.println(s)
}
//处理会话的内部的类
protected class ChatHandler extends Thread {
//客户端scoket
protected Socket clientSock
//读取socket的BufferedReader
protected BufferedReader is
//在socket 上发送信息行的PrintWriter
protected PrintWriter pw
//客户端出主机
protected String clientIP
//句柄
protected String login
public ChatHandler (Socket sock,String clnt)throws IOException {
clientSock=sock
clientIP=clnt
is=new BufferedReader(
new InputStreamReader(sock.getInputStream()))
pw=new PrintWriter (sock.getOutputStream(),true)
}
//每一个ChatHandler是一个线程,下面的是他的run()方法
//用于处理会话
public void run(){
String line
try{
while((line=is.readLine())!=null){
char c=line.charAt(0)//我顶你老母啊 ,果只Chat.CMD咩xx冇定义 扑啊///!!!
line=line.substring(1)
switch(c){
//case Chat.CMD_LOGIN:
case 'l':
if(!Chat.isValidLoginName(line)){
send(CHATMASTER_ID,"LOGIN"+line+"invalid")
log("LOGIN INVALID from:"+clientIP)
continue
}
login=line
broadcast(CHATMASTER_ID,login+" joins us,for a total of"+
clients.size()+" users")
break
// case Chat.CMD_MESG:
case 'm':
if(login==null){
send(CHATMASTER_ID,"please login first")
continue
}
int where =line.indexOf(Chat.SEPARATOR)
String recip=line.substring(0,where)
String mesg=line.substring (where+1)
log("MESG: "+login+"--->"+recip+": "+mesg)
ChatHandler cl=lookup(recip)
if(cl==null)
psend(CHATMASTER_ID,recip+"not logged in.")
else
cl.psend(login,mesg)
break
//case Chat.CMD_QUIT:
case 'q':
broadcast(CHATMASTER_ID,"Goodbye to "+login+"@"+clientIP)
close()
return//ChatHandler结束
// case Chat.CMD_BCAST:
case 'b':
if(login!=null)
broadcast(login,line)
else
log("B<L FROM"+clientIP)
break
default:
log("Unknow cmd"+c+"from"+login+"@"+clientIP)
}
}
}catch(IOException e){
log("IO Exception :"+e)
}finally{
//sock 结束,我们完成了
//还不能发送再见的消息
//得有简单的基于命令的协议才行
System.out.println(login+SEP+"All Done")
synchronized(clients){
clients.remove(this)
if(clients.size()==0){
System.out.println(CHATMASTER_ID+SEP+
"I'm so lonely I could cry>>>>>")
}else if(clients.size()==1){
ChatHandler last=(ChatHandler)clients.get(0)
last.send(CHATMASTER_ID,"Hey,you are talking to yourself again")
}
else{
broadcast(CHATMASTER_ID,"There are now"+clients.size()+" users")
}
}
}
}
protected void close(){
if(clientSock==null){
log("close when not open")
return
}
try{
clientSock.close()
clientSock=null
}catch(IOException e){
log("Failure during close to "+clientIP)
}
}
//发送一条消息给用户
public void send(String sender,String mesg){
pw.println(sender+SEP+"*>"+mesg)
}
//发送私有的消息
protected void psend(String sender ,String msg){
send("<*"+sender+"*>",msg)
}
//发送一条消息给所有的用户
public void broadcast (String sender,String mesg){
System.out.println("Broadcasting"+sender+SEP+mesg)
for(int i=0i<clients.size()i++){
ChatHandler sib=(ChatHandler)clients.get(i)
if(DEBUG)
System.out.println("Sending to"+sib)
sib.send(sender,mesg)
}
if(DEBUG) System.out.println("Done broadcast")
}
protected ChatHandler lookup(String nick){
synchronized(clients){
for(int i=0i<clients.size()i++){
ChatHandler cl=(ChatHandler)clients.get(i)
if(cl.login.equals(nick))
return cl
}
}
return null
}
//将ChatHandler对象转换成一个字符串
public String toString(){
return "ChatHandler["+login+"]"
}
}
}
public class ChatParameter {
public static final char CMD_BCAST='b'
public static final char CMD_LOGIN='l'
public static final char CMD_MESG='m'
public static final char CMD_QUIT='q'
public static final char SEPARATOR=':'//?????
public static final int PORTNUM=7777
public boolean isValidLoginName(String line){
if (line.equals("CHATMASTER_ID"))
return false
return true
}
public void main(String[] argv){
}
}
记得加分啊!!!
我以前也做过个简单的聊天室,后来因为另有任务没有做完,不过表情还是基本实现了,和你交流一下希望对你有点帮助。我的原理是这样的:因为我发言用的是文本框,而文本框不支持图片,所以只能用符号来代替,用户选择图片后保存的实际是该图片所对应的符号,显示时再判断一下发言内容是否包含那些符号。如果有的话则把该符号转换成所对应图片的路径就好了。图片可以到网上找,符号可以在msn里找到,在msn聊天窗口->选择图片->其他,可以看到图片对应的符号,如果你直接在msn里输入符号它自动会转换成图片,可是文本框不行。听说网上有个FreeTextBox好用,可我用不来。
在html里有个隐藏层(div)里面是一个表格存放表情
然后页面上有个表情图片点击可控制 层的显示和隐藏
用户点击某个表情后就得到了个符号。
下面的html代码主要是隐藏层的实现和符号的取得贴出来你参考一下。当然你也可以将全部表情放在页面上然后用"radio"或"checkBox"选这样可能更简单点,至于后台符号转换成图片,开发语言可能不同你自己研究一下吧
<%@ Page language="c#" Codebehind="frmSend.aspx.cs" AutoEventWireup="false" Inherits="ChatRoom.Page.frmSend" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>frmSend</title>
<script language="javascript">
function doSubmit()
{
var user=document.all("txtUser")
var objUser=document.all("txtObjUser")
if(user.value==objUser.value)
{
alert("ト嵂サトワム。ヤ�ヘラヤシコチトフ・")
objUser.value="all"
return false
}
if(document.all("cbChat").checked)
{
if(document.all("txtObjUser").value=="all" || document.all("txtObjUser").value=="All")
{
alert("ヒスチトカヤマ�サトワホェall")
return false
}
}
return true
}
ie4=(document.all)?true:false
ns4=(document.layers)?true:false
function toExit()
{
var args=toExit.arguments
var visible=args[0]
if(ns4)
{
theObj=eval("document.layers[\'"+args[1]+"\']")
if(theObj)theObj.visibility=visible
}
else if(ie4)
{
if(visible=='show')visible='visible'
if(visible=='hide')visible='hidden'
theObj=document.all("Layer1")
if(theObj)theObj.style.visibility=visible
}
}
function doClick(em)
{
var txt=document.all("txtMessage").value
txt+=em
document.all("txtMessage").value=txt
document.all("hidEmotion").value=em
toExit('hide','boysoft')
}
function doBold()
{
var word=document.all("txtMessage")
if (word.style.fontWeight == "bold")
{
word.style.fontWeight = "normal"
document.all("hidBold").value=""
}
else
{
word.style.fontWeight = "bold"
document.all("hidBold").value="bold"
}
event.cancelBubble = true
event.returnValue = false
}
function doItalic()
{
var txt=document.getElementById("txtMessage")
if(txt.style.fontStyle=="italic")
{
txt.style.fontStyle="normal"
document.all("hidItalic").value=""
}
else
{
txt.style.fontStyle="italic"
document.all("hidItalic").value="italic"
}
}
function doShowColor()
{
var args=doShowColor.arguments
var visible=args[0]
if(ns4)
{
theObj=eval("document.layers[\'"+args[1]+"\']")
if(theObj)theObj.visibility=visible
}
else if(ie4)
{
if(visible=='show')visible='visible'
if(visible=='hide')visible='hidden'
theObj=document.all("Layer3")
if(theObj)theObj.style.visibility=visible
}
}
function doHidde()
{
toExit('hide','boysoft')
doShowColor('hide','boysoft')
}
function doSetColor(id)
{
var txt=document.getElementById("txtMessage")
var imgColor=document.getElementById("imgColor")
txt.style.color=id
document.all("hidColor").value=id
imgColor.style.backgroundColor=id
doShowColor('hide','boysoft')
}
function doFontChange(txtFont)
{
if(txtFont=="Font")
{
return
}
document.getElementById("txtMessage").style.fontFamily=txtFont
document.all("hidFont").value=txtFont
}
function doSizeChang(txtSize)
{
if(txtSize=="Size")
{
return
}
document.getElementById("txtMessage").style.fontSize=txtSize
document.all("hidSize").value=txtSize
}
</script>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidthdocument.MM_pgH=innerHeightonresize=MM_reloadPage}}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload()
}
MM_reloadPage(true)
//-->
</script>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidthdocument.MM_pgH=innerHeightonresize=MM_reloadPage}}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload()
}
MM_reloadPage(true)
//-->
</script>
</HEAD>
<body onmousedown="doHidde()" bgColor="#edf1fa" onload="document.Form1.txtMessage.focus()"
MS_POSITIONING="GridLayout">
<form id="Form1" onsubmit="javascript:return doSubmit()" method="post" runat="server">
<INPUT id="hidBold" style="Z-INDEX: 103LEFT: 64pxWIDTH: 152pxPOSITION: absoluteTOP: 216pxHEIGHT: 22px"
type="hidden" size="20" name="hidBold"><INPUT id="hidEmotion" style="Z-INDEX: 109LEFT: 64pxPOSITION: absoluteTOP: 416px"
type="hidden" name="Hidden6" runat="server"><INPUT id="hidColor" style="Z-INDEX: 108LEFT: 64pxPOSITION: absoluteTOP: 448px" type="hidden"
name="Hidden7" runat="server"><INPUT id="hidFont" style="Z-INDEX: 107LEFT: 64pxPOSITION: absoluteTOP: 344px" type="hidden"
name="Hidden4" runat="server"><INPUT id="hidSize" style="Z-INDEX: 106LEFT: 64pxPOSITION: absoluteTOP: 376px" type="hidden"
name="Hidden5" runat="server"><INPUT id="hidUnderLine" style="Z-INDEX: 105LEFT: 64pxPOSITION: absoluteTOP: 304px"
type="hidden" name="Hidden3" runat="server"><INPUT id="hidItalic" style="Z-INDEX: 104LEFT: 64pxPOSITION: absoluteTOP: 256px"
type="hidden" name="Hidden2" runat="server">
<TABLE id="Table1" style="WIDTH: 712pxHEIGHT: 112px" cellSpacing="1" cellPadding="1"
width="712" border="1">
<TR>
<TD><span title="bold"><IMG onclick="doBold()" src="../images/bold.gif"> </SAPN><span title="italic" onclick="doItalic()"><IMG src="../images/italic.gif"></span><span title="underline" onclick="doUnderline()"><IMG src="../images/underline.gif"></span><span title="Font Color"><IMG id="imgColor" style="BACKGROUND-COLOR: black" onclick="doShowColor('show','boysoft')"
src="../images/colourpick.gif" runat="server"></span> <SELECT onchange="doFontChange(this.value)" name="ddFont" id="Select1" runat="server">
<OPTION value="Font" selected>Font</OPTION>
<OPTION value="Arial">Arial</OPTION>
<OPTION value="Verdana">Verdana</OPTION>
<OPTION value="Comic Sans MS">Comic Sans MS</OPTION>
<OPTION value="Courier">Courier</OPTION>
<OPTION value="Georgia">Georgia</OPTION>
<OPTION value="Impact">Impact</OPTION>
<OPTION value="Lucida Console">Lucida Console</OPTION>
<OPTION value="Tahoma">Tahoma</OPTION>
<OPTION value="Times New Roman">Times New Roman</OPTION>
<OPTION value="Wingdings">Wingdings</OPTION>
</SELECT><SELECT onchange="doSizeChang(this.value)" name="ddSize" id="Select2" runat="server">
<OPTION value="Size" selected>Size</OPTION>
<OPTION value="12px">12</OPTION>
<OPTION value="13px">13</OPTION>
<OPTION value="14px">14</OPTION>
<OPTION value="15px">15</OPTION>
<OPTION value="16px">16</OPTION>
<OPTION value="17px">17</OPTION>
<OPTION value="18px">18</OPTION>
<OPTION value="19px">19</OPTION>
<OPTION value="20px">20</OPTION>
<OPTION value="21px">21</OPTION>
<OPTION value="22px">22</OPTION>
<OPTION value="23px">23</OPTION>
<OPTION value="24px">24</OPTION>
<OPTION value="25px">25</OPTION>
<OPTION value="26px">26</OPTION>
<OPTION value="27px">27</OPTION>
<OPTION value="28px">28</OPTION>
<OPTION value="29px">29</OPTION>
<OPTION value="30px">30</OPTION>
<OPTION value="31px">31</OPTION>
<OPTION value="32px">32</OPTION>
</SELECT> <span title="insert emotions"><IMG onclick="toExit('show','boysoft')" src="../images/emotion.gif"></span> <span title="sign out">
<asp:imagebutton id="ibExit" runat="server" ImageUrl="../images/logoff.gif"></asp:imagebutton></span></span>
<div id="Layer1" style="BORDER-RIGHT: #000000 1pxBORDER-TOP: #000000 1pxZ-INDEX: 101LEFT: 286pxVISIBILITY: hiddenBORDER-LEFT: #000000 1pxWIDTH: 200pxBORDER-BOTTOM: #000000 1pxPOSITION: absoluteTOP: 48pxHEIGHT: 115px">
<table cellPadding="0" width="200" bgColor="#ffffff" border="1">
<tr>
<td><IMG onmouseup="doClick('(A)')" height="19" src="../images/emangel.gif" width="19" name="emangel"></td>
<td><IMG onmouseup="doClick(':@ (')" height="19" src="../images/emangry.gif" width="19" name="emangry"></td>
<td><IMG onmouseup="doClick('(B)')" height="19" src="../images/embeer.gif" width="19" name="embeer"></td>
<td><IMG onmouseup="doClick('(^)')" height="19" src="../images/emcake.gif" width="19"></td>
<td><IMG onmouseup="doClick('(@)')" height="19" src="../images/emcat.gif" width="19"></td>
<td><IMG onmouseup="doClick('(O)')" height="19" src="../images/emclock.gif" width="19"></td>
<td><IMG onmouseup="doClick('(D)')" height="19" src="../images/emcocktl.gif" width="19"></td>
<td><IMG onmouseup="doClick(':S')" height="19" src="../images/emcrook.gif" width="19"></td>
</tr>
<tr>
<td><IMG onmouseup="doClick(':。ョ(')" height="19" src="../images/emcry.gif" width="19"></td>
<td><IMG onmouseup="doClick(':|')" height="19" src="../images/emdgust.gif" width="19"></td>
<td><IMG onmouseup="doClick('(&)')" height="19" src="../images/emdog.gif" width="19"></td>
<td><IMG onmouseup="doClick(':$')" height="19" src="../images/emembarrassed.gif" width="19"></td>
<td><IMG onmouseup="doClick('(X)')" height="19" src="../images/emfemale.gif" width="19"></td>
<td><IMG onmouseup="doClick('(~)')" height="19" src="../images/emfilm.gif" width="19"></td>
<td><IMG onmouseup="doClick('(G)')" height="19" src="../images/emgift.gif" width="19"></td>
<td><IMG onmouseup="doClick('(})')" height="19" src="../images/emhug2.gif" width="19"></td>
</tr>
<tr>
<td><IMG onmouseup="doClick('({)')" height="19" src="../images/emhug.gif" width="19"></td>
<td><IMG onmouseup="doClick('(K)')" height="19" src="../images/emlips.gif" width="19"></td>
<td><IMG onmouseup="doClick('8-|')" height="19" src="../images/17.gif" width="19"></td>
<td><IMG onmouseup="doClick('(L)')" height="19" src="../images/emlove.gif" width="19"></td>
<td><IMG onmouseup="doClick('(Z)')" height="19" src="../images/emmale.gif" width="19"></td>
<td><IMG onmouseup="doClick('(M)')" height="19" src="../images/emmessag.gif" width="19"></td>
<td><IMG onmouseup="doClick('(S)')" height="19" src="../images/emmoon.gif" width="19"></td>
<td><IMG onmouseup="doClick('(8)')" height="19" src="../images/emnote.gif" width="19"></td>
</tr>
<tr>
<td><IMG onmouseup="doClick('(T)')" height="19" src="../images/emphone.gif" width="19"></td>
<td><IMG onmouseup="doClick('(P)')" height="19" src="../images/emphoto.gif" width="19"></td>
<td><IMG onmouseup="doClick('(F)')" height="19" src="../images/emrose.gif" width="19"></td>
<td><IMG onmouseup="doClick('(W)')" height="19" src="../images/emrosesad.gif" width="19"></td>
<td><IMG onmouseup="doClick(':(')" height="19" src="../images/emsad.gif" width="19"></td>
<td><IMG onmouseup="doClick(':)')" height="19" src="../images/emsmile.gif" width="19"></td>
<td><IMG onmouseup="doClick('(H)')" height="19" src="../images/emsmiled.gif" width="19"></td>
<td><IMG onmouseup="doClick(':-O')" height="19" src="../images/emsmileo.gif" width="19"></td>
</tr>
<tr>
<td><IMG onmouseup="doClick(':P')" height="19" src="../images/emsmilep.gif" width="19"></td>
<td><IMG onmouseup="doClick('(*)')" height="19" src="../images/emstar.gif" width="19"></td>
<td><IMG onmouseup="doClick('(C)')" height="19" src="../images/emtea.gif" width="19"></td>
<td><IMG onmouseup="doClick(':D')" height="19" src="../images/emteeth.gif" width="19"></td>
<td><IMG onmouseup="doClick('(N)')" height="19" src="../images/emthdown.gif" width="19"></td>
<td><IMG onmouseup="doClick('(Y)')" height="19" src="../images/emthup.gif" width="19"></td>
<td><IMG onmouseup="doClick('(U)')" height="19" src="../images/emunlove.gif" width="19"></td>
<td><IMG onmouseup="doClick(')')" height="19" src="../images/emwink.gif" width="19"></td>
</tr>
</table>
</div>
</TD><!--font style="FONT-WEIGHT: boldFONT-SIZE: 30pxCOLOR: redFONT-STYLE: italicFONT-FAMILY: 'Arial Black'TEXT-DECORATION: underline"--></TR>
<TR>
<TD style="HEIGHT: 53px"><asp:textbox id="txtMessage" ForeColor="" runat="server" Width="576px" Height="43px"></asp:textbox><asp:button id="btSay" runat="server" Height="42px" Text="send"></asp:button></TD>
</TR>
<TR>
<TD><asp:textbox id="txtUser" runat="server" Width="120px" ReadOnly="True" BorderStyle="Groove" BackColor="#EDF1FA"
ForeColor="Black"></asp:textbox><asp:label id="Label2" runat="server">to</asp:label><FONT face="ヒホフ・><FONT face="ヒホフ・><asp:textbox id="txtObjUser" runat="server" Width="120px" ReadOnly="True" BorderStyle="Groove"
BackColor="#EDF1FA"></asp:textbox></FONT></FONT><FONT face="ヒホフ・></FONT><asp:checkbox id="cbChat" runat="server" Text="Whisper "></asp:checkbox></TD>
</TR>
</TABLE>
</form>
<div id="Layer3" style="Z-INDEX: 102LEFT: 87pxVISIBILITY: hiddenWIDTH: 115pxPOSITION: absoluteTOP: 49pxHEIGHT: 73px">
<table borderColor="#c0c0c0" height="60" cellPadding="0" width="114" border="1">
<tr>
<td onmousedown="doSetColor('#FF0000')" width="12" bgColor="#ff0000"> </td>
<td onmousedown="doSetColor('#00ff00')" width="12" bgColor="#00ff00"> </td>
<td onmousedown="doSetColor('#0000ff')" width="12" bgColor="#0000ff"> </td>
<td onmousedown="doSetColor('#ffff00')" width="12" bgColor="#ffff00"> </td>
<td onmousedown="doSetColor('#00ffff')" width="12" bgColor="#00ffff"> </td>
<td onmousedown="doSetColor('#ff00ff')" width="14" bgColor="#ff00ff"> </td>
<td onmousedown="doSetColor('#000000')" width="10" bgColor="#000000"> </td>
</tr>
<tr>
<td onmousedown="doSetColor('#ff8040')" bgColor="#ff8040"> </td>
<td onmousedown="doSetColor('#0080ff')" bgColor="#0080ff"> </td>
<td onmousedown="doSetColor('#408080')" bgColor="#408080"> </td>
<td onmousedown="doSetColor('#c0c0c0')" bgColor="#c0c0c0"> </td>
<td onmousedown="doSetColor('#0000a0')" bgColor="#0000a0"> </td>
<td onmousedown="doSetColor('#8000ff')" bgColor="#8000ff"> </td>
<td onmousedown="doSetColor('#ff80ff')" bgColor="#ff80ff"> </td>
</tr>
<tr>
<td onmousedown="doSetColor('#8080c0')" bgColor="#8080c0"> </td>
<td onmousedown="doSetColor('#008040')" bgColor="#008040"> </td>
<td onmousedown="doSetColor('#808040')" bgColor="#808040"> </td>
<td onmousedown="doSetColor('#99cc33')" bgColor="#99cc33"> </td>
<td onmousedown="doSetColor('#00ff80')" bgColor="#00ff80"> </td>
<td onmousedown="doSetColor('#ff3399')" bgColor="#ff3399"> </td>
<td onmousedown="doSetColor('#ff8080')" bgColor="#ff8080"> </td>
</tr>
</table>
</div>
</body>
</HTML>