北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 4516|回复: 3

mini窗口为什么老自己动

[复制链接]
发表于 2013-11-1 07:27:29 | 显示全部楼层 |阅读模式
本帖最后由 hahh 于 2013-10-31 11:51 PM 编辑

从论坛抄的一段画miniwindow的,为什么无论我把它设置在什么位置,他popup出来以后,都会自己挪动到屏幕右边中间的位置?
代码如下
function draw_task()
        questinfo = GetVariable("questinfo");
        info = split(questinfo,">");
       
        -- use 8 pt Dina or 10 pt Courier
        local fonts = utils.getfontfamilies ();

        -- choose a font that exists
        if fonts.Dina then
                font_name = "Dina";   
        elseif fonts ["Lucida Sans Unicode"] then
                font_name = "Lucida Sans Unicode";
        else
                font_size = 10;
                font_name = "Courier";
        end -- if

        windowinfo = movewindow.install (infowin, 7, 0);   -- get position (default to right/middle)

        -- load fonts - mouseover window
        WindowCreate (infowin, windowinfo.window_left,windowinfo.window_top,200,200,windowinfo.window_mode,windowinfo.window_flags,ColourNameToRGB "slategray")
       
        -- install the fonts  (49 is modern / fixed pitch)
        WindowFont (infowin, font_id, font_name, font_size, false, false, false, false, 0, 49);
        WindowFont (infowin, heading_font_id, font_name, font_size + 2, false, false, false, false, 0, 49);


        -- NOW DISPLAY A WINDOW

        -- what to say - one line per table entry, with imbedded colour codes
        heading = "@Y任务列表:                         .";
        left, top = 883,230;
        align_right = false;
        align_bottom = false;
        capitalize = true;

        -- show it  
        mw.popup (infowin,           -- window name to use
                        heading_font_id,   -- font to use for the heading
                        font_id,           -- font to use for each line
                        heading,           -- heading text
                        info,                           -- table of lines to show (with colour codes)
                        left, top,         -- where to put it
                        border_colour,     -- colour for round rectangle line
                        background_colour, -- colour for background
                        capitalize,        -- if true, force the first letter to upper case
                        lign_right,       -- if true, align right side on "Left" parameter
                        align_bottom)      -- if true, align bottom side on "Top" parameter

        --movewindow.add_drag_handler (infowin, 0, 0, 100, 100, 10);  -- both-ways arrow cursor (10)

        -- SAVE STATE in OnPluginSaveState   
        movewindow.save_state(infowin);
        WindowShow(infowin,true)

end

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2013-11-2 03:03:16 | 显示全部楼层
那应该怎么改,数字怎么改都是在右中。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2013-11-2 09:39:24 | 显示全部楼层
本帖最后由 uniboee 于 2013-11-2 09:53 AM 编辑

回复 3# hahh

问题1:

你用了 movewindow 这个辅助模块,它能自动记住上一次窗口的位置。
--movewindow.add_drag_handler (infowin, 0, 0, 100, 100, 10);  -- both-ways arrow cursor (10)
这一行是用来拖拽窗口的,你把它注释掉了,也就无法拖拽了,只能始终保持在创建时的位置上。

如果你不想让窗口被拖拽,就不要用 movewindow 这个模块了,直接 WindowCreate()

问题2:

mw.popup() 这个函数不是mushclient 自带的吧,应该是别人自己写的函数,他可能使用了绝对坐标,而不是miniwindow内的相对坐标。

left, top = 883,230; 这一行语句很可能就是绝对坐标
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2013-11-2 16:03:29 | 显示全部楼层
windowcreat不会用,看过几个没看懂。
movewindow这个偶尔会报错,我就把它禁用了
left, top = 883,230这个是我改的,只求miniwindow移动的幅度小点(无论怎么改窗口都会再动一动)。这个只是管popup的位置,过一会还是会挪到右中
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-1 01:40 PM , Processed in 0.017072 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表