搜索
aardio官方社区 门户 查看主题

分享一个未完成的桌面管理软件代码

发布者: popdes | 发布时间: 2017-10-29 18:59| 查看数: 1479| 评论数: 4|帖子模式

本打算这几天用listview图标模式完成一个类似Q+的桌面管理功能软件,
写着写着发现用这个弄出来的展示效果实在不如人意...,感觉也不好做漂亮..
算了,还是继续研究htmllayout去,那个写这样的东西又漂亮又灵活... 标准控件毕竟还是有局限啊...
其实最近练习了蛮多界面的, 最后发现plus+htmllayout是最快最省力的方式, 完全用来layout感觉有时候也蛮烦躁的..
嗯,就这样.
写的简单,看看就好.
完整的工程源码可以去我以前分享的那个 百度网盘 里下载.
QQ图片20171029190121.png

下面是主要代码:
mainform界面
  1. import win.ui;
  2. import gdip.fontAwesome;
  3. import win.ui.menu;
  4. /*DSG{{*/
  5. mainForm = win.form(text="aardio form";right=859;bottom=583;bgcolor=16228727;border="none")
  6. mainForm.add(
  7. logo={cls="plus";text='\uF26C';left=0;top=0;right=35;bottom=35;bgcolor=8421376;color=16777215;dl=1;dt=1;font=LOGFONT(name='FontAwesome';h=-24);z=2};
  8. plus={cls="plus";text="桌面管理器";left=35;top=2;right=174;bottom=32;align="left";bgcolor=8421376;color=16777215;dl=1;dt=1;font=LOGFONT(name='叶根友毛笔行书2.0版';h=-20);z=5};
  9. topbar={cls="plus";left=-1;top=-1;right=860;bottom=37;bgcolor=8421376;dl=1;dr=1;dt=1;notify=1;z=1};
  10. topclose={cls="plus";text='\uF00D';left=825;top=0;right=860;bottom=35;bgcolor=8421376;color=16777215;dr=1;dt=1;font=LOGFONT(name='FontAwesome';h=-24);notify=1;transparent=1;z=3};
  11. topmenu={cls="plus";text='\uF0C9';left=790;top=0;right=825;bottom=35;bgcolor=8421376;color=16777215;dr=1;dt=1;font=LOGFONT(name='FontAwesome';h=-24);notify=1;transparent=1;z=4}
  12. )
  13. /*}}*/

  14. //模拟拖动窗体事件
  15. mainForm.topbar.wndproc = function(hwnd,message,wParam,lParam){
  16.         if(message == 0x201/*_WM_LBUTTONDOWN*/){
  17.                 mainForm.hitCaption();
  18.         }
  19.         //无返回值则继续调用默认回调函数
  20. }
  21. /*创建一个顶部弹出菜单{{*/
  22. //创建一个顶部弹出菜单
  23. var topbarmenu = win.ui.popmenu(mainForm);
  24. topbarmenu.add(
  25.         "设置",
  26.         function(id){
  27.                         mainForm.msgbox("设置!")
  28.         }
  29. )
  30. topbarmenu.add(/** 分割线 **/);
  31. topbarmenu.add(
  32.         "关于",
  33.         function(id){
  34.                         mainForm.msgbox("关于!")
  35.         }
  36. )
  37. /*}}*/

  38. /*菜单按钮{{*/
  39. //菜单按钮
  40. mainForm.topmenu.skin(
  41.         color = {
  42.                 hover = 0xFFFF0000;
  43.         }
  44. )
  45. mainForm.topmenu.oncommand = function(id,event){
  46.         topbarmenu.popup();
  47. }
  48. /*}}*/

  49. /*关闭按钮{{*/
  50. //关闭按钮
  51. mainForm.topclose.skin(
  52.         color = {
  53.                 hover = 0xFFFF0000;
  54.         }
  55. )
  56. mainForm.topclose.oncommand = function(id,event){
  57.         mainForm.close();
  58. }
  59. /*}}*/

  60. //设置继承重叠响应通知
  61. mainForm.topclose.setParent( mainForm.topbar );
  62. mainForm.topmenu.setParent( mainForm.topbar );

  63. //mainForm.hitmax();
  64. //无边框后禁止最大化覆盖任务栏
  65. import win.ui.minmax;
  66. win.ui.minmax(mainForm);

  67. //下面的代码为窗体添加可拖动改变大小的边框
  68. import win.ui.resizeBorder;
  69. win.ui.resizeBorder( mainForm );

  70. mainForm.transparent(120);
  71. //win.setParent( mainForm.hwnd,  )
  72. //mainForm.setPos(0,0);

  73. var frmChild,wb = mainForm.loadForm("\res\listviewForm.aardio");
  74. frmChild.show();




  75. mainForm.enableDpiScaling();
  76. mainForm.show();



  77. return win.loopMessage();
复制代码

list界面:
  1. import win.ui;
  2. import gdip.fontAwesome;
  3. import win.ui.menu;
  4. /*DSG{{*/
  5. var winform = win.form(text="aardio form";right=192;bottom=485;bgcolor=12213772;border="none";parent=...)
  6. winform.add(
  7. listview={cls="listview";left=1;top=39;right=192;bottom=485;db=1;dl=1;dr=1;dt=1;edge=1;mode="icon";vscroll=1;z=3};
  8. topbar={cls="plus";text="文件夹";left=0;top=0;right=193;bottom=39;align="left";bgcolor=8929538;clipBk=false;color=16777215;dl=1;dr=1;dt=1;font=LOGFONT(name='微软雅黑';h=-19);notify=1;paddingLeft=10;z=1};
  9. topmenu={cls="plus";text='\uF0DD';left=154;top=0;right=193;bottom=39;bgcolor=8929538;color=16777215;dr=1;dt=1;font=LOGFONT(name='FontAwesome';h=-24);notify=1;paddingBottom=8;transparent=1;z=2}
  10. )
  11. /*}}*/

  12. /*顶菜单{{*/
  13. var topbarmenu = win.ui.popmenu(winform);
  14. topbarmenu.addTable( {
  15.         { "收起格子";  function(id){
  16.                 winform.msgbox("收起格子")
  17.         } };
  18.         { "显示方式";{
  19.                                         {
  20.                                                 "图标";        function(id){
  21.                                                         winform.msgbox("图标")
  22.                                                 }
  23.                                                
  24.                                         };
  25.                                         {
  26.                                                 "列表";        function(id){
  27.                                                         winform.msgbox("列表")
  28.                                                 }
  29.                                                
  30.                                         }
  31.                                 }
  32.        
  33.           };
  34.          { "排序方式";{
  35.                                         {
  36.                                                 "名称";        function(id){
  37.                                                         winform.msgbox("名称")
  38.                                                 }
  39.                                                
  40.                                         };
  41.                                         {
  42.                                                 "大小";        function(id){
  43.                                                         winform.msgbox("大小")
  44.                                                 }
  45.                                                
  46.                                         };
  47.                                         {
  48.                                                 "类型";        function(id){
  49.                                                         winform.msgbox("类型")
  50.                                                 }
  51.                                                
  52.                                         };
  53.                                         {
  54.                                                 "修改时间";        function(id){
  55.                                                         winform.msgbox("修改时间")
  56.                                                 }
  57.                                                
  58.                                         }
  59.                                 };
  60.        
  61.           };
  62.         { "重命名";  function(id){
  63.                         winform.msgbox("重命名")
  64.         } };
  65.         { "移除格子";  function(id){
  66.                         winform.msgbox("移除格子");
  67.                         winform.close();
  68.         } };
  69.           
  70. } )
  71. /*}}*/

  72. /*顶部导航{{*/
  73. winform.topbar.wndproc = function(hwnd,message,wParam,lParam){
  74.         select(message) {
  75.                 case 0x201/*_WM_LBUTTONDOWN*/ {
  76.                         winform.hitCaption();
  77.                 }
  78.         }
  79.         //无返回值则继续调用默认回调函数
  80. }


  81. winform.topmenu.skin(
  82.         color = {
  83.                 hover = 0xFFFF0000;
  84.         }
  85. )
  86. winform.topmenu.oncommand = function(id,event){
  87.         topbarmenu.popup();
  88. }
  89. //重叠响应通知
  90. winform.topmenu.setParent(winform.topbar);
  91. /*}}*/



  92. import fsys;
  93. import fsys.lnk;
  94. import fsys.info;
  95. //获取系统图标列表
  96. import win.imageList;
  97. shImageList = win.imageList.shell( 0/*_SHIL_LARGE*/  )
  98. winform.listview.setImageList( shImageList,0/*_LVSIL_NORMAL*/ )

  99. var lnk = fsys.lnk();
  100. fsys.enum( fsys.getSpecial(0 /*_CSIDL_DESKTOP*/ ) , "*.lnk",
  101.         function(dir,filename,fullpath,findData){
  102.                 if(filename){
  103.                    lnk.load(fullpath);
  104.                    //console.log("快捷方式:"+filename, "实际路径:"+lnk.path )
  105.                    var sfi = fsys.info.get(lnk.path, 0x4000/*_SHGFI_SYSICONINDEX*/ | 0x200/*_SHGFI_DISPLAYNAME*/)
  106.                    //显示图标
  107.                                         winform.listview.addItem( {
  108.                                                 text = filename;//sfi.szDisplayName;
  109.                                                 iImage = sfi.iIcon;
  110.                                         } )
  111.                 }
  112.         },false
  113. );


  114. winform.transparent(120);

  115. /*
  116. //添加阴影边框
  117. import win.ui.shadow;
  118. win.ui.shadow( winform,,10);
  119.   
  120. */
  121. //下面的代码为窗体添加可拖动改变大小的边框
  122. import win.ui.resizeBorder;
  123. win.ui.resizeBorder( winform );

  124. //无边框后禁止最大化覆盖任务栏
  125. import win.ui.minmax;
  126. win.ui.minmax(winform);

  127. winform.enableDpiScaling();
  128. winform.show();

  129. win.loopMessage();
  130. return winform;
复制代码

最新评论

Jacen.He 发表于 2017-10-29 19:05:05
试了一下能把传统控件玩成这样已经很厉害了,感谢分享代码
Danboy 发表于 2017-10-29 21:04:21
音速启动和Rolan也是htmllayout写的?
iaauto 发表于 2017-10-30 14:08:28
Danboy 发表于 2017-10-29 21:04
音速启动和Rolan也是htmllayout写的?

Rolan是迅雷的界面库
liubing19860405 发表于 2017-10-30 19:10:05
很多不会的东西,在这找到方法!谢谢

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-7-18 09:04 , Processed in 0.062500 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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