主题:如何让窗口启动时的位置依次叠放?
sheyycy
[专家分:30] 发布于 2009-10-23 02:22:00
在我的程序中,用户能够随意打开各个窗口(每个窗口对应一个应用模块)。
问题是:
我想让窗口启动时的位置,能够依次叠放,如何实现?
回复列表 (共7个回复)
沙发
homayzh [专家分:7040] 发布于 2009-10-23 03:42:00
全是VFP的窗口?还是还有windows的窗口?
如果是VFP的窗口,就可以直接定义它的位置,大小,前后
如果是WINDows窗口,通过API,也可以定义它的位置,大小,前后
板凳
sheyycy [专家分:30] 发布于 2009-10-24 07:47:00
全是VFP窗口。用户打开的先后次序是随机的,我想让窗口依次叠放。
3 楼
homayzh [专家分:7040] 发布于 2009-10-24 14:16:00
全是VFP窗口,应该很好操作啊,我不知道你所谓的叠放, 是怎么放
4 楼
sheyycy [专家分:30] 发布于 2009-10-24 21:49:00
我有很多窗口,任用户调用。我想它们启动时的LEFT和TOP属性能依次自动向下。
如:
第一个被子打开的窗口:left=0,top=0
第二个 :left=20,top=20
第三个 :left=40,top=40
......
根据窗口大小,第某个窗口:left=0,top=0
5 楼
foxdb [专家分:1830] 发布于 2009-10-25 15:58:00
楼主是想要下面截图的效果吗?
[img]http://www.enhor.com/down_data/VFP窗口测试.gif[/img]
6 楼
sheyycy [专家分:30] 发布于 2009-10-25 21:09:00
哎!
7 楼
foxdb [专家分:1830] 发布于 2009-10-25 22:17:00
*上面的效果是由下面的程序运行演示的.供您参考
SET TALK OFF
SET SAFETY OFF
SET DELETED OFF
SET CENTURY ON
SET DATE TO ANSI
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING,STRING lpszFile,STRING,STRING,INTEGER
DECLARE INTEGER CreateMutex IN kernel32.DLL INTEGER,INTEGER,String
DECLARE INTEGER GetLastError IN kernel32.DLL
DECLARE INTEGER CloseHandle IN kernel32.DLL
handle=CreateMutex(0,0,"送电线路工程施工管理系统")
IF handle=0
_screen.windowstate=2
MESSAGEBOX("创建互斥体失败!",0,"信息提示!")
RETURN .f.
ELSE
IF GetLastError()=183
_screen.windowstate=2
=MESSAGEBOX("程序不能重复同时启动!",48," 信息提示!")
CLOSE all
Clear dlls
QUIT
ENDIF
ENDIF
_Screen.Show
PUBLIC xtPth,xtDm,xtCapt
xtPth = left(sys(16,1),rat("\",sys(16,1)))
CD &xtPth
xtDm = "0000" &&用户调用不同项目时,其值会被更改。
xtCapt = "送电线路工程施工管理系统"
_screen.Caption=xtCapt+" 当前工程项目: ["+xtDm+"]" && 随着更改
_screen.Icon = "sd_ico.ico"
_screen.Height=600
_screen.Width=900
_Screen.Show
POP MENU _msysmenu
M_hs=SROWS()
M_ls=SCOLS()
DEFINE WINDOWS W_win1 AT 0,0 SIZE M_hs-3,M_ls-2 IN SCREEN SYSTEM CLOSE FLOAT GROW ZOOM TITLE "■ 送电线路工程施工管理系统 窗口1"
DEFINE WINDOWS W_win2 AT 2,3 SIZE M_hs-5,M_ls-5 IN SCREEN SYSTEM CLOSE FLOAT GROW ZOOM TITLE "■ 送电线路工程施工管理系统 窗口2"
DEFINE WINDOWS W_win3 AT 4,6 SIZE M_hs-7,M_ls-8 IN SCREEN SYSTEM CLOSE FLOAT GROW ZOOM TITLE "■ 送电线路工程施工管理系统 窗口3"
DEFINE WINDOWS W_winx AT 6,9 SIZE M_hs-9,M_ls-11 IN SCREEN SYSTEM CLOSE FLOAT GROW ZOOM TITLE "■ 送电线路工程施工管理系统 窗口x......"
ACTI WINDOW W_win1
ACTI WINDOW W_win2
ACTI WINDOW W_win3
ACTI WINDOW W_winx
WAIT " 您定义(也可用程序动态定义)的子窗 W_winx 是可以任意修改(属性)隐含、显示和删除的 (点鼠标或按任意键退出本测试)"
M_test=MESSAGEBOX('是否退出程序?',292,'■送电线路工程施工管理系统')
IF M_test=6
SET PATH TO
CLEAR ALL
CLOSE ALL
*RETURN
QUIT
ENDIF
RETURN
我来回复