@simple-and-crude/multi-window
Version:
Magnetic adsorbable window for HTML Application (HTA)
268 lines (267 loc) • 9.86 kB
TypeScript
declare var dialogArguments: [
id: number,
PARENT_GLOBAL: typeof SCMultiWindow.GLOBAL,
WIN: typeof window,
name: string
] | undefined;
declare function showModelessDialog(url: string, varArgIn?: any, options?: string): Window;
declare var dialogWidth: string | undefined;
declare var dialogHeight: string | undefined;
declare var dialogLeft: string | undefined;
declare var dialogTop: string | undefined;
interface Window {
SCMultiWindow: typeof SCMultiWindow;
}
declare function vbs_moveto(x: number, y: number): void;
declare function vbs_resizeto(x: number, y: number): void;
declare function getBorder(n: SCMultiWindow.XYPair): SCMultiWindow.XYPair;
/**获取鼠标位置 */
declare function getMouse(mouseNow: SCMultiWindow.XYPair, x: number, y: number): void;
declare var con: HTMLAreaElement;
declare var htaname: HTMLBaseElement;
declare var htano: HTMLBaseElement;
declare namespace SCMultiWindow {
/**************************************************************************\
|******************************* 初始化环境 *******************************|
\**************************************************************************/
/**是否使用数字传递位置。如果您的屏幕分辨率大于四位数,请改为false */
export let GET_POSDATA_BY_NUMBER: boolean;
export interface DialogConfigParam {
/**分窗高度 */
dialogHeight?: string;
/**分窗宽度 */
dialogWidth?: string;
/**和屏幕左边的距离 */
dialogLeft?: string | "auto";
/**和屏幕上边的距离 */
dialogTop?: string | "auto";
/**是否没有边框 */
unadorned?: 0 | 1 | "yes" | "no";
/**是否居中 */
center?: 0 | 1 | "yes" | "no";
/**是否显示帮助按钮 */
help?: 0 | 1 | "yes" | "no";
/**是否可被改变大小 */
resizeable?: 0 | 1 | "yes" | "no";
/**是否显示状态栏 */
status?: 0 | 1 | "yes" | "no";
/**是否显示滚动条 */
scroll?: 0 | 1 | "yes" | "no" | "on" | "off";
/**打印或者打印预览时是否隐藏 */
dialogHide?: 0 | 1 | "yes" | "no" | "on" | "off";
/**边框样式 */
edge?: "raised" | "sunken";
}
/**分窗配置类 */
export interface DialogConfig extends Required<DialogConfigParam> {
/**返回配置字符串 */
getFeat(): string;
}
export class DialogConfig {
constructor(
/**分窗的配置 */
obj?: DialogConfigParam);
}
export interface SCMW_DialogElementParam {
/**分窗id */
id?: number;
/**分窗地址 */
uri?: string;
/**分窗配置 */
config?: DialogConfigParam;
}
/**分窗元素类 */
export interface SCMW_DialogElement extends Required<SCMW_DialogElementParam> {
config: DialogConfig;
/**分窗名称 */
name: string;
/**分窗window对象 */
window: Window | {
closed: true;
};
}
export class SCMW_DialogElement {
constructor(
/**分窗的各属性 */
obj: SCMW_DialogElementParam);
}
/**XY值对类 */
export interface XYPair {
/**X值 */
x: number;
/**Y值 */
y: number;
/**方便地输出当前的值 */
log(): string;
}
export class XYPair {
constructor(x?: number, y?: number);
}
/**本地全局变量 */
export const GLOBAL: {
/**屏幕信息 */
Screen: {
/**信息版本 */
changed: number;
/**屏幕大小 */
XYsiz: XYPair;
/**任务栏信息 */
taskbar: {
/**任务栏方向(横或纵) */
rule: XYPair;
/**任务栏位置值 */
value: number;
};
};
/**磁力吸附范围 */
magRange: number;
/**各分窗尺寸 */
windowSiz: XYPair[];
/**新建分窗尺寸XY值对 */
newSiz(id: number): void;
/**各分窗位置 */
windowPos: XYPair[];
/**分窗位置版本 */
windowChanged: number[];
/**分窗位置是否已被更新 */
alreadyChanged: boolean[];
/**各分窗window对象 */
windowList: Window[];
/**各分窗名称 */
windowName: string[];
};
/**祖先窗口的全局变量 */
export const PARENT_GLOBAL: {
/**屏幕信息 */
Screen: {
/**信息版本 */
changed: number;
/**屏幕大小 */
XYsiz: XYPair;
/**任务栏信息 */
taskbar: {
/**任务栏方向(横或纵) */
rule: XYPair;
/**任务栏位置值 */
value: number;
};
};
/**磁力吸附范围 */
magRange: number;
/**各分窗尺寸 */
windowSiz: XYPair[];
/**新建分窗尺寸XY值对 */
newSiz(id: number): void;
/**各分窗位置 */
windowPos: XYPair[];
/**分窗位置版本 */
windowChanged: number[];
/**分窗位置是否已被更新 */
alreadyChanged: boolean[];
/**各分窗window对象 */
windowList: Window[];
/**各分窗名称 */
windowName: string[];
};
/**父窗口 */
export const PARENT_WINDOW: Window;
/**祖先窗口 */
export const ANCESTOR_WINDOW: Window;
/**************************************************************************\
|***************************** 用户配置性函数 *****************************|
\**************************************************************************/
/**初始化分窗 */
export function initDialog(
/**分窗的属性 */
...dialogs: SCMW_DialogElementParam[]): void;
/**加载完向主窗口报告 */
export const upLoaded: () => void;
/**初始化 */
export function initialize(): void;
/**重新获取屏幕各项参数 */
export function regetScreen(): void;
/**获取或重设磁力范围 */
export function magneticRange(
/**新的磁力范围(px),为空则不操作 */
n?: number): number;
/**获取或重设磁力开启状态 */
export function magneticStatus(
/**是否开启磁力。为空则不操作 */
n?: boolean): boolean;
/**获取窗口id */
export function windowID(): number;
/**获取或重设窗口名称 */
export function windowName(
/**新名称,为空则不操作 */
n?: string): string;
/**需要跟随当前窗口的分窗列表 */
export const dragList: {};
/**************************************************************************\
|*************************** 数据拷贝及上传函数 ***************************|
\**************************************************************************/
/**复制窗体位置信息 */
export function copyPos(
/**窗体id */
id: number,
/**窗体位置信息 */
data: string | false): void;
/**拷贝祖先全局变量到本地 */
export function copyGlobal(): void;
/**鼠标是否按下 */
export let bolMove: boolean;
/**传递窗口位置信息 */
export function update(): string | false;
/**开启自动检测上传 */
export function updateStart(
/**两次上传间隔时间(ms) */
n: number): void;
/**上传窗口尺寸 */
export function updateSiz(): void;
/**************************************************************************\
|*************************** 窗口尺寸及位置相关 ***************************|
\**************************************************************************/
/**窗口尺寸 */
export const XYsiz: XYPair;
/**窗口位置 */
export const XYpos: XYPair;
/**获取窗口尺寸 */
export function getSiz(): XYPair;
/**获取窗口位置 */
export function getPos(): XYPair;
/**设置窗口尺寸 */
export const setSiz: (/**窗口宽度 */ x: number, /**窗口高度 */ y: number) => void;
/**设置窗口位置 */
export const setPos: (/**和屏幕左边的距离 */ x: number, /**和屏幕上边的距离 */ y: number) => void;
/**************************************************************************\
|****************************** 窗口吸附相关 ******************************|
\**************************************************************************/
/**可被吸附的东西的名字 */
type magObjName = number | "screen" | "taskbar";
/**已经吸附上的分窗列表 */
export let engaList: {
[name in magObjName]?: true;
};
/**移动窗口 */
export function moveWindow(
/**要移动到的横坐标 */
x: number,
/**要移动到的纵坐标 */
y: number): void;
/**列出窗口当前正在吸附的分窗 */
export function engaCalc(): void;
/**点击时鼠标与窗口左上方的距离 */
export const mouseOffset: XYPair;
/**事件函数对象 */
export const event: {
/**鼠标点下 */
down(event: MouseEvent): void;
/**鼠标移动 */
move(event: MouseEvent): void;
/**鼠标抬起 */
up(): void;
/**全部加载完成 */
allLoad: () => void;
};
export {};
}
declare var SCMW_DialogElement: typeof SCMultiWindow.SCMW_DialogElement;