精华内容
下载资源
问答
  • 本来这个按钮完全是按照Windows应用程序UI设计规范而设计,也就是说所有的窗口都应该有一个地方让用户可以关闭这个窗口。但是有用户提出来不想要这个“关闭”按钮。既然用户有这种需要,那么我们就想办法实现...
  • 如何去掉浮动工具中的“关闭”按钮 转自 http://www.vckbase.com/index.php/wv/359 在C++/MFC框架应用程序里,当浮动工具条被拖离主窗口后,一般都有一个“关闭”按钮,如图一所示: 图一  ...

    如何去掉浮动工具条中的“关闭”按钮


    转自 http://www.vckbase.com/index.php/wv/359



    在C++/MFC框架应用程序里,当浮动工具条被拖离主窗口后,一般都有一个“关闭”按钮,如图一所示:


    图一 


    本来这个按钮完全是按照Windows应用程序的UI设计规范而设计的,也就是说所有的窗口都应该有一个地方让用户可以关闭这个窗口。但是有的用户提出来不想要这个“关闭”按钮。既然用户有这种需要,那么我们就想办法实现吧......
    首先,我们来确定实现的思路,因为我们要实现的功能与工具条有关,所以涉及的类肯定与 CToolBar有关。其次,为了判断工具条浮动后“关闭”按钮的状态,我们需要一个表示状态的成员变量;第三,实现工具条的浮动特性,需要对工具条窗口的ON_WM_WINDOWPOSCHANGED消息进行处理。这个消息负责CToolBar窗口大小、位置或Z坐标的变化,这里为什么不用WM_SIZE/OnSize来处理窗口大小的改变呢?因为仅当涉及窗口大小改变而不涉及窗口位置也改变时才这样调用,所以当浮动工具条时不一定每次都调用处理WM_SIZE/OnSize。我们可以利用 CControlBar 基类的m_pDockBar成员来调用GetParent()以获取工具条的父窗口。从而改变父窗口的式样――屏蔽系统菜单――来达到我们的目的――去掉“关闭”按钮。
    有了思路,下面来看看具体的实现代码,我们先从CToolBar派生一个新类CToolBarEx,因为我们的目的是在浮动工具条时去掉“关闭”按钮,所以仅仅判断工具条是否浮动就可以了,这一点用CControlBar类的属性判断函数可以做到:
    1.BOOL IsFloating() const;
    在新类中添加一个成员变量,用它表示“关闭”按钮的状态:
    1.BOOL m_bMenuRemoved;
    当我们去掉主框架的系统菜单属性时,它的值为TRUE。
    接着,我们需要一个m_pDockBar成员父窗口的指针,以便检查它是否确实为CDockFrameWnd,此时我们用到了 m_pDockBar,用它来判断父窗口类型,注意保证它是一个有效指针。这样我们就可以放心地从CToolBar中去掉系统菜单。下面是处理ON_WM_WINDOWPOSCHANGED消息的代码:

    void CToolBarEx::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) 
    {
    	CToolBar::OnWindowPosChanged(lpwndpos);		
    	// should only be called once, when floated.
    	if( IsFloating() )
    	{
    		if( m_pDockBar && !m_bMenuRemoved )
    		{
    			CWnd* pParent = m_pDockBar->GetParent();
    			if( pParent->IsKindOf(RUNTIME_CLASS(CMiniFrameWnd)))
    			{
    				pParent->ModifyStyle( WS_SYSMENU, 0, 0 );
    				m_bMenuRemoved = TRUE;
    			}
    		}
    	}
    	else if( m_bMenuRemoved ) {
    		m_bMenuRemoved = FALSE;
    	}
    }
    



    下图是最终的运行结果图:

     

    图二


    展开全文
  • 运行之后在窗口右上角最小化、最大化、关闭按钮左面增加几个很有用的按钮,可以控制任何窗口的大小、置顶、透明度等许多 Windows 没有直接提供设置。软件占用内存不多,可以提高使用 Windows 工作效率。 ...
  • Windows Resizer 是一个用来修改窗口属性小程序。程序小巧实用,包含英文程序,方便在EWin运行,完全绿色软件,源代码公开且免费,快来下载体验吧。 软件功能: 查找控件句柄; 设置窗口大小; 更改窗口的标题...
  • 工具存放着常用操作按钮Windows 7 中工具栏上的按钮会根据查看内容不同而有所变化但一般包含组织和视图等按钮 通过组织按钮可以实现文件夹剪切复制粘贴删除重命名等操作 通过视图按钮可以调整图标...
  • 打开airtest官网发现有三种方式可以连接windows应用窗口分别对应三个按钮 1-选择游戏画面:通过选择对应应用窗口将程序嵌入airtestIDE进行操作 选取后会嵌入到IDE 2-搜索窗口 点击对应应用窗口的名称进行连接

    今天在做回归测试的时候发现一条用例是查询数据库数据,于是思考如何使用工具自动化的方式解决该问题
    首先想到的是jmeter的jdbc request配置大概如下
    在这里插入图片描述
    在这里插入图片描述
    因为听说airtest也可以进行windows操作,随后开始研究如何使用airtest执行windows操作
    打开airtest官网发现有三种方式可以连接windows应用窗口分别对应三个按钮
    在这里插入图片描述
    1-选择游戏画面:通过选择对应的应用窗口将程序嵌入airtestIDE进行操作
    在这里插入图片描述
    选取后会嵌入到IDE中
    在这里插入图片描述
    2-搜索窗口
    点击对应应用窗口的名称进行连接即可
    在这里插入图片描述
    3.点击图标使用windows桌面直接操作

    断开windows应用窗口的方式也非常简单,点击下图图标选择断开连接即可
    在这里插入图片描述
    整个操作过程中共碰到2个问题
    1.airtest操作windwos应用时,对于应用弹出的窗口识别度不高
    在这里插入图片描述
    这种图标虽小,但是色差比较明显的图标可以清晰识别,但是对于弹框或者悬浮菜单无法可靠识别
    在这里插入图片描述
    在这里插入图片描述
    为了解决问题,同时考虑到windows窗口对于鼠标键盘的可替代性,于是选择使用模拟键盘的方式解决上述问题
    这里引出第二个问题,键盘操作底层是基于pywinauto开发的,所以按键略有不同,具体可参考
    {SCROLLLOCK}, {VK_SPACE}, {VK_LSHIFT}, {VK_PAUSE}, {VK_MODECHANGE},
    {BACK}, {VK_HOME}, {F23}, {F22}, {F21}, {F20}, {VK_HANGEUL}, {VK_KANJI},
    {VK_RIGHT}, {BS}, {HOME}, {VK_F4}, {VK_ACCEPT}, {VK_F18}, {VK_SNAPSHOT},
    {VK_PA1}, {VK_NONAME}, {VK_LCONTROL}, {ZOOM}, {VK_ATTN}, {VK_F10}, {VK_F22},
    {VK_F23}, {VK_F20}, {VK_F21}, {VK_SCROLL}, {TAB}, {VK_F11}, {VK_END},
    {LEFT}, {VK_UP}, {NUMLOCK}, {VK_APPS}, {PGUP}, {VK_F8}, {VK_CONTROL},
    {VK_LEFT}, {PRTSC}, {VK_NUMPAD4}, {CAPSLOCK}, {VK_CONVERT}, {VK_PROCESSKEY},
    {ENTER}, {VK_SEPARATOR}, {VK_RWIN}, {VK_LMENU}, {VK_NEXT}, {F1}, {F2},
    {F3}, {F4}, {F5}, {F6}, {F7}, {F8}, {F9}, {VK_ADD}, {VK_RCONTROL},
    {VK_RETURN}, {BREAK}, {VK_NUMPAD9}, {VK_NUMPAD8}, {RWIN}, {VK_KANA},
    {PGDN}, {VK_NUMPAD3}, {DEL}, {VK_NUMPAD1}, {VK_NUMPAD0}, {VK_NUMPAD7},
    {VK_NUMPAD6}, {VK_NUMPAD5}, {DELETE}, {VK_PRIOR}, {VK_SUBTRACT}, {HELP},
    {VK_PRINT}, {VK_BACK}, {CAP}, {VK_RBUTTON}, {VK_RSHIFT}, {VK_LWIN}, {DOWN},
    {VK_HELP}, {VK_NONCONVERT}, {BACKSPACE}, {VK_SELECT}, {VK_TAB}, {VK_HANJA},
    {VK_NUMPAD2}, {INSERT}, {VK_F9}, {VK_DECIMAL}, {VK_FINAL}, {VK_EXSEL},
    {RMENU}, {VK_F3}, {VK_F2}, {VK_F1}, {VK_F7}, {VK_F6}, {VK_F5}, {VK_CRSEL},
    {VK_SHIFT}, {VK_EREOF}, {VK_CANCEL}, {VK_DELETE}, {VK_HANGUL}, {VK_MBUTTON},
    {VK_NUMLOCK}, {VK_CLEAR}, {END}, {VK_MENU}, {SPACE}, {BKSP}, {VK_INSERT},
    {F18}, {F19}, {ESC}, {VK_MULTIPLY}, {F12}, {F13}, {F10}, {F11}, {F16},
    {F17}, {F14}, {F15}, {F24}, {RIGHT}, {VK_F24}, {VK_CAPITAL}, {VK_LBUTTON},
    {VK_OEM_CLEAR}, {VK_ESCAPE}, {UP}, {VK_DIVIDE}, {INS}, {VK_JUNJA},
    {VK_F19}, {VK_EXECUTE}, {VK_PLAY}, {VK_RMENU}, {VK_F13}, {VK_F12}, {LWIN},
    {VK_DOWN}, {VK_F17}, {VK_F16}, {VK_F15}, {VK_F14}

    https://www.kancloud.cn/gnefnuy/pywinauto_doc/1193047

    同时对于修饰符的使用会在airtest的text方法中被自动过滤,如下语句
    select count(CAID) as a from hk where LOID in (‘0070235002350’,‘0070161401614’,‘0070161801618’)
    在使用text方法后会被输入成 selectcountCAIDasafromhkwhereLOIDin’0070235002350’,‘0070161401614’,‘0070161801618’
    仔细观察发现空格和()不见了
    此处如需要输入正确语句,需要将所有空格替换为{SPACE},换行替换为{ENTER},而将()通过加{}的方式解决,{}在这里有点类似Java中的\转义符
    替换后select{SPACE}count{(}CAID{)}{SPACE}as{SPACE}a{ENTER}from{SPACE}hk{ENTER}where{SPACE}LOID{SPACE}in{SPACE}{(}‘0070235002350’,‘0070161401614’,‘0070161801618’{)}
    于是,问题解决了,现在可以通过airtest做windows应用的测试了

    整个过程中总结为以下三点:
    1.airtest对于windows截图的解析还不够稳定,时常出现截图可以识别,再次运行就无法识别的情况
    2.airtest对于windows的应用操作存在一定局限性,建议使用第一或第二种方式更为方便
    3.airtest对于windows应用的自动打开和使用没有实现(这里没有深入研究,个人猜测是可以通过命令行实现的)
    最后附上大致图片,可以看到大致操作方式
    在这里插入图片描述

    展开全文
  • 只能在windows 10系统中运行,可以协助您修改Win10系统中的一些个人设置,需要的朋友赶紧下载使用 windows 10 的个人修改工具功能: 1、可以隐藏任务栏上 搜索(Search)、虚拟桌面(Task view)按钮 2、修改Win E不...
  • 在桌面之间分配窗口可以在窗口启动时自动完成或手动完成:通过特殊“移动到虚拟桌面”按钮标题按钮/窗口菜单项或通过“移动到下一个桌面”/“移动到以前桌面”热键。 自己选择最好选择! 自定义每个虚拟桌面 ...
  • 在桌面之间分配窗口可以在窗口启动时自动完成或手动完成:通过特殊“移动到虚拟桌面”按钮标题按钮/窗口菜单项或通过“移动到下一个桌面”/“移动到以前桌面”热键。 自己选择最好选择! 自定义每个虚拟桌面 ...
  • 2013-10-17 仍然使用上篇项目。 实现作用为: 通过菜单栏,或工具栏,或按钮,实现图片框中图像显示和隐藏。 1. 更改窗体大小 ...打开TriPaint.cs[设计]文件,选中窗体,在右下角属性窗口中,找到Size

    binzhouweichao@163.com

    2013-10-17

    仍然使用上篇的项目。

    实现的作用为:

    通过菜单栏,或工具栏,或按钮,实现图片框中图像的显示和隐藏。


    1. 更改窗体大小

    由于添加的控件比较多,默认的窗体300*300肯定不够用的,需要将窗体大小调大。现更改为800*600。

    打开TriPaint.cs[设计]文件,选中窗体,在右下角的属性窗口中,找到Size属性,将值改为:800, 600。


    2. 添加菜单栏MenuStrip控件

    选中窗体,打开左侧的工具箱,找到MenuStrip控件,点击鼠标左键并拖到窗体中。

    菜单栏的默认位置为窗体顶部,默认宽度为24,长度为铺满窗体。第一个添加的MenuStrip控件的名称默认为menuStrip1。在右下角的属性窗口中,可以找到具体的数据,如:

    位置Location为:0, 0。也就是说,menuStrip1的右上角(0, 0)位于窗体的右上角(0, 0)位置。

    长宽Size为:784, 24。也就是说,menuStrip1的长为784,正好是窗体内容纳控件的最大长度,宽度为24,应该是MenuStrip控件默认的宽度。

    其他属性如Margin、Padding默认即可。


    3. 添加工具栏ToolStrip控件

    同上,在左侧的工具箱中找到ToolStrip控件并拖到窗体中。

    工具栏默认位置为菜单栏的下方,与菜单栏边界吻合。默认宽度为25,长度为窗体内控件最大长度,默认名称为toolStrip1。属性中具体数据:

    位置Location:0, 24。即紧贴菜单栏。

    长宽Size为:784, 25。即长度为784,宽度为25。

    其他属性默认。


    4. 添加状态栏StatusStrip控件

    同上,在左侧工具箱中找到StatusStrip控件并拖动到窗体中。

    菜单栏默认位置为窗体最下方。默认宽度22,长度为窗体内控件最大长度,默认名称为statusStrip1。属性中具体数据:

    位置Location为:0, 540。也就是状态栏的左上角位于窗体的(0, 540)处。

    大小Size为:784, 22。即长度784,宽度22。即最下边界为540+22 = 562处。

    整个窗体高600,去掉标题栏和边框,大约有562的高度用来容纳控件。

    其他属性默认。


    5. 调整pictureBox1的位置

    由于原先pictureBox1的位置为(0, 0),加上菜单栏和工具栏后,上面一部分被覆盖掉了,所以重新调整一下位置,让pictureBox1的上边界紧贴工具栏。

    通过计算菜单栏和工具栏的高度和,可得图片框的上边界为24+25 = 49,更改图片框的属性:

    位置Location为:0, 49。

    其他属性不变。


    6. 添加按钮Button控件

    打开左侧工具箱,找到Button控件,鼠标左键拖到窗体内右侧的空白处。位置随意。默认大小。默认名称为button1。

    再添加一个Button控件,位置随意,默认大小,默认名称为button2。

    更改按钮的显示文本。

    选中button1控件,在右下方的属性窗口中,找到Text属性,更改其值为:Show。

    选中button2控件,在右下方的属性窗口中,找到Text属性,更改其值为:Hide。


    上述完成后,运行的效果图为:



    7. 完善功能

    为实现下述功能,需要对pictureBox1.Image反复赋值,其图像为Bitmap b。前面的文件中,将b作为TriPaint_Load()函数的局部变量,为了实现在其他函数中反复调用,需要将其保存为全局变量。这样,在GlobalVars.cs中,把Bitmap b添加进去,代码如下:

            //位图b,为pictureBox1.Image使用的值
            private static Bitmap b = new Bitmap(250, 250);
            public static Bitmap B
            {
                get { return b; }
                set { b = value; }
            }

    注:由于pictureBox1为主窗体TriPaint的私有成员,其他类无法访问,所以初始化位图大小时用了具体的数值。若改动了pictureBox1的大小,要记得在此处也将大小改过来。。如果想要把pictureBox1的长宽属性改为public,可以使用委托的方法,或者在主窗口中新建一个类,将这个属性设为public。

    参考:

    http://social.microsoft.com/Forums/zh-CN/e7914cf9-7b5e-4508-a85c-8500f104d596/cform

    http://zhidao.baidu.com/link?url=Boy2Ece-mWVNEnLFggS_fykAfUtBXSuwMXilqSU2hcmNND5aSOeDlaoRKbs-MWnyR-MfTniFcVdZBCDY1qlcXK


    这样,GlobalVars.cs的最终代码为:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing;
    
    namespace TriPaint_20131013
    {
        //修改这里
        public static class GlobalVars
        {
            //类似于#define宏定义,设置三个常量
            public const int POINTCNT = 50;//点数,POINTCNT <= XMAX - XMIN
            public const int XMAX = 200;//X轴最大值,也就是2π对应的值  
            public const int XMIN = 0;//X轴最小值
            public const double times = (XMAX - XMIN) / (2 * Math.PI - 0);//放大倍数
            public const double xInterval = (XMAX - XMIN) / (POINTCNT - 1);//i增量对应的data.X增量
            
            //类似于全局变量,可以重新赋值
            //坐标点变量
            private static Point[] data = new Point[POINTCNT];
            public static Point[] Data
            {
                get { return data; }
                set { data = value; }
            }
    
            //位图b,为pictureBox1.Image使用的值
            private static Bitmap b = new Bitmap(250, 250);
            public static Bitmap B
            {
                get { return b; }
                set { b = value; }
            }
        }
    }
    

    修改后,需要在TriPaint.cs中,把关于b的声明去掉,对创建g的代码进行修改:

                Graphics g = Graphics.FromImage(GlobalVars.B);//图像画布添加绘图

    另外,因为添加了按钮(菜单、工具)等功能,默认情况下,图片框中不显示绘制的图像,所以把给pictureBox1.Image初始赋值的那一条语句注释掉,即:

                //pictureBox1.Image = b;//图像框的图像为上述绘图生成的图像


    7.1 完善按钮功能

    a. 完善按钮button1的显示图片功能

    选中button1,也就是Show按钮,双击,则会实现:在主窗体的类(即TriPaint类)中添加button1_Click()事件函数,并将Show按钮的Click事件与函数button1_Click()关联起来。

    在此函数中添加如下代码:

            private void button1_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = GlobalVars.B;//显示图像b
                pictureBox1.Refresh();//刷新图片框
            }

    因为会返回修改Image的值,所以每个事件函数都要对pictureBox1刷新一下。


    b. 完善按钮button2的隐藏图片功能

    同上,选中button2,即Hide按钮,双击,主窗体类中自动添加button2_Click()事件函数。在此函数中添加如下代码:

            private void button2_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = null;//对Image的值置空,刷新后图像就消失了
                pictureBox1.Refresh();
            }

    7.2 完善菜单栏功能

    首先要添加菜单栏上的菜单。

    打开TriPaint.cs[设计]文件,选中菜单栏,会显示一个“请在此键入”的文本编辑框。


    在此文本框中输入“Show”,这样就向右弹出第二个一级菜单的文本编辑框,向下弹出此菜单的二级菜单文本输入框。


    由于我们这个例子的功能比较简单,只简单演示即可,不建立二级菜单,只建立两个一级菜单即可。

    在右方创建“Hide”菜单。



    a. 为Show菜单添加显示图像功能

    同按钮控件,双击Show菜单,即可在TriPaint中生成showToolStripMenuItem_Click()事件函数,自动关联Show菜单的Click事件。

    在此函数中添加同button1相同的代码:(直接复制即可)

            private void showToolStripMenuItem_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = GlobalVars.B;//显示图像b
                pictureBox1.Refresh();//刷新图片框
            }

    b. 为Hide菜单添加隐藏图像功能

    同上,双击Hide菜单,自动生成hideToolStripMenuItem_Click()函数,自动关联Hide菜单的Click事件,添加代码如下:

            private void hideToolStripMenuItem_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = null;//对Image的值置空,刷新后图像就消失了
                pictureBox1.Refresh();
            }

    注:可以把显示和隐藏做成TriPaint类的两个函数,然后在每个控件的事件函数中直接调用。此处由于代码比较短,可以直接这么写。

    如前面所提到的,如果按照全局变量的思想,在外部新建一个类,然后定义两个显示和隐藏图像的方法,也是可以的。但是由于控件属性为TriPaint类的私有成员,所以需要在类TriPaint中对Image属性进行public。由于控件的调用保护机制,使得外部函数只能通过委托的方式响应控件事件。

    这些可以从上文中的两个参考链接中找到实现的方法。下节可能会具体介绍一下。


    7.3 完善工具栏功能

    同上面的菜单栏。在TriPaint.cs[设计]文件中,选中工具栏toolStrip1。


    工具栏有多种显示样式。默认的第一种为图片,其他种类可以通过点击向下的小三角箭头选择,有Button、Label等等。我们选择默认的图片工具显示(鼠标直接点那个图标即可),这样连续生成两个,一字排开:


    要显示工具图片可以自定义,选中第一个工具图片,在右下方的属性窗口中,找到Image属性,通过右侧的浏览框选择想要更改的图片。

    图片大小默认为16*16,且为固定大小,其他图片无论大小都会缩放成16*16来显示。这里可以自己截两个桌面图标,然后挨个替换下来即可。(我截的是War3和qq的图标)



    a. 添加第一个工具的显示图像功能

    双击第一个工具的图标,会在TriPaint类中自动生成toolStripButton1_Click()事件函数,自动关联第一个工具的Click事件。添加显示图像代码:

            private void toolStripButton1_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = GlobalVars.B;//显示图像b
                pictureBox1.Refresh();//刷新图片框
            }

    b. 添加第二个工具的隐藏图像功能

    同上,双击第二个工具的图标,自动生成toolStripButton2_Click()事件函数,自动关联第二个工具的Click事件。添加代码如下:

            private void toolStripButton2_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = null;//对Image的值置空,刷新后图像就消失了
                pictureBox1.Refresh();
            }

    7.4 完善状态栏功能

    这里只做简单的演示,所以状态栏只用一行文本显示图像框中的图像是显示还是隐藏即可。

    在TriPaint.cs[设计]文件中,选中最下方的状态栏statusStrip1,点击小三角,选择第一个StatusLabel。


    此StatusLabel用于显示“Show”或“Hide”文本。默认下,此处填充的文本为toolStripStatusLabel1,并且此标签控件的名称也是toolStripStatusLabel1。需要我们手动修改默认显示的文本(控件名称不做修改),选中此StatusLabel,在右下方的属性框中,找到Text属性。因为默认情况下,图像是隐藏的,所以将此标签的初始文本设置为“Hide”,所以把Text的值改为Hide。(此时这个控件的名称仍旧叫做toolStripStatusLabel1,下面在程序中修改此标签显示的文本时会用到)


    状态栏所需的工作,实在图片框中的图片显示或隐藏发生更改后,显示当前的图像状态。所以控制状态栏显示内容的,是pictureBox1的Paint事件。

    在TriPaint.cs[设计]中,选中pictureBox1,在右下方的属性窗口中,点击事件视图,找到Paint属性:


    双击Paint属性,会在TriPaint类中自动生成pictureBox1_Paint()事件函数,并自动关联pictureBox1的Paint事件。在此函数中添加代码:

            private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                if (pictureBox1.Image == null)//如果图像为空
                {
                    toolStripStatusLabel1.Text = "Hide";//则显示Hide
                }
                else//否则,即图像不为空,有具体的BMP位图
                {
                    toolStripStatusLabel1.Text = "Show";//则显示Show
                }
            }

    至此,修改结束。

    TriPaint.cs最终代码为:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace TriPaint_20131013
    {
        public partial class TriPaint : Form
        {
    
    
            public TriPaint()
            {
                InitializeComponent();
                //在这里添加代码
                //对数据进行处理
                for (int i = 0; i < GlobalVars.POINTCNT; i++)
                {
                    GlobalVars.Data[i].X = (int)(i * GlobalVars.xInterval);//i对应的data.X
                    GlobalVars.Data[i].Y = (int)(GlobalVars.times * Math.Sin(GlobalVars.Data[i].X / GlobalVars.times));//sin函数求值
                    GlobalVars.Data[i].Y = (int)(GlobalVars.Data[i].Y + GlobalVars.times * 1);//Y轴向正向平移1,即1*times,令最高点(也就是3π/2对应的-1点)的值为0
                }
    
            }
    
            private void TriPaint_Load(object sender, EventArgs e)
            {
                //Graphics g = this.CreateGraphics();//画板
                //this.Show();//显示
                //Bitmap b = new Bitmap(pictureBox1.Width, pictureBox1.Height);//新建图像画布
                Graphics g = Graphics.FromImage(GlobalVars.B);//图像画布添加绘图
    
                //坐标系平移镜像
                g.TranslateTransform(0, 250);//向y正向平移300
                g.ScaleTransform(1, -1);//关于x轴镜像
    
                Pen p = new Pen(Color.Blue, 1);//画笔
    
                g.DrawLines(p, GlobalVars.Data);//多点绘图,直线连接
    
                //pictureBox1.Image = b;//图像框的图像为上述绘图生成的图像
    
                //释放绘图所占用资源
                p.Dispose();
                g.Dispose();
                //b.Dispose();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = GlobalVars.B;//显示图像b
                pictureBox1.Refresh();//刷新图片框
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = null;//对Image的值置空,刷新后图像就消失了
                pictureBox1.Refresh();
            }
    
            private void showToolStripMenuItem_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = GlobalVars.B;//显示图像b
                pictureBox1.Refresh();//刷新图片框
            }
    
            private void hideToolStripMenuItem_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = null;//对Image的值置空,刷新后图像就消失了
                pictureBox1.Refresh();
            }
    
            private void toolStripButton1_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = GlobalVars.B;//显示图像b
                pictureBox1.Refresh();//刷新图片框
            }
    
            private void toolStripButton2_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = null;//对Image的值置空,刷新后图像就消失了
                pictureBox1.Refresh();
            }
    
            private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                if (pictureBox1.Image == null)//如果图像为空
                {
                    toolStripStatusLabel1.Text = "Hide";//则显示Hide
                }
                else//否则,即图像不为空,有具体的BMP位图
                {
                    toolStripStatusLabel1.Text = "Show";//则显示Show
                }
            }
    
        }
    }

    运行,分别点击Show菜单、工具、按钮和Hide菜单、工具、按钮,查看窗体显示。

    结果为:






    展开全文
  • 比较和选择两个文件夹具有相同名称的图像,然后复制到第三个文件夹的工具窗口的屏幕截图,在左侧显示一个“不良图像”,在右侧显示一个“良好图像”。 首选正确的文件,它将被复制到输出目录。 点击空格以获取...
  • 创建窗口pymel.core.windows.window()此命令用来创建一个窗口,但不会显示窗口显示窗口pymel.core.windows.showWindow()此命令用来显示指定窗口,如果没有指定则显示最近创建的窗口import pymel.core as pm#创建一个...

    创建窗口

    pymel.core.windows.window()

    此命令用来创建一个窗口,但不会显示窗口

    显示窗口

    pymel.core.windows.showWindow()

    此命令用来显示指定窗口,如果没有指定则显示最近创建的窗口

    import pymel.core as pm#创建一个窗口,名字为Renamepm.window(title="Rename")#显示这个窗口pm.showWindow()

    创建表格布局

    pymel.core.windows.rowColumnLayout()

    此命令创建一个表格布局

    创建选择框按钮

    pymel.core.windows.checkBox()

    此命令创建一个选择框

    创建文本标签

    pymel.core.windows.text()

    此命令创建一个文本标签

    创建文本控件

    pymel.core.windows.text()

    此命令创建一个可以输入的文本控件

    import pymel.core as pm#创建一个窗口,名字为Rename,menuBar=True添加一个空菜单pm.window(menuBar=True,title="Rename")#创建一个菜单栏,标签为Editpm.menu(label='Edit')#创建一个子菜单栏,标签为Resetpm.menuItem(label='Reset')#创建help菜单栏,helpMenu=True为此菜单为help菜单,默认都在最右侧pm.menu(label='Help',helpMenu=True)#创建help菜单栏中的子菜单标签为helppm.menuItem(label='Help')#创建一个Preset菜单栏pm.menu(label='Preset')#创建一个表格布局,列数为3列,第一列的长度为16个单位,第二列长度为80,第三列长度为250,第三列会随布局大小变换pm.rowColumnLayout(numberOfColumns=3,columnWidth=[(1, 16),(2, 80),(3, 250)],adjustableColumn=3)#创建一个选择框pm.checkBox()#创建一个文本标签pm.text(label="File_name:")#创建一个可以输入文本的控件pm.textField()#显示这个窗口pm.showWindow()

    d06ee0e544550911cd689a9e205ecbdd.png

    对象重命名

    pymel.core.general.rename()

    重命名选中对象赋予对象唯一名称

    import pymel.core as pm#创建一些物体pm.polySphere()pm.polyCube()pm.polyPlane()#全选pm.select(all=True)#获取已经选中的对象all_obj = pm.selected()#对所有选中对象重命名为aa(现有名称冲突,则将根据提供的名称为对象赋予唯一名称)for old_mdl_transform in all_obj:    pm.rename(old_mdl_transform,'aa')

    创建分离器

    pymel.core.windows.separator()

    创建一个隔离的小部件(更加美观)

    创建布局

    pymel.core.windows.columnLayout()

    创建一个布局,将子级排列在单个列中

    创建按钮

    pymel.core.windows.button()

    创建一个按钮控件

    创建确认对话框

    pymel.core.windows.confirmDialog()

    创建确认对话框

    import pymel.core as pm#定义打开时的命令def on_file_name(*args):    #使后面的文本框可以编辑    pm.textField(file_name,edit=True,editable=True,enable=True)#定义关闭时的命令def off_file_name(*args):    #使后面的文本框不可编辑    pm.textField(file_name,edit=True,editable=False,enable=False)#获取工程文件路径obj_path = pm.sceneName()#尝试获取工程文件名try:    #获得文件名    task_name = obj_path.split('.')[-2].split('/')[-1]#如果超出范围except IndexError:    #创建确认对话框    pm.confirmDialog(        #对话框窗口名字        title='Warning',        #对话框内容        message='''No project file is set!File_name is empty.            ''',        #按钮名字        button='Yes',        defaultButton='Yes',        cancelButton='No',        dismissString='No'        )    task_name = ''#创建一个窗口,名字为Rename,menuBar=True添加一个空菜单pm.window(menuBar=True,title="Rename")#创建一个菜单栏,标签为Editpm.menu(label='Edit')#创建一个子菜单栏,标签为Resetpm.menuItem(label='Reset')#创建help菜单栏,helpMenu=True为此菜单为help菜单,默认都在最右侧pm.menu(label='Help',helpMenu=True)#创建help菜单栏中的子菜单标签为helppm.menuItem(label='Help')#创建一个Preset菜单栏pm.menu(label='Preset')#创建一个表格布局,列数为3列,第一列的长度为16个单位,第二列长度为80,第三列长度为250,第三列会随布局大小变换pm.rowColumnLayout(numberOfColumns=3,columnWidth=[(1, 16),(2, 80),(3, 250)],adjustableColumn=3)#创建分离器pm.separator( height=5, style='in' )pm.separator( height=5, style='in' )pm.separator( height=5, style='in' )#创建一个选择框,打开和关闭执行命令pm.checkBox(label='',onCommand=on_file_name,offCommand=off_file_name)#创建一个文本标签pm.text(label='File_name:',align='left')#创建一个文本的控件,不可选中,不可编辑,默认为工程文件名file_name = pm.textField(text=task_name,editable=False,enable=False)#创建分离器pm.separator( height=20, style='none' )pm.separator( height=20, style='none' )pm.separator( height=20, style='none' )pm.separator( height=30, style='none' )pm.separator( height=30, style='none' )#定义按下去的命令def change_name(*args):    #获取File_name文本名字    new_mdl_transform = pm.textField(file_name, query = True, text = True)    #获取选中的对象    all_obj = pm.selected()    for old_mdl_transform in all_obj:        #更改名字        pm.rename(old_mdl_transform,new_mdl_transform)#在第三列中创建一个布局pm.columnLayout(columnAttach=('both', 50))#在第三列中创建一个按钮为Apply按钮,设置其宽度apply_button = pm.button(label='Apply',width=80)#编辑按钮添加按钮按下去执行的命令pm.button(apply_button, edit=True, command=change_name)#显示这个窗口pm.showWindow()

    选择框可控制输入文本开启关闭

    4ea7488d3545a00aceb7c5ea3ea5dae1.png

    感谢:

    Hal

    Unclechen

    展开全文
  • 无论Windows,还是macOS,都只有固定3个窗口按钮:关闭放大缩小但是,在使用电脑过程窗口的使用场景远不止于这些。例如,调整窗口透明度、窗口对齐、修改窗口尺寸....这些功能,在目前电脑操作系统默认是...
  • 在Visual C++自动生成的MFC框架应用程序,当浮动工具条被拖离主框架窗口后,一般都会在工具条的右上角有一个"关闭"按钮,应该说这个按钮...本实例通过自定一个扩展的工具条类,实现了删除工具条"关闭"按钮的...
  • 在打开的窗口中输入 保存路径>\movefile.exe <要删除文件> "" 这个命令里两个参数要换掉,注意后面还要打两个双引号。比如说你把 movefile.exe 存在 c:\ 下面,你要删除 C:\test.exe 文件, 就打 C:\movefile....
  • 无论Windows,还是macOS,都只有固定3个窗口按钮:关闭放大缩小但是,在使用电脑过程窗口的使用场景远不止于这些。例如,调整窗口透明度、窗口对齐、修改窗口尺寸....这些功能,在目前电脑操作系统默认是...
  • 无论Windows,还是macOS,都只有固定3个窗口按钮:关闭放大缩小但是,在使用电脑过程窗口的使用场景远不止于这些。例如,调整窗口透明度、窗口对齐、修改窗口尺寸....这些功能,在目前电脑操作系统默认是...
  • 如果您改变选择某个项目或所有项目的主意,则可以使用“编辑”菜单中的删除选项将它们从列表中删除。 自动覆盖原始文件 只需单击一个按钮,即可无缝完成文件压缩。也可以选择压缩级别。备用EXE Packer自动覆盖原始...
  • 目前该类封装了绝大部分对windows窗口的常用操作,例如:获取窗口句柄,设置窗口为活动窗口,设置窗口内文本框内容,点击窗口内某些按钮等。 这个类现在还在一直不断地扩充,功能已经很强大很广泛,使用它可以...
  • 打开截图工具后,按 Esc,然后打开要捕获菜单。...单击“新建”按钮旁边箭头,从列表选择“任意格式截图”、“矩形截图”、“窗口截图”或“全屏幕截图”,然后选择要捕获屏幕区域。 ...
  • 目前该类封装了绝大部分对windows窗口的常用操作,例如:获取窗口句柄,设置窗口为活动窗口,设置窗口内文本框内容,点击窗口内某些按钮等。 这个类现在还在一直不断地扩充,功能已经很强大很广泛,使用它可以...
  • 在Qt Designer创建主Windows在Qt Designer创建主Windows菜单Menus创建菜单创建菜单项工具栏创建和删除工具栏添加和删​​除工具按钮动作Action动作编辑器创建动作添加动作Dock Widgets添加Dock Widgets ...
  • Delphi,是Windows平台下著名快速应用程序开发工具(Rapid Application Development,简称RAD)。它前身,即是DOS时代盛行一时“BorlandTurbo Pascal”,最早版本由美国Borland(宝兰)公司于1995年开发。主创...
  • 6.若你显示器不能显示全部窗口,没有关系,窗口是浮动,可以点击左上方三个工具按钮,随时打开或关闭上方三个窗口页; 注:不只PDF文件,本工具支持所有Windows常用应用文档格式。 适用环境有:...
  • 在VB想要显示或隐藏一个窗口在任务栏上的按钮很容易,直接设定一个formShowInTabkbar属性即可。但在SDK却不是一件易事,一个窗口在什么情况下会在任务栏上显示一个按钮,在什么情况下不显示呢?这是有规定:0...
  • wincc弹出画面窗口脚本This tutorial will show you how to ... 本教程将向您展示如何创建没有工具超酷弹出窗口。 1. Create a button in your Flash file. 1.在Flash文件创建一个按钮。 2. Right click th...
  • 进入你虚拟机中,然后,右击你虚拟机标签,选择设置-->options选项卡中有一个“共享文件夹”用鼠标选中它,再在右边窗口中,点添加按钮,再在你Linux系统中作如下操作: cd /mnt/hgfs/ 在这里面你就可以看到...
  • 5.在列表中的是PE含有的软件,移出列表可以多项移出,移出后单击确认删除才真正删除 6.单击封装成IS_,出现cmd窗口,等待弹出信息框显示完成即可.新生成的IS_文件会在此工具运行的根目录. 若选择自动备份则备份为运行根...
  • 1 先请在苹果 Mac 电脑上的“系统偏好设置”窗口中打开“共享”功能,如图所示 接着在共享窗口中的左侧点击启用“屏幕共享”选项,如图所示 当屏幕共享功能打开以后,请点击“电脑设置”按钮,如图所示 随后请勾选...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,350
精华内容 540
关键字:

windows窗口中的工具按钮