以下是代码
.版本 2
.支持库 spec
aplayer = 创建AP (_启动窗口.取窗口句柄 (), 0, 50, _启动窗口.取用户区宽度 (), _启动窗口.取用户区高度 () - 100, 到整数 (&OnMessage), 到整数 (&OnStateChanged), 到整数 (&OnOpenSuccess), 到整数 (&OnSeekCompleted), 到整数 (&OnBuffer), 到整数 (&OnVideoSizeChanged), 到整数 (&OnDownloadCodec), 到整数 (&OnEvent))
设置LOGO (aplayer, -1)
设置引擎配置 (aplayer, 36, “;30;50”)
设置引擎配置 (aplayer, 2, 取运行目录 () + “\codecs”)
ap句柄 = 到整数 (获取引擎配置 (aplayer, 20))
调试输出 (ap句柄)
.子程序 __启动窗口_尺寸被改变
关闭按钮.移动 (_启动窗口.宽度 - 关闭按钮.宽度 - 9, 到整数 (读配置项 (skin + “\config.ini”, “按钮配置”, “窗口控制按钮顶边”, )), , )
' 关闭按钮.移动 (_启动窗口.宽度 - 关闭按钮.宽度 - 9, 15, , )
最大化.移动 (关闭按钮.左边 - 最大化.宽度 - 6, 关闭按钮.顶边, , )
最小化.移动 (最大化.左边 - 最小化.宽度 - 6, 关闭按钮.顶边, , )
选项按钮.移动 (最小化.左边 - 选项按钮.宽度 - 6, 关闭按钮.顶边, , )
换肤按钮.移动 (选项按钮.左边 - 换肤按钮.宽度 - 6, 关闭按钮.顶边, , )
logo图片框.移动 (_启动窗口.宽度 ÷ 2 - logo图片框.宽度 ÷ 2, _启动窗口.高度 ÷ 2 - logo图片框.高度 ÷ 2 - 10, , )
打开文件按钮.移动 (logo图片框.左边, logo图片框.顶边 + logo图片框.高度 + 5, , )
打开文件下拉按钮.移动 (打开文件按钮.左边 + 打开文件按钮.宽度 + 1, 打开文件按钮.顶边, , )
播放器按钮.移动 (toplogo.宽度, 到整数 (读配置项 (skin + “\config.ini”, “按钮配置”, “功能按钮顶边”, )), , )
片库按钮.移动 (播放器按钮.左边 + 播放器按钮.宽度, 播放器按钮.顶边, , )
媒体库按钮.移动 (片库按钮.左边 + 片库按钮.宽度, 播放器按钮.顶边, , )
播放按钮.移动 (_启动窗口.宽度 ÷ 2 - 播放按钮.宽度 ÷ 2, _启动窗口.高度 - 播放按钮.高度 - 2, , )
' 调试输出 (播放按钮.顶边)
' _启动窗口.高度 - 播放按钮.顶边 + (_启动窗口.高度 - 播放按钮.顶边) ÷ 2 - 上一个按钮.高度 ÷ 2
上一个按钮.移动 (播放按钮.左边 - 上一个按钮.宽度 - 5, _启动窗口.高度 - 播放按钮.高度 - 4 + (_启动窗口.高度 - 播放按钮.顶边) ÷ 2 - 上一个按钮.高度 ÷ 2, , )
' 调试输出 (上一个按钮.顶边)
下一个按钮.移动 (播放按钮.左边 + 播放按钮.宽度 + 5, 上一个按钮.顶边, , )
停止按钮.移动 (上一个按钮.左边 - 停止按钮.宽度 - 5, 上一个按钮.顶边, , )
音量按钮.移动 (下一个按钮.左边 + 上一个按钮.宽度 + 10, _启动窗口.高度 - 播放按钮.高度 - 4 + (_启动窗口.高度 - 播放按钮.顶边) ÷ 2 - 音量按钮.高度 ÷ 2, , )
音量条.移动 (音量按钮.左边 + 音量按钮.宽度 + 5, _启动窗口.高度 - 播放按钮.高度 - 4 + (_启动窗口.高度 - 播放按钮.顶边) ÷ 2 - 音量条.高度 ÷ 2, , )
进度条.移动 (18, 播放按钮.顶边 - 2 - 进度条.高度, _启动窗口.宽度 - 减速播放按钮.宽度 - 加速播放按钮.宽度 - 16, )
减速播放按钮.移动 (4, 进度条.顶边, , )
加速播放按钮.移动 (进度条.左边 + 进度条.宽度 + 4, 进度条.顶边, , )
系统时间标签.顶边 = _启动窗口.高度 - 系统时间标签.高度 - 1
播放时间标签.顶边 = 系统时间标签.顶边 - 播放时间标签.高度 - 1
api_MoveWindow (ap句柄, 0, 0, _启动窗口.宽度, _启动窗口.高度 - 100, 真)
' API_SetWindowPos (ap句柄, ap句柄, 0, 0, _启动窗口.宽度, _启动窗口.高度 - 100, 3)
.DLL命令 API_SetWindowPos, 整数型, "user32", "SetWindowPos", , 这个函数能为窗口指定一个新位置和状态。它也可改变窗口在内部窗口列表中的位置。该函数与DeferWindowPos函数相似,只是它的作用是立即表现出来的(在vb里使用:针对vb窗体,如它们在win32下屏蔽或最小化,则需重设最顶部状态。如有必要,请用一个子类处理模块来重设最顶部状态 非零表示成功,零表示失败。会设置GetLastError
.参数 hwnd, 整数型, , 欲定位的窗口
.参数 hWndInsertAfter, 整数型, , 窗口句柄。在窗口列表中,窗口hwnd会置于这个窗口句柄的后面。也可能选用下述值之一:;HWND_BOTTOM:将窗口置于窗口列表底部;HWND_TOP:将窗口置于Z序列的顶部;Z序列代表在分级结构中,窗口针对一个给定级别的窗口显示的顺序;HWND_TOPMOST:将窗口置于列表顶部,并位于任何最顶部窗口的前面;HWND_NOTOPMOST:将窗口置于列表顶部,并位于任何最顶部窗口的后面
.参数 左边, 整数型, , 窗口新的x坐标。如hwnd是一个子窗口,则x用父窗口的客户区坐标表示
.参数 顶边, 整数型, , 窗口新的y坐标。如hwnd是一个子窗口,则y用父窗口的客户区坐标表示
.参数 宽度, 整数型, , 指定新的窗口宽度
.参数 高度, 整数型, , 指定新的窗口高度
.参数 wFlags, 整数型, , 包含了旗标的一个整数;SWP_DRAWFRAME:围绕窗口画一个框;SWP_HIDEWINDOW:隐藏窗口;SWP_NOACTIVATE:不激活窗口;SWP_NOMOVE:保持当前位置(x和y设定将被忽略);SWP_NOREDRAW:窗口不自动重画;SWP_NOSIZE:保持当前大小(cx和cy会被忽略);SWP_NOZORDER:保持窗口在列表的当前位置(hWndInsertAfter将被忽略);SWP_SHOWWINDOW:显示窗口;SWP_FRAMECHANGED:强迫一条WM_NCCALCSIZE消息进入窗口,即使窗口的大小没有改变;
.DLL命令 api_MoveWindow, , "user32", "MoveWindow", , 改变指定窗口的位置和大小
.参数 句柄, 整数型
.参数 左边, 整数型
.参数 顶边, 整数型
.参数 宽度, 整数型
.参数 高度, 整数型
.参数 是否重画, 逻辑型
其它的均能正常移动,就AP上面的两个api不管是用哪个都没有反应,都移动不了AP