2011年9月4日星期日

ODbgScript源碼學習(十六)


void InvalidateProgWindow(void) //廢止窗口
{
if (ollylang->wndProg.hw!=NULL) //句柄不為空
InvalidateRect(ollylang->wndProg.hw, NULL, FALSE); //重畫窗口
}

void FocusProgWindow(void) //窗口焦點
{
if (ollylang->wndProg.hw!=NULL) {
SetForegroundWindow(ollylang->wndProg.hw); //創建指定窗口的線程到前臺,並且激活窗口
SetFocus(ollylang->wndProg.hw);
}
}

bool editProgLine(t_wndprog_data *ppl) 
{
string s;
s=ollylang->script[ppl->line-1]; //s為腳本行

if (Gettext("Edit script line...",(char*)s.c_str(),0,0,FIXEDFONT)) {
//如果獲取文本
strcpy(ppl->command," "); //複製" "
strncat(ppl->command,(char*) s.c_str(),PROG_CMD_LEN-2); //連接字符串
s=trim(s); //去除空
if (s.find(";")==0) { //查找;
ppl->type = PROG_TYPE_COMMENT; //有類型為註釋
}
else 
{
ppl->type = PROG_TYPE_COMMAND; //否則為命令
}

InvalidateProgWindow(); //廢止窗口
return true;
}
return false;
}

int addProgLine(int line, string & command, int type)  //添加行
{

t_wndprog_data pline={0};

pline.line = line; //行為傳入參數line
pline.size = 1; //大小設置為1
strcpy(pline.command," "); 
strncat(pline.command,command.c_str(),PROG_CMD_LEN-2); //連接字符串
strcpy(pline.result,"");
strcpy(pline.values,"");
if (type)
pline.type = type;
else
pline.type = PROG_TYPE_COMMAND;

pline.eip = 0; //eip為0
ollylang->tProgLines.push_back(pline); //壓棧

Addsorteddata(&(ollylang->wndProg.data),&(ollylang->tProgLines.back())); //添加數據
InvalidateProgWindow(); //廢止窗口

return 1;
}


没有评论:

发表评论