//simpleWindow2 无最大化标题栏 import win.ui.shadow; import win.ui.ctrl.plus; namespace win.ui; class simpleWindow2{ ctor( winform,fontSize,width=33,height=27,marginRight=0,marginTop=0){{ this.targetForm = winform._parentForm || winform; var ws = ..win.getStyle(this.targetForm.hwnd); var font = LOGFONT(name='Marlett';charset=2/*_SYMBOL_CHARSET*/;h=fontSize); winform.add( titlebarClose={cls="plus";text="r";top=marginTop;height=height;width=width;marginRight=marginRight;dr=1;dt=1;font=font;z=3}; titlebar={cls="static";text="";left=0;top=marginTop;marginRight=width*3+marginRight;bottom=height*2;dl=1;dr=1;dt=1;notify=1;center=1;clip=1;transparent=1;z=4} ) winform.titlebarClose.oncommand = function(id,event){ this.targetForm.close() }; if( ws & 0x20000/*_WS_MINIMIZEBOX*/ ){ winform.add( titlebarMin={cls="plus";text="0";top=marginTop;height=height;width=width;marginRight=width+marginRight;dr=1;dt=1;font=font;z=2}; ) winform.titlebarMin.oncommand = function(id,event){ this.targetForm.hitMin() } } winform.titlebar.wndproc = { [ 0x201/*_WM_LBUTTONDOWN*/ ] = function(hwnd,message,wParam,lParam){ this.targetForm.hitCaption(); } } if( ! ..win.getStyleEx(this.targetForm.hwnd,0x80000/*_WS_EX_LAYERED*/) ){ ..win.ui.shadow( this.targetForm,65,10); } ..win.setPos(winform.titlebar.hwnd,,,,,0x1/*_HWND_BOTTOM*/); this._form = winform; this.titlebarClose = winform.titlebarClose; this.titlebarMin = winform.titlebarMin; this.titlebar = winform.titlebar; this.btnClose = this.titlebarClose;//@Deprecated this.btnMin = this.titlebarMin;//@Deprecated winform.setTimeout( function(){ if(! this.$style ){ var testCtrl = !this.titlebarClose[["(skin-setting)"]] ? this.titlebarClose : this.titlebarMin; if(!testCtrl) return; if(testCtrl[["(skin-setting)"]]) return; testCtrl.predraw(); var rcCtrl = testCtrl.getClientRect(); var bgcolor = ..gdi.getPixel(rcCtrl.left,rcCtrl.top + rcCtrl.height()/2,testCtrl.hwnd); var r,g,b = bgcolor & 0xFF, bgcolor>> 8 & 0xFF, bgcolor>> 16 & 0xFF; var y = 0.299 * r + 0.587 * g + 0.114 * b;//YUV/YCbCr 亮度公式 var style = y > 180 ? darkStyle : lightStyle; if( this.titlebarMin && !this.titlebarMin[["(skin-setting)"]]) this.titlebarMin.skin(style); if( !this.titlebarClose[["(skin-setting)"]]) this.titlebarClose.skin(style); } },100); }}; skin = function(style){ this.$style = style; if(this.titlebarMin) this.titlebarMin.skin(style); this.titlebarClose.skin(style); }; } namespace simpleWindow2{ darkStyle = { background = { hover = 0x22AAAAAA; active = 0x44888888; default = 0x00FFFFFF; } color = { hover = 0xFF000000; active = 0xFFFFFFFF; default = 0xFF555555; } } lightStyle = { background = { hover = 0xff99ffcc; active = 0xffff6666; default = 0x00000000; } color = { hover = 0xff666666; active = 0xffffffff; default = 0xffffffff; } } } /**intellisense() win.ui.simpleWindow2 = 为无边框窗口添加窗口标题栏与边框。\n窗口标题栏内添加最小化、关闭窗口等按钮,\n并自动添加窗口阴影,不创建最大化按钮,不允许拖动边框改变窗体大小。 win.ui.simpleWindow2(.(窗体对象,字体大小,按钮宽度,按钮高度,右边距,上边距) = 参为参数@1指定的无边框窗口添加简单的标题栏,\n标题栏是透明的,建议在标题栏拖一个bk控件上去设置合适的背景色,\n标题栏是透明的,建议在标题栏拖一个bk控件上去设置合适的背景色,\n可选使用参数@2指定标题栏按钮字体大小,以像素为单位,\n可选用参数@3,@4指定关闭等按钮宽度,高度 win.ui.simpleWindow2() = !win_ui_simpleWindow2. !win_ui_simpleWindow2.skin(style) = @.skin( \n background = { \n hover = 0x22AAAAAA; \n active = 0x44888888; \n default = 0x00FFFFFF; \n }\n color = { \n hover = 0xFF000000; \n active = 0xFFFFFFFF; \n default = 0xFF555555;__/*自定义窗口标题栏关闭、最大化、最小化按钮样式,\n参数表用法与 plus 控件的 skin 函数相同。\n如果未显式调用 skin 函数将在 100 毫秒后自动设置样式。*/\n }\n) !win_ui_simpleWindow2.titlebarMin = 标题栏最小化按钮,plus控件。\n如果窗体设置了禁用最小化按钮则不创建此控件。\n!ui_ctrl_plus. !win_ui_simpleWindow2.titlebarClose = 标题栏关闭按钮,plus控件。\n调用此控件的 skin 函数可单独修改关闭按钮的样式,\n所有界面组件的 skin 函数的都是用于 plus 控件,用法都一样。\n!ui_ctrl_plus. !win_ui_simpleWindow2.titlebar = 标题栏,static控件\n!static. !win_ui_simpleWindow2._form = 标题栏所在窗口\n!winform. !win_ui_simpleWindow2.targetForm = 要控制的目标窗口\n!winform. end intellisense**/