在web script中模拟MFC的消息

来源:互联网 发布:新闻类 数据库 编辑:程序博客网 时间:2024/06/16 01:10

MFC中的消息(自定义):
.h中定义消息响应函数
afx void OnMyMessage();
。cpp中定义消息建立消息映射与实现消息函数体
#define WM_MYMESSAGE WM_USER+1
ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)
void CMyClass::OnMyMessage()
{
//code here......
}

其实最终目标,就是WM_MYMESSAGE时,执行函数OnMyMessage()

script中如下:(假设消息响应函数名称始终为On+[message],对于几个消息只有一个响应函数的情况,稍加修改即可)

function PostMessage(message,arg,func)
//message:消息名称(字符串),如"WM_MYMESSAGE"
//arg:以,号分割的函数参数列表如:"1,str1,'const string',obj"
//func:响应函数名称,如"OnMyMessage",如果为空则默认为On+[message]
{
    var flag=true;
    var evalstr;
    if(func)
    {
        if(typeof(func)!="undefined")
       {
            evalstr=func;
            flag=false;
       }
    }
    if(flag)
    {
        if(typeof("On"+message)=="undefined")
        {
            alert("消息"+message+"无响应函数!");
            return;
       }
    }
    evalstr="On"+message;
    evalstr+="(";
    if(arg) evalstr+=arg;
    evalstr+=");";
    eval(evalstr);
}

响应函数的编写:

function OnMyMessage(constIntArg,intArg,constString,stringArg,obj)
{
alert(""+constIntArg+intArg+conString+stringArg+typeof(obj));
}

调用的地方:

var str="string123456";
var nTemp=100;
var obj={};
PostMessage("MyMessage","1,nTemp,'constString',str,obj");

执行结果:

alert的字符串为:1100constStringstring123456[Object]

非常简单!!!!!!!!!!!!!!!!!!!!!!!!!!!!

原创粉丝点击