精华内容
下载资源
问答
  • 弹出窗口资料弹出窗口资料弹出窗口资料弹出窗口资料弹出窗口资料弹出窗口资料弹出窗口资料
  • 浮动窗口制作资料浮动窗口制作资料浮动窗口制作资料浮动窗口制作资料浮动窗口制作资料浮动窗口制作资料浮动窗口制作资料
  • Mac OS 关于窗口操作的快捷键区别

    千次阅读 2017-03-02 10:11:18
    开始用苹果不久,始终很疑惑为何苹果有很多相似的窗口操作功能,最近找了些资料发现其中区别,还是有必要的: 1. ⌘+H (command+H, Hide): 隐藏窗口;系统判定你可能马上还要用此程序,只是想暂时隐藏,可以用...

    开始用苹果不久,始终很疑惑为何苹果有很多相似的窗口操作功能,最近找了些资料发现其中区别,还是有必要的:

    1. ⌘+H (command+H, Hide): 隐藏窗口;系统判定你可能马上还要用此程序,只是想暂时隐藏,可以用Command+tab调出

       ⌘+Alt+H:隐藏所有其他程序窗口(除当前窗口外)。

    2. ⌘+M (command+M, Minimum,Minimize): 最小化。你可以在Dock上看到该程序

    3. ⌘+W (command+W, Windows): 关闭窗口。不能用Command+tab调出,但还在内存中,可以点击Dock图标打开。

    4. ⌘+Q (command+Q, Quit): 退出程序。程序完全退出。

    5. ⌘+·(command+`, Alternative): 切换活跃窗口。 command+w 

    6. ⌘+Ctrl+F. 最大化窗口。这个命令好多地方找不到,可能是新加的:)


    其他

    ⌘+Alt+M: 全部最小化

    ⌘+Alt++:➕号,Zoom放大窗口

    ⌘+Alt+-:-号,缩小窗口

    ⌘+Alt+H:隐藏所有其他程序窗口(除当前窗口外)



    展开全文
  • 关于窗口重画的初级问题

    千次阅读 2007-04-18 11:12:00
    关于窗口重画的初级问题初初级问题:我在视图画的图象或者文字,当窗口改变后(包括最小化后还原,被别的窗口挡住后重新显示等)为什么不见了? 这就是窗口重绘或者说重画的问题。当窗口改变后,会产生无效区域,这...

     关于窗口重画的初级问题

    初初级问题:

    我在视图画的图象或者文字,当窗口改变后(包括最小化后还原,被别的窗口挡住后重新显示等)为什么不见了?

     

    这就是窗口重绘或者说重画的问题。当窗口改变后,会产生无效区域,这个无效的区域需要重画。什么是无效区域?自己到网上搜索或者看相关资料。我这里给出一个特殊的解释:以最小化后还原为例,假设只有一个程序在运行,窗口最小化时显示计算机桌面,并不妨假设桌面是蓝色的背景,当窗口还原时,窗口所占的这一块区域该显示些什么东西呢?操作系统并不知道,因此,就形成一块无效区域。要是我们告诉操作系统,显示一个红方块,于是它就显示一个红方块,我们的程序过一会想显示一个绿方块呢?同样也要告诉它。在哪里告诉它呢?在OnDrawOnPaint函数这里(这里不准备讨论他们的区别,并且只关注OnDraw)。OnDraw函数在什么时候执行呢?在存在无效区域窗口需要重绘时执行。

     

    下面开始做例子(为简化程序,不显示方块显示线条),建立一个SDI工程,并添加一个菜单项DrawLine,添加OnDrawline函数:

    显示线条A(20,20,50,50)

    void CDrawView::OnDrawline()

    {

           // TODO: Add your command handler code here

           CClientDC dc(this);

           dc.MoveTo(20,20);

           dc.LineTo(50,50);

    }

    编译运行,出现一个线条,最小化还原,没有了。更改OnDraw函数:

    显示线条B(100,100,70,70)

    void CDrawView::OnDraw(CDC* pDC)

    {

           CDrawDoc* pDoc = GetDocument();

           ASSERT_VALID(pDoc);

           // TODO: add draw code for native data here

           pDC->MoveTo(100,100);

           pDC->LineTo(70,70);

    }

    运行,最小化还原,你会发现线条B一直存在,线条A没有了。

     

    到这里,你应该有一个疑问:我们新建一个SDI程序,什么都没做啊,为什么这个时候还是能显示菜单,框架这些东西?我们并没有告诉操作系统要显示什么啊?这是因为一般Windows会发送两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化)。非客户区的重画系统自己搞定了,而客户区的重画需要我们自己来完成。

     

    初级问题:

    我要在菜单函数里面画图怎么办?或者说,我希望点击菜单就画图,不想把代码放在OnDraw里面。

     

    这个问题主要是思路没有转过弯来。其实很简单,在菜单函数里面设置一个开关,然后在OnDraw里面根据这个开关来决定是否显示就可以了。例如:

    BOOL bShowLineA=FALSE;

    void CDrawView::OnDrawline()

    {

           // TODO: Add your command handler code here

           bShowLineA=TRUE;

            Invalidate();//这个函数暂时只需要知道是用来“调用”OnDraw函数的

    }

    void CDrawView::OnDraw(CDC* pDC)

    {

           CDrawDoc* pDoc = GetDocument();

           ASSERT_VALID(pDoc);

           // TODO: add draw code for native data here

            if(bShowLineA)

           {

               pDC->MoveTo(20,20);

              pDC->LineTo(50,50);

           }    

    }

    单击菜单项DrawLine就会画线条A,当然你还可以再搞一个函数令bShowLineA=FALSE达到删除线条的目的。

     

    上述做法存在很大局限:必须事先知道要画什么图。考虑这样一种情况:我们用鼠标画图,鼠标按下时决定开始线条开始点,鼠标弹起时决定结束点并画图。你也许会说,还是可以用上面的做法啊,用变量来代替数字就可以了,例如:

    void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)

    {

           // TODO: Add your message handler code here and/or call default

           start=point;

           CView::OnLButtonDown(nFlags, point);

    }

    void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)

    {

           // TODO: Add your message handler code here and/or call default

           end=point;

           Invalidate();

           CView::OnLButtonUp(nFlags, point);

    }

    void CDrawView::OnDraw(CDC* pDC)

    {

           CDrawDoc* pDoc = GetDocument();

           ASSERT_VALID(pDoc);

           // TODO: add draw code for native data here

           pDC->MoveTo(start.x,start.y);

           pDC->LineTo(end.x,end.y);

    }

    这样的确是可以解决一部分问题,考虑更复杂的情况:画若干条线条,还要画一些圆、正方形,甚至还要显示一行文字。这个时候上面的方法就不太适合了。但原理是一样的:在菜单函数里面计算,保存数据结果,通知系统更新;在OnDraw函数里面根据新的结果数据进行重画。在菜单函数里面如何保存数据结果呢?可以使用一个结构(或者类)保存在内存里(例如可以使用数组,链表等等方式),也可以把数据保存在一个文件里,然后,在OnDraw里面读取这个结构(前面说的数组、链表、文件等)的数据进行重画。总之,具体问题具体分析。

     

    记住一个大原则:画图代码(确切的说是用来显示的代码)放在OnDraw里面。

     

    那么,是不是任何时候画图代码都必须要放在OnDraw里面?也不全是,例如操作的一些中间过程就要放在其他函数。一个经典的例子是用鼠标画直线,并且动态显示中间画图过程,鼠标弹起才最终决定最后的直线。那么,在鼠标移动事件中就要动态的画线了,然后保存最终结果,在OnDraw里面只需要画这个最终结果就可以了。当然,这个中间过程其实还是可以放到OnDraw里面来的。特别是一些复杂的图形处理,例如画不规则图形,就需要开一个线程专门用来计算显示画线的过程,这个不在我们讨论范围之内。

     

    我还发现一个初学者有趣的心理活动,包括我自己也是一样的,就是舍不得在OnDraw里面放较多的代码。如下:

    void CDrawView::OnDraw(CDC* pDC)

    {

           CDrawDoc* pDoc = GetDocument();

           ASSERT_VALID(pDoc);

           // TODO: add draw code for native data here

           pDC->MoveTo(start.x,start.y);

           pDC->LineTo(end.x,end.y);

            ....

            下面还有很多的画图的代码。

    }

    上面这种情况他们总是担心会不会效率太低了?因为窗口动不动就要刷新,这么多代码会不会太慢了?但是,要是下面这样的代码他们就放心多了:

    void CDrawView::OnDraw(CDC* pDC)

    {

           CDrawDoc* pDoc = GetDocument();

           ASSERT_VALID(pDoc);

           // TODO: add draw code for native data here

           fun();

    }

    fun

    {

    很多很多很多的画图的代码

    }

    呵呵,有时候我跟别人说,把画图代码放在OnDraw里面,他们就会认为,每一行代码都放到OnDraw里面。

     

    还有一些“顽固分子”说,我把画图的代码放在菜单函数里面,然后禁止窗口重画就行了,然后到处去问怎么禁止窗口自动重画。他们都忽略了一个事实,显示器只有一个!他们都把窗口当作一个个的实体了。他们的想法是:把这个窗口画好了,就再也不动了,最小化吗?好办,请工人把这个窗口拿走,就可以看到后面的窗口了,还原,就让工人再搬回来就是了。可事实是:窗口(显示器)永远都只有一个。我们只看显示器里面中间的一个象素点:这个时候,这个点在我们的程序里面是红色的,然后把我们的窗口最小化,这个点并没有随着我们的窗口跑掉啊,它还是在那里,可是下一个窗口是绿色的,你说,这个时候是不是要重新把这个点涂成绿色的?这就是重画。还原时,又要重新把它涂成红色,如此反复。

     

    觉得太罗嗦,好像还没说清楚,累啊^_^

    ------------------------------------------------------------------------------
    由UpdateData(FALSE)想到的窗口刷新问题
    作者:zuilang
    一,前言
        有网友提醒我:“在MSDN裡面能找到的東西,再寫BLOG是要被罵的。”确实,全抄MSDN没有一点意思,但加一点自己的理解,或许对初学者有一点用。因此,首先声明,本文适合MFC初学者。
    二,前提知识
    2关于Invalidate、InvalidateRect和UpdateWindow
        以下资料来源不祥,似乎是vckbase讨论的(不保证每一句都正确,如有错误,请指出)。
    (1)Invalidate
           Invalidate标记一个需要重绘的无效区域,并不意味着调用该函数后就立刻进行重绘。类似于PostMessage(WM_PAINT),需要处理到WM_PAINT消息时才真正重绘。以为您Invalidate之后还有其他的语句正在执行,程序没有机会去处理WM_PAINT消息,但当函数执行完毕后,消息处理才得以进行。
           Invalidate只是放一个WM_PAINT消息在队列里,不做别的,所以只有当当前函数返回后,进入消息循环,取出WM_PAINT,才执行PAINT,所以不管Invalidate放函数哪个地方,(作用相当于)都是(放在)最后的(但并不是推荐你一律放在函数最后一行)。
           Invalidate()之后:...OnPaint()->OnPrepareDC()->OnDraw(),所以只是刷新在OnPaint()和OnDraw()函数中的绘图语句。其它地方没有影响。
     
    (2)InvalidateRect
           InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效,InvalidateRect函数中的参数TRUE表示系统会在你画之前用背景色将所选区域覆盖一次,默认背景色为白色,可以通过设置BRUSH来改变背景色。
           InvalidateRect(hWnd,&rect,TRUE);向hWnd窗体发出WM_PAINT的消息,强制客户区域重绘制,rect是你指定要刷新的区域,此区域外的客户区域不被重绘,这样防止客户区域的一个局部的改动,而导致整个客户区域重绘而导致闪烁,如果最后的参数为TRUE,则还向窗体发送WM_ERASEBKGND消息,使背景重绘,当然在客户区域重绘之前。
     
    (3)UpdateWindow
           UpdateWindow只向窗体发送WM_PAINT消息,在发送之前判断GetUpdateRect(hWnd,NULL,TRUE)看有无可绘制的客户区域,如果没有,则不发送WM_PAINT。如果希望立即刷新无效区域,可以在调用InvalidateRect之后调用UpdateWindow,如果客户区的任一部分无效,则UpdateWindow将导致Windows用WM_PAINT消息调用窗口过程(如果整个客户区有效,则不调用窗口过程)。这一WM_PAINT消息不进入消息队列,直接由WINDOWS调用窗口过程。窗口过程完成刷新以后立刻退出,WINDOWS将控制返回给程序中UpdateWindow调用之后的语句。(windows程序设计第5版 P98)
    三,问题
        初学者很容易碰到下面这个问题:(其中m_nEdit是一个编辑框的int型成员变量)
    void CTestDlg::OnButton1()
    {
           // TODO: Add your control notification handler code here
           for(int i=0;i<10;i++)
           {
                  m_nEdit=i;
                  UpdateData(FALSE);
           }
    }
        程序运行的结果是,编辑框里面直接就显示了9,是程序运行太快了看不清楚吗?改:
    void CTestDlg::OnButton1()
    {
           // TODO: Add your control notification handler code here
           for(int i=0;i<10;i++)
           {
                  m_nEdit=i;
                  Sleep(1000);
                  UpdateData(FALSE);
           }
    }
        程序开始没有变化,静静运行了一会,直接显示9!看来不是显示太快的原因。
    四,思考
        因为UpdateData(FALSE)是更新窗口(编辑框也是窗口)的内容,当然也会更新窗口的“画面”,那么,是不是也是跟Invalidate、InvalidateRect一样的问题呢?尝试一下:
    void CTestDlg::OnButton1()
    {
           // TODO: Add your control notification handler code here
           for(int i=0;i<10;i++)
           {
                  m_nEdit=i;
                  Sleep(100);//去掉这一句在这里确实因为显示太快而看不清。
                  UpdateData(FALSE);
                  UpdateWindow();
           }
    }
        终于得到我们要的结果了^_^。那么UpdateData(FALSE)到底做了什么?想了解,就去看深入浅出MFC。
    展开全文
  • 制作传统 Win32 程序以及 Windows Forms 程序的时候,一个用户看起来独立的窗口本就是通过各种父子窗口嵌套完成的,有大量窗口句柄,窗口之间形成父子关系。不过,对于 WPF 程序来说,一个独立的窗口实际上只有一个...

    制作传统 Win32 程序以及 Windows Forms 程序的时候,一个用户看起来独立的窗口本就是通过各种父子窗口嵌套完成的,有大量窗口句柄,窗口之间形成父子关系。不过,对于 WPF 程序来说,一个独立的窗口实际上只有一个窗口句柄,窗口内的所有内容都是 WPF 绘制的。

    如果你不熟悉 Win32 窗口中的父子窗口关系和窗口样式,那么很有可能遇到父子窗口之间“抢夺焦点”的问题,本文介绍如何解决这样的问题。


    “抢夺焦点”

    下图中的上下两个部分是两个不同的窗口,他们之间通过 SetParent 建立了父子关系。

    注意看下面的窗口标题栏,当我在这些不同区域间点击的时候,窗口标题栏在黑色和灰色之间切换:

    抢夺焦点

    这说明当子窗口获得焦点的时候,父窗口会失去焦点并显示失去焦点的样式。

    你可以在这篇博客中找到一个简单的例子:

    解决办法

    而原因和解决方法仅有一个,就是子窗口需要有一个子窗口的样式。

    具体来说,子窗口必须要有 WS_CHILD 样式。

    你可以看看 Spyxx.exe 抓出来的默认普通窗口和子窗口的样式差别:

    ![默认普通窗口]](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9ibG9nLndhbHRlcmx2LmNvbS9zdGF0aWMvcG9zdHMvMjAxOS0wOS0xOS0xMC0yMS0zMS5wbmc?x-oss-process=image/format,png)

    ▲ 默认普通窗口

    子窗口

    ▲ 子窗口


    参考资料


    我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

    如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

    知识共享许可协议

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

    展开全文
  • 关于窗口重绘的初级问题

    千次阅读 2007-03-21 09:58:00
    作者:liguisenblog:http://blog.csdn.net/liguisen/ 关于窗口重画的初级问题既然是初级问题,我尽量少说一点原理,并且使用通俗易懂的话。 初初级问题:我在视图画的图象或者文字,当窗口改变后(包括最小化后...
     

    作者:liguisen

    bloghttp://blog.csdn.net/liguisen/

     

    关于窗口重画的初级问题

    既然是初级问题,我尽量少说一点原理,并且使用通俗易懂的话。

     

    初初级问题:

    我在视图画的图象或者文字,当窗口改变后(包括最小化后还原,被别的窗口挡住后重新显示等)为什么不见了?

     

    这就是窗口重绘或者说重画的问题。当窗口改变后,会产生无效区域,这个无效的区域需要重画。什么是无效区域?自己到网上搜索或者看相关资料。我这里给出一个特殊的解释:以最小化后还原为例,假设只有一个程序在运行,窗口最小化时显示计算机桌面,并不妨假设桌面是蓝色的背景,当窗口还原时,窗口所占的这一块区域该显示些什么东西呢?操作系统并不知道,因此,就形成一块无效区域。要是我们告诉操作系统,显示一个红方块,于是它就显示一个红方块,我们的程序过一会想显示一个绿方块呢?同样也要告诉它。在哪里告诉它呢?在OnDrawOnPaint函数这里(这里不准备讨论他们的区别,并且只关注OnDraw)。OnDraw函数在什么时候执行呢?在存在无效区域窗口需要重绘时执行。

     

    下面开始做例子(为简化程序,不显示方块显示线条),建立一个SDI工程,并添加一个菜单项DrawLine,添加OnDrawline函数:

    显示线条A(20,20,50,50)

    void CDrawView::OnDrawline()

    {

           // TODO: Add your command handler code here

           CClientDC dc(this);

           dc.MoveTo(20,20);

           dc.LineTo(50,50);

    }

    编译运行,出现一个线条,最小化还原,没有了。更改OnDraw函数:

    显示线条B(100,100,70,70)

    void CDrawView::OnDraw(CDC* pDC)

    {

           CDrawDoc* pDoc = GetDocument();

           ASSERT_VALID(pDoc);

           // TODO: add draw code for native data here

           pDC->MoveTo(100,100);

           pDC->LineTo(70,70);

    }

    运行,最小化还原,你会发现线条B一直存在,线条A没有了。

     

    到这里,你应该有一个疑问:我们新建一个SDI程序,什么都没做啊,为什么这个时候还是能显示菜单,框架这些东西?我们并没有告诉操作系统要显示什么啊?这是因为一般Windows会发送两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化)。非客户区的重画系统自己搞定了,而客户区的重画需要我们自己来完成。

     

    初级问题:

    我要在菜单函数里面画图怎么办?或者说,我希望点击菜单就画图,不想把代码放在OnDraw里面。

     

    这个问题主要是思路没有转过弯来。其实很简单,在菜单函数里面设置一个开关,然后在OnDraw里面根据这个开关来决定是否显示就可以了。例如:

    BOOL bShowLineA=FALSE;

    void CDrawView::OnDrawline()

    {

           // TODO: Add your command handler code here

           bShowLineA=TRUE;

            Invalidate();//这个函数暂时只需要知道是用来“调用”OnDraw函数的

    }

    void CDrawView::OnDraw(CDC* pDC)

    {

           CDrawDoc* pDoc = GetDocument();

           ASSERT_VALID(pDoc);

           // TODO: add draw code for native data here

            if(bShowLineA)

           {

               pDC->MoveTo(20,20);

              pDC->LineTo(50,50);

           }    

    }

    单击菜单项DrawLine就会画线条A,当然你还可以再搞一个函数令bShowLineA=FALSE达到删除线条的目的。

     

    上述做法存在很大局限:必须事先知道要画什么图。考虑这样一种情况:我们用鼠标画图,鼠标按下时决定开始线条开始点,鼠标弹起时决定结束点并画图。你也许会说,还是可以用上面的做法啊,用变量来代替数字就可以了,例如:

    void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)

    {

           // TODO: Add your message handler code here and/or call default

           start=point;

           CView::OnLButtonDown(nFlags, point);

    }

    void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)

    {

           // TODO: Add your message handler code here and/or call default

           end=point;

           Invalidate();

           CView::OnLButtonUp(nFlags, point);

    }

    void CDrawView::OnDraw(CDC* pDC)

    {

           CDrawDoc* pDoc = GetDocument();

           ASSERT_VALID(pDoc);

           // TODO: add draw code for native data here

           pDC->MoveTo(start.x,start.y);

           pDC->LineTo(end.x,end.y);

    }

    这样的确是可以解决一部分问题,考虑更复杂的情况:画若干条线条,还要画一些圆、正方形,甚至还要显示一行文字。这个时候上面的方法就不太适合了。但原理是一样的:在菜单函数里面计算,保存数据结果,通知系统更新;在OnDraw函数里面根据新的结果数据进行重画。在菜单函数里面如何保存数据结果呢?可以使用一个结构(或者类)保存在内存里(例如可以使用数组,链表等等方式),也可以把数据保存在一个文件里,然后,在OnDraw里面读取这个结构(前面说的数组、链表、文件等)的数据进行重画。总之,具体问题具体分析。

     

    记住一个大原则:画图代码(确切的说是用来显示的代码)放在OnDraw里面。

     

    那么,是不是任何时候画图代码都必须要放在OnDraw里面?也不全是,例如操作的一些中间过程就要放在其他函数。一个经典的例子是用鼠标画直线,并且动态显示中间画图过程,鼠标弹起才最终决定最后的直线。那么,在鼠标移动事件中就要动态的画线了,然后保存最终结果,在OnDraw里面只需要画这个最终结果就可以了。当然,这个中间过程其实还是可以放到OnDraw里面来的。特别是一些复杂的图形处理,例如画不规则图形,就需要开一个线程专门用来计算显示画线的过程,这个不在我们讨论范围之内。

     

    我还发现一个初学者有趣的心理活动,包括我自己也是一样的,就是舍不得在OnDraw里面放较多的代码。如下:

    void CDrawView::OnDraw(CDC* pDC)

    {

           CDrawDoc* pDoc = GetDocument();

           ASSERT_VALID(pDoc);

           // TODO: add draw code for native data here

           pDC->MoveTo(start.x,start.y);

           pDC->LineTo(end.x,end.y);

            ....

            下面还有很多的画图的代码。

    }

    上面这种情况他们总是担心会不会效率太低了?因为窗口动不动就要刷新,这么多代码会不会太慢了?但是,要是下面这样的代码他们就放心多了:

    void CDrawView::OnDraw(CDC* pDC)

    {

           CDrawDoc* pDoc = GetDocument();

           ASSERT_VALID(pDoc);

           // TODO: add draw code for native data here

           fun();

    }

    fun

    {

    很多很多很多的画图的代码

    }

    呵呵,有时候我跟别人说,把画图代码放在OnDraw里面,他们就会认为,每一行代码都放到OnDraw里面。

     

    还有一些“顽固分子”说,我把画图的代码放在菜单函数里面,然后禁止窗口重画就行了,然后到处去问怎么禁止窗口自动重画。他们都忽略了一个事实,显示器只有一个!他们都把窗口当作一个个的实体了。他们的想法是:把这个窗口画好了,就再也不动了,最小化吗?好办,请工人把这个窗口拿走,就可以看到后面的窗口了,还原,就让工人再搬回来就是了。可事实是:窗口(显示器)永远都只有一个。我们只看显示器里面中间的一个象素点:这个时候,这个点在我们的程序里面是红色的,然后把我们的窗口最小化,这个点并没有随着我们的窗口跑掉啊,它还是在那里,可是下一个窗口是绿色的,你说,这个时候是不是要重新把这个点涂成绿色的?这就是重画。还原时,又要重新把它涂成红色,如此反复。

     

    觉得太罗嗦,好像还没说清楚,累啊^_^

     
    展开全文
  • 关于无边框窗口的兼容性问题

    千次阅读 2015-08-12 10:33:33
    之后我又去Win7下测试,发现在开启Areo的情况下,不管是不是开启了透明,窗口都可以正常显示(和Win8一样),如果没有开启Areo,即选择“Win7 Basic”主题,无边框窗口和在Xp下一样,无法显示,于是经过查资料研究,...
  • 关于窗口重绘的初级问题 作者:zuilang关于窗口重画的初级问题既然是初级问题,我尽量少说一点原理,并且使用通俗易懂的话。 初初级问题:我在视图画的图象或者文字,当窗口改变后(包括最小化后还原,被别的窗口...
  • 滑动窗口算法

    千次阅读 多人点赞 2019-07-13 22:02:14
    什么是滑动窗口算法 我们学习过计算机网络都知道为了避免拥塞发生,在网络传输时有滑动窗口协议控制传输时流量。该协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认...
  • 显示一个模态窗口,正常而普遍的操作。然而却一直有一个难缠的 BUG:当关闭模态窗口时,父窗口有时会跑到其他程序窗口的后面! 而最近读到了微软工程师写过的话之后,明白了这个 BUG 的产生缘由以及解决方法。 ...
  • iOS关于悬浮窗口的实现

    千次阅读 2015-06-17 11:51:50
    由于项目的需要,需要实现的一个悬浮窗口 ,显示在整个应用界面。 思路一 另创建一个类 继承 uiwindow 设置成为 alter ,使用 makeKeyAndVisible 显示在界面上, 这种方法效果在竖屏上面效果很好,开始的时候感觉 ...
  • 关于JDialog将值返回给父窗口的方法

    千次阅读 2012-02-05 22:43:13
    这个问题困扰了我很久,就是在...后来查阅资料最终找到了实现方法: JDialog dialog = new JDialog(); ... //设置成模态窗口,很关键 dialog.setModel(true); //使窗口可见 dialog.setVisable(true); //当
  • 首先我简要描述下问题: 一个父窗口拥有多个子窗口(都有WS_CHILD属性),这些子窗口都是动态创建出来的, 当他们有交叉时,我们操作在上面的子窗口,...其次 考虑到是窗口刷新的问题,于是网上搜索一些资料及查看MS
  • jquery子窗口给父窗口元素赋值和获得值,子窗口调取父窗口方法,父窗口调取子窗口方法   1. 子窗口给父窗口元素赋值 &lt;!-- 主题id rz--&gt;  &lt;input type="hidden" id="theme_id...
  • PyQT5子窗口阻塞父窗口

    千次阅读 2018-11-03 13:16:42
    self.子窗口.setWindowModality(Qt.ApplicationModal) 子窗口在创建的时候加上这句,则可以实现子窗口不关闭无法操作父窗口 欢迎加入QQ群:853840665,一块学习分享资料 ...
  • $("#父窗口元素ID",window.parent.document);  对应javascript版本为window.parent.document.getElementByIdx_x("父窗口元素ID");   取父窗口的元素方法:$(selector, window.parent.document); 那么你取父...
  • 上网找了些资料,有很多解决方法,但都不理想,基本都围绕将页面放在ifram中,可系统有几十个模态窗口,不可能一一将其都放入ifram中。后来又发现了一个解决办法,才发现解决这个问题是如此简单:只要在需要将欲选择...
  • flink实战--窗口窗口函数终极解析

    千次阅读 2018-12-25 18:42:26
    本文主要介绍flink窗口的操作,相关窗口基础概念参考博客:https://blog.csdn.net/aA518189/article/details/82908993 Flink的windows类型 按照行为划分可分为三类: 翻滚窗口(Tumbling Window,无重叠) 滚动...
  • 关于 WebRTC 中远程视频窗口黑屏

    千次阅读 2015-01-05 21:05:39
    一个烦了我很长一段时间的问题,每次用 WebRTC 进行视频聊天,远程视频窗口都有一定几率出现黑屏的情况。 在网上搜索了一圈都没有找到可行的方案,最后决定到 MDN 上面看看 PeerConnection 的 API 。 然后我发现,...
  •  在工作中尝试把一个FLASH居中全屏放置,窗口RESIZE的时候和页面SCROLL的时候都要动态变化,需要取得当前窗口显示区域的WIDTH与HEIGHT,翻了翻资料脑子就一半面一半水搅匀了。类似的参数我全列出来: ...
  • TCP的滑动窗口与拥塞窗口

    万次阅读 2015-08-05 11:47:20
    最近在TCP/IP的TCP部分的流量控制与拥塞控制,收集了一些网上的资料,特总结于此。  不管是多么复杂的协议原理,我想首先肯定要落实到协议的字段上面。对于TCP来说流量控制无非是就是在序号和窗口大小上面做...
  • Qt多窗口切换实战与注意点(附详细代码与Qt资料

    万次阅读 多人点赞 2018-05-08 12:23:18
    太兴奋了,花了一天时间,终于把一个demo调通了...当然网上不全是坑,也发现了非常精华的内容,比如这篇博客《Qt资料大全》,非常适合Qt小白。 本人极力推荐《Qt Creator快速入门》以及配套的相关代码,我已经将这...
  • C#自定义窗口

    千次阅读 2015-10-02 23:06:10
    [C#]绘制自定义窗体 ...去windows除边框标题栏标题栏的相关事件绘制边框绘制阴影 参考资料 回到顶部 去windows除边框 初始窗口样式: 将窗口FormBorderStyle属性设为None,就可以去除四周边框
  • 设计完成后,转换成两个py文件,对于两个分开的文件实现子窗口的调用,我看了一些资料,基本都是新建一个文件然后实现显示主窗口以及调用子窗口,不是我想要的,所以在下面给出我的实现方法,就在主窗口一个文件中...
  • 主框架窗口随子窗口移动

    千次阅读 2013-03-07 09:26:07
    其中关于窗口移动的问题,试了好几种方法,比如,在对话框的OnMove,OnMoving消息响应中发送消息到主框架窗口,都不能满足移动窗口要求,要么某个方向移动艰难,要不拖动时留着背影残留,最后,查找了资料,找到了一...
  • Android 多窗口详解

    千次阅读 2016-12-04 20:30:40
    窗口支持Android N 添加了对同时显示多个应用窗口的支持。 在手持设备上,两个应用可以在“分屏”模式中左右并排或上下并排显示。 在电视设备上,应用可以使用“画中画”模式,在用户与另一个应用交互的同时继续...
  • 1、Javascript弹出子窗口 可以通过多种方式实现,下面介绍几种方法 (1) 通过window对象的open()方法,open()方法将会产生一个新的window窗口对象    其用法为:  window.open(URL,windowName,parameters); ...
  • 关于在DLL中获取主调用窗口的句柄

    千次阅读 2008-05-06 21:03:00
    近来在弄远程DLL注入,在DLL中创建了窗口,因某种需要,需获取宿主窗口的句柄,找了n多资料都没有很好的解决办法,然后找到如下一篇文章:通过进程ID获得该进程主窗口的句柄 一个进程可以拥有很多主窗口,也可以不...
  • [PYQT5] 主窗口弹出子窗口

    千次阅读 多人点赞 2020-01-19 15:17:29
    在主窗口添加按钮,并把按钮信号关联槽,在槽函数中创建子窗口对象赋值到普通变量,并调用其show 方法。 from PyQt5.QtWidgets import * import sys class Main(QMainWindow): def __init__(self): su...
  • 关于网站的窗口分割,框架结构

    千次阅读 2004-12-04 09:30:00
    1. 框架结构(Frame) 窗口分割技术(Frames)可以让浏览器同时显示多个窗口,每个窗口显示不同的文件内容。让读者同时浏览多个HTML文件,并能在不同画面之间方便地切换。就好似多画面电视机一样。 利用窗口分割...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 215,429
精华内容 86,171
关键字:

关于窗口的资料