精华内容
下载资源
问答
  • MFC中窗口刷新函数详解

    千次阅读 2017-05-14 21:15:45
    MFC中窗口刷新函数详解 <span class="link_postdate">2016-10-09 10:26 <span class="link_view"

    按引:Invalidate在消息队列中加入一条WM_PAINT消息,其无效区为整个客户区。而UpdateWindow直接发送一个WM_PAINT消息,其无效区范围就是消息队列中WM_PAINT消息(最多只有一条)的无效区。效果很明显,调用Invalidate之后,屏幕不一定马上更新,因为WM_PAINT消息不一定在队列头部,而调用UpdateWindow会使WM_PAINT消息马上执行的,绕过了消息队列。如果你调用Invalidate之后想马上更新屏幕,那就加上UpdateWindow()这条语句。

     

    UpdateData():

        当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE),将控件的输入映射到变量中。

    Invalidate():
         该函数的作用是使整个窗口客户区无效窗口的客户区无效意味着需要重绘。例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的消息处理函数OnPaint,OnPaint负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw函数,实际的重绘工作由OnDraw来完成。参数bErase为TRUE时,重绘区域内的背景将被擦除,否则,背景将保持不变。

    InvalidateRect():
        该函数的功能与Invalidate基本一样,不同的是,它是使指定的某个区域无效,需要输入一个区域,如果参数为NULL,则设置整个窗口为无效区。

    UpdateWindow():
         UpdateWindow( )的作用是使窗口立即重绘。调用Invalidate等函数后窗口不会立即重绘,这是由于WM_PAINT消息的优先级很低,它需要等消息队列中的其它消息发送完后才能被处理。调用UpdateWindow函数可使WM_PAINT被直接发送到目标窗口,从而导致窗口立即重绘。

    UpdateWindow:如果有无效区,则马上sending a WM_PAINT message到窗口处理过程,不进消息队列进行排队等待,立即刷新窗口,否则,什么都不做。 
    InvalidateRect:设置无效区,如果为NULL参数,则设置整个窗口为无效区。当应用程序的那个窗口的消息队列为空时,则sending a WM_PAINT message(即使更新区域为空).在sending a WM_PAINT message的所有InvalidateRect的更新区域会累加。

    1:设置无效区 
    InvalidateRect 

    2:立即刷新 
    UpdateWindow() 

    如果不调用 InvalidateRect就调用 UpdateWindow,那么UpdateWindow什么都不做。 如果调用 InvalidateRect 后不调用UpdateWindow,则系统会自动在窗口消息队列为空的时候,系统自动发送一WM_PAINT消息。 

    调用UpdateWindow()时将会发送一个WM_PAINT消息,而应用程序在接收到WM_PAINT消息后,将自动地调用Invalidate()。所以,在程序代码中,不一定要出现Invalidate()!

    UpdateWindow()就是立即发送WM_PAINT消息,updateWindow要求系统对区域进行立即重绘,其只对声明为无效的区域起作用,而Invalidate()是声明无效区域的方式之一。

    Invalidate()表示客户区域无效,在下次WM_PAINT发生时重绘。而WM_PAINT是由系统进行维护的,每当CWnd的更新区域不为空,并且在应用程序的窗口消息队列中没有其它消息时,Windows就发送一条WM_PAINT消息

    Invalidat最后也是调用InvalidatRect。

    RedrawWindow 强制刷新,会调用WM_PAINT,但如果你强制刷新的部分不存在就不会调用WM_PAINT。若不带任何参数,则本窗口全部刷新。

    *****************************************************************************************************************************************

    看到有人在网上提出问题,他在Invalidate后面又写了绘图的函数但是没有执行,这是因为invalidate执行过以后就转到PAINT命令了,所以后面的都没有显示。

    也终于想通我绘的图一直在闪啊闪,这是因为我在PAINT里面用到了Invalidate()函数,所以他不停的自嵌套,导致绘的图在不停的闪。

    总之:Invalidate让客户区处于可以重画的状态,而UpdateWindow开始重画,但是它首先需判断客户区是否为空,不空则UpdateWindow不执行,为空才执行重画。

    *********************************************************************************************************************************************

    在刷新窗口时经常要调用重绘函数MFC提供了三个函数用于窗口重绘
         InvalidateRect(&Rect)
        Invalidate()
         UpdateWindow()
           当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化)WM_NVPAINT系统会自己搞定WM_PAINT消息对应的函数是OnPaint(),它是系统默认的接受WM_PAINT消息的函数,但我们一般在程序中做重绘时都在OnDraw函数中进行的,因为在视图类ONPAINT函数中调用了ONDRAW函数。
           CView默认的标准的重画函数
              void CView::OnPaint()
                 {  
                       CPaintDC dc(this);   
                       OnPreparDC(&dc);  
                       OnDraw(&dc); //调用了OnDraw

                } 
            上面讲到InvalidateRect(&Rect) 和 Invalidate()。两个函数形式和功能差不多,但Invalidate是使得整个窗口形成无效矩形,而InvalidateRect(&Rect)是使得指定的区域无效。Invalidate()申明无效,等待WM_PAINT消息以便重绘,队列中无其他消息时系统会自动发送。而UpdateWindow()会立即发送WM_PAINT,不过在它发送前,先调用GetUpdateRect(hWnd,NULL,TRUE)看有无可绘制区域,如果没有则不发送消息。RedrawWindow()RedrawWindow()则是具有Invalidate()和UpdateWindow()的双特性。声明窗口的状态为无效,并立即更新窗口,立即调用WM_PAINT消息处理。   
           系统为什么不在调用Invalidate时发送WM_PAINT消息呢?又为什么非要等应用消息队列为空时才发送WM_PAINT消息呢?这是因为系统把在窗口中的绘制操作当作一种低优先级的操作,于是尽可能地推后做。不过这样也有利于提高绘制的效率:两个WM_PAINT消息之间通过InvalidateRect和InvaliateRgn使之失效的区域就会被累加起来,然后在一个WM_PAINT消息中一次得到更新,不仅能避免多次重复地更新同一区域,也优化了应用的更新操作。像这种通过InvalidateRect和InvalidateRgn来使窗口区域无效,依赖于系统在合适的时机发送WM_PAINT消息的机制实际上是一种异步工作方式,也就是说,在无效化窗口区域和发送WM_PAINT消息之间是有延迟的;有时候这种延迟并不是我们希望的,这时我们当然可以在无效化窗口区域后利用SendMessage 发送一条WM_PAINT消息来强制立即重画,但不如使用Windows GDI为我们提供的更方便和强大的函数:          
            UpdateWindow和RedrawWindow。UpdateWindow会检查窗口的Update Region,当其不为空时才发送WM_PAINT消息;RedrawWindow则给我们更多的控制:是否重画非客户区和背景,是否总是发送 WM_PAINT消息而不管Update Region是否为空等。BeginPaint和WM_PAINT消息紧密相关。试一试在WM_PAINT处理函数中不写BeginPaint会怎样?程序会像进入了一个死循环一样达到惊人的CPU占用率,你会发现程序总在处理一个接一个的WM_PAINT消息。这是因为在通常情况下,当应用收到WM_PAINT消息时,窗口的Update Region都是非空的(如果为空就不需要发送WM_PAINT消息了),BeginPaint的一个作用就是把该Update Region置为空,这样如果不调用BeginPaint,窗口的Update Region就一直不为空,如前所述,系统就会一直发送WM_PAINT消息。 BeginPaint和WM_ERASEBKGND消息也有关系。当窗口的Update Region被标志为需要擦除背景时,BeginPaint会发送WM_ERASEBKGND消息来重画背景,同时在其返回信息里有一个标志表明窗口背景是否被重画过。当我们用InvalidateRect和InvalidateRgn来把指定区域加到Update Region中时,可以设置该区域是否需要被擦除背景,这样下一个BeginPaint就知道是否需要发送WM_ERASEBKGND消息了。另外要注意的一点是,BeginPaint只能在WM_PAINT处理函数中使用


    OnDraw,一般是收到WM_PAINT消息时调用,所以应用程序一般通过Invalidate产生WM_PAINT消息来间接调用OnDraw。当窗体无效等情况下,window也会产生WM_PAINT消息,这时OnDraw 也被间接调用。 
    OnUpdate CView提供的一个方法,一般当文档修改时调用,应用程序框架在CView::OnInitialUpdate CDocument::UpdateAllViews 的默认实现中都会调用 
    OnUpdateOnUpdate的默认实现是通过Invalidate产生WM_PAINT,这时OnDraw又被调用了。 
    OnDraw除了你和应用程序框架间接调用外,window还可能间接调用它。 
    OnUpdate一般只有你的程序和应用程序框架会调用的。当然它的默认实现你可以改变的
    **********************************************************************************************************************
    OnInitUpdateVIEW的初始化 
    OnUpdate是文档多视时,响应其它视图的改变 

    OnDrawOnPaint都是绘图。OnPaint调用OnDraw,并且调用OnPrepareDC

    展开全文
  • MFC中经常遇到屏幕刷新的问题,下面是几种解决方法。  1,刷新整个程序区域,有明显的闪烁情况   Invalidate( TRUE );   UpdateWindow();  2,刷新指定区域,该区域有闪烁情况,不过比上一种方法要好...

    在MFC中经常遇到屏幕刷新的问题,下面是几种解决方法。 
    1,刷新整个程序区域,有明显的闪烁情况 
        Invalidate( TRUE ); 
        UpdateWindow();  
    2,刷新指定区域,该区域有闪烁情况,不过比上一种方法要好多了。 
        InvalidateRect( &m_rect, TRUE 0);

       UpdateWindow();  
    3,还有一种方法

          InvalidateRect( &m_rect, TRUE 0);

          RedrawWindow( &m_rect, NULL, RDW_INTERNALPAINT |

                                RDW_INVALIDATE | RDW_UPDATENOW

                                | RDW_ERASE );

    4, 最好的一种方法是使用 BitBlt 函数来拷贝需要刷新的区域。

    5,最后,当然也可以直接使用 OnPaint() 放置在要刷新的位置。 



    无闪烁刷屏技术的实现 

    在实现绘图的过程中,显示的图形总是会闪烁,笔者曾经被这个问题折磨了好久,通过向高手请教,搜索资料,问题一基本解决,现将文档整理出来以供大家参考. 
    1.    显示的图形为什么会闪烁? 
    我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。 当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图内容反差很大,这样在短时间内背景色与显示图形的交替出现,使得显示窗口看起来在闪 。如果将背景刷设置成NULL,这样无论怎样重绘图形都不会闪了。当然,这样做会使得窗口的显示乱成一团,因为重绘时没有背景色对原来绘制的图形进行清除,而又叠加上了新的图形。有的人会说,闪烁是因为绘图的速度太慢或者显示的图形太复杂造成的,其实这样说并不对,绘图的显示速度对闪烁的影响不是根本性的。例如在OnDraw(CDC *pDC)中这样写: 
    pDC->MoveTo(0,0); 
    pDC->LineTo(100,100); 
    这个绘图过程应该是非常简单、非常快了吧,但是拉动窗口变化时还是会看见闪烁。其实从道理上讲,画图的过程越复杂越慢闪烁应该越少,因为绘图用的时间与用背景清除屏幕所花的时间的比例越大人对闪烁的感觉会越不明显。比如:清楚屏幕时间为1s绘图时间也是为1s,这样在10s内的连续重画中就要闪烁5次;如果清楚屏幕时间为1s不变,而绘图时间为9s,这样10s内的连续重画只会闪烁一次。这个也可以试验,在OnDraw(CDC *pDC)中这样写: 
    for(int i=0;i<100000;i++) 

    pDC->MoveTo(0,i); 
    pDC->LineTo(1000,i); 

    呵呵,程序有点变态,但是能说明问题。 
       说到这里可能又有人要说了,为什么一个简单图形看起来没有复杂图形那么闪呢?这是因为复杂图形占的面积大,重画时造成的反差比较大,所以感觉上要闪得厉害一些,但是闪烁频率要低。那为什么动画的重画频率高,而看起来却不闪?这里,我就要再次强调了,闪烁是什么?闪烁就是反差,反差越大,闪烁越厉害。因为动画的连续两个帧之间的差异很小所以看起来不闪。如果不信,可以在动画的每一帧中间加一张纯白的帧,不闪才怪呢。 


    2、如何避免闪烁 
       在知道图形显示闪烁的原因之后,对症下药就好办了。首先当然是去掉MFC提供的背景绘制过程了。实现的方法很多, 
    * 可以在窗口形成时给窗口的注册类的背景刷付NULL 
    * 也可以在形成以后修改背景 
       static CBrush brush(RGB(255,0,0)); 
       SetClassLong(this->m_hWnd,GCL_HBRBACKGROUND,(LONG)(HBRUSH)brush); 
    * 要简单也可以重载OnEraseBkgnd(CDC* pDC)直接返回TRUE 
       这样背景没有了,结果图形显示的确不闪了,但是显示也象前面所说的一样,变得一团乱。怎么办?这就要用到双缓存的方法了。 双缓冲就是除了在屏幕上有图形进行显示以外,在内存中也有图形在绘制。我们可以把要显示的图形先在内存中绘制好,然后再一次性的将内存中的图形按照一个点一个点地覆盖到屏幕上去(这个过程非常快,因为是非常规整的内存拷贝)。 这样在内存中绘图时,随便用什么反差大的背景色进行清除都不会闪,因为看不见。当贴到屏幕上时,因为内存中最终的图形与屏幕显示图形差别很小(如果没有运动,当然就没有差别),这样看起来就不会闪。 


    3、如何实现双缓冲 
       首先给出实现的程序,然后再解释,同样是在OnDraw(CDC *pDC)中: 

    CDC MemDC; //首先定义一个显示设备对象 
    CBitmap MemBitmap;//定义一个位图对象 

    //随后建立与屏幕显示兼容的内存显示设备 
    MemDC.CreateCompatibleDC(NULL); 
    //这时还不能绘图,因为没有地方画 ^_^ 
    //下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小 
    MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight); 

    //将位图选入到内存显示设备中 
    //只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上 
    CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap); 

    //先用背景色将位图清除干净,这里我用的是白色作为背景 
    //你也可以用自己应该用的颜色 
    MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255)); 

    //绘图 
    MemDC.MoveTo(……); 
    MemDC.LineTo(……); 

    //将内存中的图拷贝到屏幕上进行显示 
    pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY); 

    //绘图完成后的清理 
    MemBitmap.DeleteObject(); 
    MemDC.DeleteDC(); 

    上面的注释应该很详尽了,废话就不多说了。 


    4、如何提高绘图的效率 
        实际上,在OnDraw(CDC *pDC)中绘制的图并不是所有都显示了的,例如:你在OnDraw中画了两个矩形,在一次重绘中虽然两个矩形的绘制函数都有执行,但是很有可能只有一个显示了,这是因为MFC本身为了提高重绘的效率设置了裁剪区。裁剪区的作用就是:只有在这个区内的绘图过程才会真正有效,在区外的是无效的,即使在区外执行了绘图函数也是不会显示的。因为多数情况下窗口重绘的产生大多是因为窗口部分被遮挡或者窗口有滚动发生,改变的区域并不是整个图形而只有一小部分,这一部分需要改变的就是pDC中的裁剪区了。因为显示(往内存或者显存都叫显示)比绘图过程的计算要费时得多,有了裁剪区后显示的就只是应该显示的部分,大大提高了显示效率。但是这个裁剪区是MFC设置的,它已经为我们提高了显示效率,在进行复杂图形的绘制时如何进一步提高效率呢?那就只有去掉在裁剪区外的绘图过程了。可以先用pDC->GetClipBox()得到裁剪区,然后在绘图时判断你的图形是否在这个区内,如果在就画,不在就不画。 
    如果你的绘图过程不复杂,这样做可能对你的绘图效率不会有提高。 

    ///  无闪烁背景图绘制  // 
    // 
    BOOL CStrucView::OnEraseBkgnd(CDC* pDC) 
    {        int nWidth; 
        int nHeight; 

        //CView::OnEraseBkgnd(pDC); 
        CStrucDoc* pDoc = GetDocument(); 
        ASSERT_VALID(pDoc); 
        CRect  rect; 
        GetWindowRect(&rect); 
        nWidth = rect.Width(); 
        nHeight= rect.Height(); 
         
        CDC  MemDC; 
        CBitmap  MemBitmap; 
         
        MemDC.CreateCompatibleDC (NULL); 
        MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight); 
         
        CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap); 
        MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255)); 

    /// 
       以上为画背景色                    // 
       以下为画背景图                    // 
    ///     
        GetClientRect(rect); 
        BITMAP bm; 
        CDC dcMem; 
        VERIFY(m_bmp.GetObject(sizeof(bm),(LPVOID)&bm)); 
        dcMem.CreateCompatibleDC(pDC); 
        CBitmap *pOldBMP =( CBitmap *)dcMem.SelectObject(&m_bmp); 
        MemDC.BitBlt( (rect.right - bm.bmWidth)/2, 
            (rect.bottom - bm.bmHeight)/2, 
            bm.bmWidth,bm.bmHeight,&dcMem,0,0,SRCCOPY); 
        dcMem.SelectObject(pOldBMP); 


        pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY); 
       
        MemBitmap.DeleteObject(); 
        MemDC.DeleteDC(); 

        return TRUE; 

    ///  无闪烁背景图绘制  // 


    注:程序中m_bmp 为相应 的 StrucView.h中定义,为位图资源类 
    protected: 
        CBitmap m_bmp; 
    并应加上下面段,当然,你可在任何时候加入loadBitmap 子例程,也可加入文件资源,那由得你了!呵呵!^_^ 
    CStrucView::CStrucView() 

        VERIFY(m_bmp.LoadBitmap(IDB_BITMAP3)); 

    }

    http://blog.csdn.net/longzaitianya1989/article/details/18266899


    展开全文
  • MFC中UpdateData函数的使用功能

    千次阅读 2015-05-09 10:52:04
    MFC中UpdateData函数的使用  当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用 UpdateData(FALSE);如果你希望知道用户在对话框中...

    MFC中UpdateData函数的使用

          当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用 UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE)。 

          用处:

          主要控制ddx_data 把控件中的值和变量进行交换 比如你有个编辑框,输入了一些值,你的程序怎么得到呢;必须先调用这个(当然是在用了ddx的情况) 反之控件的成员变量中的值也可以通过该函数自动显示到控件里面,根据传进来的是true或者false 当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用 UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE)。 
    1、

    UpdateData(true); 
    用窗体上控件中的内容来更新和控件相关连的变量的值(只能更新value类型的变量) 
    例如:你在你的窗体中有一个Edit控件,为这个控件关联了CString类型的变量m_strName; 
    你在控件中添入内容之后,必须调用UpdateData(true);才能把你添入的内容传给m_strName这个变量

    UpdateData(false); 
    和上面的正好相反,还是以上面的Edit为例,当你在程序中改变了m_strName变量的内容的时候,如果你想让那个Edit也显示更新后的 m_strName,就必须调用UpdateData(false); 
    这样在你的Edit中才能显示更新完的变量的值! 
    2、

    UpdateData(TRUE)是将控件的状态传给其关联的变量,当然你要为控件关联上变量才行。
    UpdateData(FALSE)是将控件的关联变量的值传给控件并改变控件状态。
    UpdateData刷新的是当前对话框。

    UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。
    UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。

    3、edit控件,与控件关联的变量m_edit,当程序执行,你在控件中输入数21,要把21传到 m_edit,UpdateData(true).如果把m_edit修改,要传到控件UpdateData(false);

    另外注意一点:
    使用UpdateData()函数时,当前界面上所有绑定了的变量(即通过MFC ClassWizard给控件添加了对应的变量)都会被UpdateData(TRUE)更新成对应控件中的内容;同样所有绑定了变量的控件中的内容也会 UpdateData(FALSE)更新成对应变量中的内容。

    要接受用户的输入就true,
    要输入结果给用户就flase

    数据量不多的话,最好用SetDlgItemText()和GetDlgItemText()

    重要补充:

    GetWindowText()是获取控件当前内容(Caption或者the text within the control —for the control,具体可以查看MSDN)值,是对单个控件而言; 
    而UpdateData()是作用于整个CWnd的DDX数据交换机制之中的,是控件和数据的双向通道。

    展开全文
  • MFC的API函数大全

    千次阅读 2015-10-21 09:46:11
    API函数大全... 1 1.API之网络函数... 1 2. API之消息函数... 1 3. API之文件处理函数... 2 4. API之打印函数... 5 5. API之文本和字体函数... 7 6. API之菜单函数... 8 7. API之位图、图标和光栅运算...
     
    

     


    API函数大全

        1.API之网络函数

      WNetAddConnection 创建同一个网络资源的永久性连接

      WNetAddConnection2创建同一个网络资源的连接

      WNetAddConnection3创建同一个网络资源的连接

      WNetCancelConnection结束一个网络连接

      WNetCancelConnection2结束一个网络连接

      WNetCloseEnum 结束一次枚举操作

      WNetConnectionDialog启动一个标准对话框,以便建立同网络资源的连接

      WNetDisconnectDialog启动一个标准对话框,以便断开同网络资源的连接

      WNetEnumResource 枚举网络资源

      WNetGetConnection 获取本地或已连接的一个资源的网络名称

      WNetGetLastError 获取网络错误的扩展错误信息

      WNetGetUniversalName获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称

      WNetGetUser 获取一个网络资源用以连接的名字

      WNetOpenEnum 启动对网络资源进行枚举的过程

      2. API之消息函数

      BroadcastSystemMessage将一条系统消息广播给系统中所有的顶级窗口

      GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置

      GetMessageTime 取得消息队列中上一条消息处理完毕时的时间

      PostMessage 将一条消息投递到指定窗口的消息队列

      PostThreadMessage 将一条消息投递给应用程序

      RegisterWindowMessage获取分配给一个字串标识符的消息编号

      ReplyMessage 答复一个消息

      SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口

      SendMessageCallback将一条消息发给窗口

      SendMessageTimeout向窗口发送一条消息

      SendNotifyMessage 向窗口发送一条消息

      3. API之文件处理函数

      CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等

      CompareFileTime 对比两个文件的时间

      CopyFile 复制文件

      CreateDirectory 创建一个新目录

      CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台

      CreateFileMapping 创建一个新的文件映射对象

      DeleteFile 删除指定文件

      DeviceIoControl 对设备执行指定的操作

      DosDateTimeToFileTime将DOS日期和时间值转换成一个 win32 FILETIME 值

      FileTimeToDosDateTime将一个 win32 FILETIME 值转换成DOS日期和时间值

      FileTimeToLocalFileTime将一个FILETIME结构转换成本地时间

      FileTimeToSystemTime根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构

      FindClose 关闭由FindFirstFile函数创建的一个搜索句柄

      FindFirstFile 根据文件名查找文件

      FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件

      FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区

      FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘

      GetBinaryType 判断文件是否可以执行

      GetCompressedFileSize判断一个压缩文件在磁盘上实际占据的字节数

      GetCurrentDirectory在一个缓冲区中装载当前目录

      GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量

      GetDiskFreeSpaceEx获取与一个磁盘的组织以及剩余空间容量有关的信息

      GetDriveType 判断一个磁盘驱动器的类型

      GetExpandedName 取得一个压缩文件的全名

      GetFileAttributes 判断指定文件的属性

      GetFileInformationByHandle这个函数提供了获取文件信息的一种机制

      GetFileSize 判断文件长度

      GetFileTime 取得指定文件的时间信息

      GetFileType 在给出文件句柄的前提下,判断文件类型

      GetFileVersionInfo从支持版本标记的一个模块里获取文件版本信息

      GetFileVersionInfoSize针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区

      GetFullPathName 获取指定文件的完整路径名

      GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母

      GetLogicalDriveStrings获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径

      GetOverlappedResult判断一个重叠操作当前的状态

      GetPrivateProfileInt为初始化文件(.ini文件)中指定的条目获取一个整数值

      GetPrivateProfileSection获取指定小节(在.ini文件中)所有项名和值的一个列表

      GetPrivateProfileString为初始化文件中指定的条目取得字串

      GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值

      GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表

      GetProfileString 为win.ini初始化文件中指定的条目取得字串

      GetShortPathName 获取指定文件的短路径名

      GetSystemDirectory取得Windows系统目录(即System目录)的完整路径名

      GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用

      GetTempPath 获取为临时文件指定的路径

      GetVolumeInformation获取与一个磁盘卷有关的信息

      GetWindowsDirectory获取Windows目录的完整路径名

      hread 参考lread

      hwrite 参考lwrite函数

      lclose 关闭指定的文件

      lcreat 创建一个文件

      llseek 设置文件中进行读写的当前位置

      LockFile 锁定文件的某一部分,使其不与其他应用程序共享

      LockFileEx 与LockFile相似,只是它提供了更多的功能

      lopen 以二进制模式打开指定的文件

      lread 将文件中的数据读入内存缓冲区

      lwrite 将数据从内存缓冲区写入一个文件

      LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件

      LZCopy 复制一个文件

      LZInit 这个函数用于初始化内部缓冲区

      LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件

      LZRead 将数据从文件读入内存缓冲区

      LZSeek 设置一个文件中进行读写的当前位置

      MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间

      MoveFile 移动文件

      OpenFile 这个函数能执行大量不同的文件操作

      OpenFileMapping 打开一个现成的文件映射对象

      QueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况

      ReadFile 从文件中读出数据

      ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调

      RegCloseKey 关闭系统注册表中的一个项(或键)

      RegConnectRegistry访问远程系统的部分注册表

      RegCreateKey 在指定的项下创建或打开一个项

      RegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数

      RegDeleteKey 删除现有项下方一个指定的子项

      RegDeleteValue 删除指定项下方的一个值

      RegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx

      RegEnumKeyEx 枚举指定项下方的子项

      RegEnumValue 枚举指定项的值

      RegFlushKey 将对项和它的子项作出的改动实际写入磁盘

      RegGetKeySecurity 获取与一个注册表项有关的安全信息

      RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息

      RegNotifyChangeKeyValue注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制

      RegOpenKey 打开一个现有的注册表项

      RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数

      RegQueryInfoKey 获取与一个项有关的信息

      RegQueryValue 取得指定项或子项的默认(未命名)值

      RegQueryValueEx 获取一个项的设置值

      RegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息

      RegRestoreKey 从一个磁盘文件恢复注册表信息

      RegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件

      RegSetKeySecurity 设置指定项的安全特性

      RegSetValue 设置指定项或子项的默认值

      RegSetValueEx 设置指定项的值

      RegUnLoadKey 卸载指定的项以及它的所有子项

      RemoveDirectory 删除指定目录

      SearchPath 查找指定文件

      SetCurrentDirectory设置当前目录

      SetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾

      SetFileAttributes 设置文件属性

      SetFilePointer 在一个文件中设置当前的读写位置

      SetFileTime 设置文件的创建、访问及上次修改时间

      SetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果

      SetVolumeLabel 设置一个磁盘的卷标(Label)

      SystemTimeToFileTime根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构

      UnlockFile 解除对一个文件的锁定

      UnlockFileEx 解除对一个文件的锁定

      UnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射

      VerFindFile 用这个函数决定一个文件应安装到哪里

      VerInstallFile 用这个函数安装一个文件

      VerLanguageName 这个函数能根据16位语言代码获取一种语言的名称

      VerQueryValue 这个函数用于从版本资源中获取信息

      WriteFile 将数据写入一个文件

      WriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调

      WritePrivateProfileSection为一个初始化文件(.ini)中指定的小节设置所有项名和值

      WritePrivateProfileString在初始化文件指定小节内设置一个字串

      WriteProfileSection为Win.ini初始化文件中一个指定的小节设置所有项名和值

      WriteProfileString在Win.ini初始化文件指定小节内设置一个字串

      4. API之打印函数

      AbortDoc 取消一份文档的打印

      AbortPrinter 删除与一台打印机关联在一起的缓冲文件

      AddForm 为打印机的表单列表添加一个新表单

      AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号

      AddMonitor 为系统添加一个打印机监视器

      AddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口

      AddPrinter 在系统中添加一台新打印机

      AddPrinterConnection连接指定的打印机

      AddPrinterDriver 为指定的系统添加一个打印驱动程序

      AddPrintProcessor 为指定的系统添加一个打印处理器

      AddPrintProvidor 为系统添加一个打印供应商

      AdvancedDocumentProperties启动打印机文档设置对话框

      ClosePrinter 关闭一个打开的打印机对象

      ConfigurePort 针对指定的端口,启动一个端口配置对话框

      ConnectToPrinterDlg启动连接打印机对话框,用它同访问网络的打印机连接

      DeleteForm 从打印机可用表单列表中删除一个表单

      DeleteMonitor 删除指定的打印监视器

      DeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口

      DeletePrinter 将指定的打印机标志为从系统中删除

      DeletePrinterConnection删除与指定打印机的连接

      DeletePrinterDriver从系统删除一个打印机驱动程序

      DeletePrintProcessor从指定系统删除一个打印处理器

      DeletePrintProvidor从系统中删除一个打印供应商

      DeviceCapabilities利用这个函数可获得与一个设备的能力有关的信息

      DocumentProperties打印机配置控制函数

      EndDocAPI 结束一个成功的打印作业

      EndDocPrinter 在后台打印程序的级别指定一个文档的结束

      EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页

      EndPagePrinter 指定一个页在打印作业中的结尾

      EnumForms 枚举一台打印机可用的表单

      EnumJobs 枚举打印队列中的作业

      EnumMonitors 枚举可用的打印监视器

      EnumPorts 枚举一个系统可用的端口

      EnumPrinterDrivers枚举指定系统中已安装的打印机驱动程序

      EnumPrinters 枚举系统中安装的打印机

      EnumPrintProcessorDatatypes枚举由一个打印处理器支持的数据类型

      EnumPrintProcessors枚举系统中可用的打印处理器

      Escape 设备控制函数

      FindClosePrinterChangeNotification关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象

      FindFirstPrinterChangeNotification创建一个新的改变通告对象,以便我们注意打印机状态的各种变化

      FindNextPrinterChangeNotification用这个函数判断触发一次打印机改变通告信号的原因

      FreePrinterNotifyInfo释放由FindNextPrinterChangeNotification函数分配的一个缓冲区

      GetForm 取得与指定表单有关的信息

      GetJob 获取与指定作业有关的信息

      GetPrinter 取得与指定打印机有关的信息

      GetPrinterData 为打印机设置注册表配置信息

      GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息

      GetPrinterDriverDirectory判断指定系统中包含了打印机驱动程序的目录是什么

      GetPrintProcessorDirectory判断指定系统中包含了打印机处理器驱动程序及文件的目录

      OpenPrinter 打开指定的打印机,并获取打印机的句柄

      PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框

      PrinterProperties 启动打印机属性对话框,以便对打印机进行配置

      ReadPrinter 从打印机读入数据

      ResetDC 重设一个设备场景

      ResetPrinter 改变指定打印机的默认数据类型及文档设置

      ScheduleJob 提交一个要打印的作业

      SetAbortProc 为Windows指定取消函数的地址

      SetForm 为指定的表单设置信息

      SetJob 对一个打印作业的状态进行控制

      SetPrinter 对一台打印机的状态进行控制

      SetPrinterData 设置打印机的注册表配置信息

      StartDoc 开始一个打印作业

      StartDocPrinter 在后台打印的级别启动一个新文档

      StartPage 打印一个新页前要先调用这个函数

      StartPagePrinter 在打印作业中指定一个新页的开始

      WritePrinter 将发送目录中的数据写入打印机

      5. API之文本和字体函数

      AddFontResource 在Windows系统中添加一种字体资源

      CreateFont 用指定的属性创建一种逻辑字体

      CreateFontIndirect用指定的属性创建一种逻辑字体

      CreateScalableFontResource为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统

      DrawText 将文本描绘到指定的矩形中

      DrawTextEx 与DrawText相似,只是加入了更多的功能

      EnumFontFamilies 列举指定设备可用的字体

      EnumFontFamiliesEx列举指定设备可用的字体

      EnumFonts 列举指定设备可用的字体

      ExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数

      GetAspectRatioFilterEx用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小

      GetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小

      GetCharABCWidthsFloat查询一种字体中一个或多个字符的A-B-C尺寸

      GetCharacterPlacement该函数用于了解如何用一个给定的字符显示一个字串

      GetCharWidth 调查字体中一个或多个字符的宽度

      GetFontData 接收一种可缩放字体文件的数据

      GetFontLanguageInfo返回目前选入指定设备场景中的字体的信息

      GetGlyphOutline 取得TureType字体中构成一个字符的曲线信息

      GetKerningPairs 取得指定字体的字距信息

      GetOutlineTextMetrics接收与TureType字体内部特征有关的详细信息

      GetRasterizerCaps 了解系统是否有能力支持可缩放的字体

      GetTabbedTextExtent判断一个字串占据的范围,同时考虑制表站扩充的因素

      GetTextAlign 接收一个设备场景当前的文本对齐标志

      GetTextCharacterExtra判断额外字符间距的当前值

      GetTextCharset 接收当前选入指定设备场景的字体的字符集标识符

      GetTextCharsetInfo获取与当前选定字体的字符集有关的详细信息

      GetTextColor 判断当前字体颜色。通常也称为“前景色”

      GetTextExtentExPoint判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息

      GetTextExtentPoint判断一个字串的大小(范围)

      GetTextFace 获取一种字体的字样名

      GetTextMetrics 获取与选入一种设备场景的物理字体有关的信息

      GrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态

      PolyTextOut 描绘一系列字串

      RemoveFontResource从Windows系统中删除一种字体资源

      SetMapperFlagsWindows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体

      SetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置

      SetTextCharacterExtra描绘文本的时候,指定要在字符间插入的额外间距

      SetTextColor 设置当前文本颜色。这种颜色也称为“前景色”

      SetTextJustification通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理

      TabbedTextOut 支持制表站的一个文本描绘函数

      TextOut 文本绘图函数

      6. API之菜单函数

      AppendMenu 在指定的菜单里添加一个菜单项

      CheckMenuItem 复选或撤消复选指定的菜单条目

      CheckMenuRadioItem指定一个菜单条目被复选成“单选”项目

      CreateMenu 创建新菜单

      CreatePopupMenu 创建一个空的弹出式菜单

      DeleteMenu 删除指定的菜单条目

      DestroyMenu 删除指定的菜单

      DrawMenuBar 为指定的窗口重画菜单

      EnableMenuItem 允许或禁止指定的菜单条目

      GetMenu 取得窗口中一个菜单的句柄

      GetMenuCheckMarkDimensions返回一个菜单复选符的大小

      GetMenuContextHelpId取得一个菜单的帮助场景ID

      GetMenuDefaultItem判断菜单中的哪个条目是默认条目

      GetMenuItemCount 返回菜单中条目(菜单项)的数量

      GetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID

      GetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息

      GetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息

      GetMenuState 取得与指定菜单条目状态有关的信息

      GetMenuString 取得指定菜单条目的字串

      GetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置

      GetSystemMenu 取得指定窗口的系统菜单的句柄

      HiliteMenuItem 控制顶级菜单条目的加亮显示状态

      InsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动

      InsertMenuItem 插入一个新菜单条目

      IsMenu 判断指定的句柄是否为一个菜单的句柄

      LoadMenu 从指定的模块或应用程序实例中载入一个菜单

      LoadMenuIndirect 载入一个菜单

      MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点

      ModifyMenu 改变菜单条目

      RemoveMenu 删除指定的菜单条目

      SetMenu 设置窗口菜单

      SetMenuContextHelpId设置一个菜单的帮助场景ID

      SetMenuDefaultItem将一个菜单条目设为默认条目

      SetMenuItemBitmaps设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√)

      SetMenuItemInfo 为一个菜单条目设置指定的信息

      TrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单

      TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能

      7. API之位图、图标和光栅运算函数

      BitBlt 将一幅位图从一个设备场景复制到另一个

      CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序

      CopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作

      CreateBitmap 按照规定的格式创建一幅与设备有关位图

      CreateBitmapIndirect创建一幅与设备有关位图

      CreateCompatibleBitmap创建一幅与设备有关位图,它与指定的设备场景兼容

      CreateCursor 创建一个鼠标指针

      CreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图

      CreateDIBSection 创建一个DIBSection

      CreateIcon 创建一个图标

      CreateIconIndirect创建一个图标

      DestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源

      DestroyIcon 清除图标

      DrawIcon 在指定的位置画一个图标

      DrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能

      ExtractAssociatedIcon判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之

      ExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来

      GetBitmapBits 将来自位图的二进制位复制到一个缓冲区

      GetBitmapDimensionEx取得一幅位图的宽度和高度

      GetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息

      GetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里

      GetIconInfo 取得与图标有关的信息

      GetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式

      LoadBitmap 从指定的模块或应用程序实例中载入一幅位图

      LoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针

      LoadCursorFromFile在一个指针文件或一个动画指针文件的基础上创建一个指针

      LoadIcon 从指定的模块或应用程序实例中载入一个图标

      LoadImage 载入一个位图、图标或指针

      MaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理

      PatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景

      PlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理

      SetBitmapBits 将来自缓冲区的二进制位复制到一幅位图

      SetBitmapDimensionEx设置一幅位图的宽度。以一毫米的十分之一为单位

      SetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息

      SetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里

      SetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备

      SetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式

      StretchBlt 将一幅位图从一个设备场景复制到另一个

      StretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景

      8. API之绘图函数

      AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作

      AngleArc 用一个连接弧画一条线

      Arc 画一个圆弧

      BeginPath 启动一个路径分支

      CancelDC 取消另一个线程里的长时间绘图操作

      Chord 画一个弦

      CloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄

      CloseFigure 描绘到一个路径时,关闭当前打开的图形

      CloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄

      CopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝)

      CopyMetaFile 制作指定(标准)图元文件的一个副本

      CreateBrushIndirect在一个LOGBRUSH数据结构的基础上创建一个刷子

      CreateDIBPatternBrush用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案)

      CreateEnhMetaFile 创建一个增强型的图元文件设备场景

      CreateHatchBrush 创建带有阴影图案的一个刷子

      CreateMetaFile 创建一个图元文件设备场景

      CreatePatternBrush用指定了刷子图案的一幅位图创建一个刷子

      CreatePen 用指定的样式、宽度和颜色创建一个画笔

      CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔

      CreateSolidBrush 用纯色创建一个刷子

      DeleteEnhMetaFile 删除指定的增强型图元文件

      DeleteMetaFile 删除指定的图元文件

      DeleteObject 删除GDI对象,对象使用的所有系统资源都会被释放

      DrawEdge 用指定的样式描绘一个矩形的边框

      DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序

      DrawFocusRect 画一个焦点矩形

      DrawFrameControl 描绘一个标准控件

      DrawState 为一幅图象或绘图操作应用各式各样的效果

      Ellipse 描绘一个椭圆,由指定的矩形围绕

      EndPath 停止定义一个路径

      EnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录

      EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录

      EnumObjects 枚举可随同指定设备场景使用的画笔和刷子

      ExtCreatePen 创建一个扩展画笔(装饰或几何)

      ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域

      FillPath 关闭路径中任何打开的图形,并用当前刷子填充

      FillRect 用指定的刷子填充一个矩形

      FlattenPath 将一个路径中的所有曲线都转换成线段

      FloodFill 用当前选定的刷子在指定的设备场景中填充一个区域

      FrameRect 用指定的刷子围绕一个矩形画一个边框

      GdiComment 为指定的增强型图元文件设备场景添加一条注释信息

      GdiFlush 执行任何未决的绘图操作

      GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中

      GdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列

      GetArcDirection 画圆弧的时候,判断当前采用的绘图方向

      GetBkColor 取得指定设备场景当前的背景颜色

      GetBkMode 针对指定的设备场景,取得当前的背景填充模式

      GetBrushOrgEx 判断指定设备场景中当前选定刷子起点

      GetCurrentObject 获得指定类型的当前选定对象

      GetCurrentPositionEx在指定的设备场景中取得当前的画笔位置

      GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄

      GetEnhMetaFileBits将指定的增强型图元文件复制到一个内存缓冲区里

      GetEnhMetaFileDescription返回对一个增强型图元文件的说明

      GetEnhMetaFileHeader取得增强型图元文件的图元文件头

      GetEnhMetaFilePaletteEntries取得增强型图元文件的全部或部分调色板

      GetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄

      GetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区

      GetMiterLimit 取得设备场景的斜率限制(Miter)设置

      GetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色

      GetObjectAPI 取得对指定对象进行说明的一个结构

      GetObjectType 判断由指定句柄引用的GDI对象的类型

      GetPath 取得对当前路径进行定义的一系列数据

      GetPixel 在指定的设备场景中取得一个像素的RGB值

      GetPolyFillMode 针对指定的设备场景,获得多边形填充模式

      GetROP2 针对指定的设备场景,取得当前的绘图模式

      GetStockObject 取得一个固有对象(Stock)

      GetSysColorBrush 为任何一种标准系统颜色取得一个刷子

      GetWinMetaFileBits通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件

      InvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形

      LineDDA 枚举指定线段中的所有点

      LineTo 用当前画笔画一条线,从当前位置连到一个指定的点

      MoveToEx 为指定的设备场景指定一个新的当前画笔位置

      PaintDesk 在指定的设备场景中描绘桌面墙纸图案

      PathToRegion 将当前选定的路径转换到一个区域里

      Pie 画一个饼图

      PlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件

      PlayEnhMetaFileRecord回放单独一条增强型图元文件记录

      PlayMetaFile 在指定的设备场景中回放一个图元文件

      PlayMetaFileRecord回放来自图元文件的单条记录

      PolyBezier 描绘一条或多条贝塞尔(Bezier)曲线

      PolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成

      Polygon 描绘一个多边形

      Polyline 用当前画笔描绘一系列线段

      PolyPolygon 用当前选定画笔描绘两个或多个多边形

      PolyPolyline 用当前选定画笔描绘两个或多个多边形

      Rectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充

      RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充

      SelectClipPath 将设备场景当前的路径合并到剪切区域里

      SelectObject 为当前设备场景选择图形对象

      SetArcDirection 设置圆弧的描绘方向

      SetBkColor 为指定的设备场景设置背景颜色

      SetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式

      SetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点

      SetEnhMetaFileBits用指定内存缓冲区内包含的数据创建一个增强型图元文件

      SetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件

      SetMiterLimit 设置设备场景当前的斜率限制

      SetPixel 在指定的设备场景中设置一个像素的RGB值

      SetPixelV 在指定的设备场景中设置一个像素的RGB值

      SetPolyFillMode 设置多边形的填充模式

      SetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致

      SetWinMetaFileBits将一个标准Windows图元文件转换成增强型图元文件

      StrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域

      StrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭

    UnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用

    SetBrushOrgEx修改,则必须先调用本函数

      WidenPath 根据选定画笔的宽度,重新定义当前选定的路径

      9. API之设备场景函数

      CombineRgn 将两个区域组合为一个新区域

      CombineTransform 驱动世界转换。它相当于依顺序进行两次转换

      CreateCompatibleDC创建一个与特定设备场景一致的内存设备场景

      CreateDC 为专门设备创建设备场景

      CreateEllipticRgn 创建一个椭圆

      CreateEllipticRgnIndirect创建一个内切于特定矩形的椭圆区域

      CreateIC 为专用设备创建一个信息场景

      CreatePolygonRgn 创建一个由一系列点围成的区域

      CreatePolyPolygonRgn创建由多个多边形构成的区域。每个多边形都应是封闭的

      CreateRectRgn 创建一个矩形区域

      CreateRectRgnIndirect创建一个矩形区域

      CreateRoundRectRgn创建一个圆角矩形

      DeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源

      DPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标

      EqualRgn 确定两个区域是否相等

      ExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图

      ExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域

      ExtCreateRegion 根据世界转换修改区域

      ExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区

      FillRgn 用指定刷子填充指定区域

      FrameRgn 用指定刷子围绕指定区域画一个外框

      GetBoundsRect 获取指定设备场景的边界矩形

      GetClipBox 获取完全包含指定设备场景剪裁区的最小矩形

      GetClipRgn 获取设备场景当前剪裁区

      GetDC 获取指定窗口的设备场景

      GetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项

      GetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示)

      GetDeviceCaps 根据指定设备场景代表的设备的功能返回信息

      GetGraphicsMode 确定是否允许增强图形模式(世界转换)

      GetMapMode 为特定设备场景调入映象模式

      GetRegionData 装入描述一个区域信息的RgnData结构或缓冲区

      GetRgnBox 获取完全包含指定区域的最小矩形

      GetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新

      GetViewportExtEx 获取设备场景视口(viewport)范围

      GetViewportOrgEx 获取设备场景视口起点

      GetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景

      GetWindowExtEx 获取指定设备场景的窗口范围

      GetWindowOrgEx 获取指定设备场景的逻辑窗口的起点

      GetWindowRgn 获取窗口区域

      GetWorldTransform 如果有世界转换,为设备场景获取当前世界转换

      IntersectClipRect 为指定设备定义一个新的剪裁区

      InvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画

      InvertRgn 通过颠倒每个像素值反转设备场景指定区域

      LPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标

      ModifyWorldTransform根据指定的模式修改世界转换

      OffsetClipRgn 按指定量平移设备场景剪裁区

      OffsetRgn 按指定偏移量平移指定区域

      OffsetViewportOrgEx平移设备场景视口区域

      OffsetWindowOrgEx 平移指定设备场景窗口起点

      PaintRgn 用当前刷子背景色填充指定区域

      PtInRegion 确定点是否在指定区域内

      PtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内)

      RectInRegion 确定矩形是否有部分在指定区域内

      RectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)

      ReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景

      RestoreDC 从设备场景堆栈恢复一个原先保存的设备场景

      SaveDC 将指定设备场景状态保存到Windows设备场景堆栈

      ScaleViewportExtEx缩放设备场景视口的范围

      ScaleWindowExtEx 缩放指定设备场景窗口范围

      ScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形

      SelectClipRgn 为指定设备场景选择新的剪裁区

      SetBoundsRect 设置指定设备场景的边界矩形

      SetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换)

      SetMapMode 设置指定设备场景的映射模式

      SetRectRgn 设置区域为指定的矩形

      SetViewportExtEx 设置设备场景视口范围

      SetViewportOrgEx 设置设备场景视口起点

      SetWindowExtEx 设置指定设备场景窗口范围

      SetWindowOrgEx 设置指定设备场景窗口起点

      SetWindowRgn 设置窗口区域

      SetWorldTransform 设置世界转换

      ValidateRgn 激活窗口中指定区域,把它从刷新区移走

      WindowFromDC 取回与某一设备场景相关的窗口的句柄

      10. API之硬件与系统函数

      ActivateKeyboardLayout激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义

      Beep 用于生成简单的声音

      CharToOem 将一个字串从ANSI字符集转换到OEM字符集

      ClipCursor 将指针限制到指定区域

      ConvertDefaultLocale将一个特殊的地方标识符转换成真实的地方ID

      CreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符

      DestroyCaret 清除(破坏)一个插入符

      EnumCalendarInfo 枚举在指定“地方”环境中可用的日历信息

      EnumDateFormats 列举指定的“当地”设置中可用的长、短日期格式

      EnumSystemCodePages枚举系统中已安装或支持的代码页

      EnumSystemLocales 枚举系统已经安装或提供支持的“地方”设置

      EnumTimeFormats 枚举一个指定的地方适用的时间格式

      ExitWindowsEx 退出windows,并用特定的选项重新启动

      ExpandEnvironmentStrings扩充环境字串

      FreeEnvironmentStrings翻译指定的环境字串块

      GetACP 判断目前正在生效的ANSI代码页

      GetAsyncKeyState 判断函数调用时指定虚拟键的状态

      GetCaretBlinkTime 判断插入符光标的闪烁频率

      GetCaretPos 判断插入符的当前位置

      GetClipCursor 取得一个矩形,用于描述目前为鼠标指针规定的剪切区域

      GetCommandLine 获得指向当前命令行缓冲区的一个指针

      GetComputerName 取得这台计算机的名称

      GetCPInfo 取得与指定代码页有关的信息

      GetCurrencyFormat 针对指定的“地方”设置,根据货币格式格式化一个数字

      GetCursor 获取目前选择的鼠标指针的句柄

      GetCursorPos 获取鼠标指针的当前位置

      GetDateFormat 针对指定的“当地”格式,对一个系统日期进行格式化

      GetDoubleClickTime判断连续两次鼠标单击之间会被处理成双击事件的间隔时间

      GetEnvironmentStrings为包含了当前环境字串设置的一个内存块分配和返回一个句柄

      GetEnvironmentVariable取得一个环境变量的值

      GetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件

      GetKBCodePage 由GetOEMCP取代,两者功能完全相同

      GetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局

      GetKeyboardLayoutList获得系统适用的所有键盘布局的一个列表

      GetKeyboardLayoutName取得当前活动键盘布局的名称

      GetKeyboardState 取得键盘上每个虚拟键当前的状态

      GetKeyboardType 了解与正在使用的键盘有关的信息

      GetKeyNameText 在给出扫描码的前提下,判断键名

      GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态

      GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息

      GetLocaleInfo 取得与指定“地方”有关的信息

      GetLocalTime 取得本地日期和时间

      GetNumberFormat 针对指定的“地方”,按特定的格式格式化一个数字

      GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页

      GetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型

      GetSysColor 判断指定windows显示对象的颜色

      GetSystemDefaultLangID取得系统的默认语言ID

      GetSystemDefaultLCID取得当前的默认系统“地方”

      GetSystemInfo 取得与底层硬件平台有关的信息

      GetSystemMetrics 返回与windows环境有关的信息

      GetSystemPowerStatus获得与当前系统电源状态有关的信息

      GetSystemTime 取得当前系统时间,这个时间采用的是“协同世界时间”(即UTC,也叫做GMT)格式

      GetSystemTimeAdjustment使内部系统时钟与一个外部的时钟信号源同步

      GetThreadLocale 取得当前线程的地方ID

      GetTickCount 用于获取自windows启动以来经历的时间长度(毫秒)

      GetTimeFormat 针对当前指定的“地方”,按特定的格式格式化一个系统时间

      GetTimeZoneInformation取得与系统时区设置有关的信息

      GetUserDefaultLangID为当前用户取得默认语言ID

      GetUserDefaultLCID取得当前用户的默认“地方”设置

      GetUserName 取得当前用户的名字

      GetVersion 判断当前运行的Windows和DOS版本

      GetVersionEx 取得与平台和操作系统有关的版本信息

      HideCaret 在指定的窗口隐藏插入符(光标)

      IsValidCodePage 判断一个代码页是否有效

      IsValidLocale 判断地方标识符是否有效

      keybd_event 这个函数模拟了键盘行动

      LoadKeyboardLayout载入一个键盘布局

      MapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换

      MapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换

      MessageBeep 播放一个系统声音。系统声音的分配方案是在控制面板里决定的

      mouse_event 模拟一次鼠标事件

      OemKeyScan 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态

      OemToChar 将OEM字符集的一个字串转换到ANSI字符集

      SetCaretBlinkTime 指定插入符(光标)的闪烁频率

      SetCaretPos 指定插入符的位置

      SetComputerName 设置新的计算机名

      SetCursor 将指定的鼠标指针设为当前指针

      SetCursorPos 设置指针的位置

      SetDoubleClickTime设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间

      SetEnvironmentVariable将一个环境变量设为指定的值

      SetKeyboardState 设置每个虚拟键当前在键盘上的状态

      SetLocaleInfo 改变用户“地方”设置信息

      SetLocalTime 设置当前地方时间

      SetSysColors 设置指定窗口显示对象的颜色

      SetSystemCursor 改变任何一个标准系统指针

      SetSystemTime 设置当前系统时间

      SetSystemTimeAdjustment定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步

      SetThreadLocale 为当前线程设置地方

      SetTimeZoneInformation设置系统时区信息

      ShowCaret 在指定的窗口里显示插入符(光标)

      ShowCursor 控制鼠标指针的可视性

      SwapMouseButton 决定是否互换鼠标左右键的功能

      SystemParametersInfo获取和设置数量众多的windows系统参数

      SystemTimeToTzSpecificLocalTime将系统时间转换成地方时间

      ToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符

      ToUnicode 根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符

      UnloadKeyboardLayout卸载指定的键盘布局

      VkKeyScan 针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态

      11. API之进程和线程函数

      CancelWaitableTimer这个函数用于取消一个可以等待下去的计时器操作

      CallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用

      ConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接

      CreateEvent 创建一个事件对象

      CreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人)

      CreateMutex 创建一个互斥体(MUTEX)

      CreateNamedPipe 创建一个命名管道。返回的句柄由管道的服务器端使用

      CreatePipe 创建一个匿名管道

      CreateProcess 创建一个新进程(比如执行一个程序)

      CreateSemaphore 创建一个新的信号机

      CreateWaitableTimer创建一个可等待的计时器对象

      DisconnectNamedPipe断开一个客户与一个命名管道的连接

      DuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄

      ExitProcess 中止一个进程

      FindCloseChangeNotification关闭一个改动通知对象

      FindExecutable 查找与一个指定文件关联在一起的程序的文件名

      FindFirstChangeNotification创建一个文件通知对象。该对象用于监视文件系统发生的变化

      FindNextChangeNotification重设一个文件改变通知对象,令其继续监视下一次变化

      FreeLibrary 释放指定的动态链接库

      GetCurrentProcess 获取当前进程的一个伪句柄

      GetCurrentProcessId获取当前进程一个唯一的标识符

      GetCurrentThread 获取当前线程的一个伪句柄

      GetCurrentThreadId获取当前线程一个唯一的线程标识符

      GetExitCodeProces 获取一个已中断进程的退出代码

      GetExitCodeThread 获取一个已中止线程的退出代码

      GetHandleInformation获取与一个系统对象句柄有关的信息

      GetMailslotInfo 获取与一个邮路有关的信息

      GetModuleFileName 获取一个已装载模板的完整路径名称

      GetModuleHandle 获取一个应用程序或动态链接库的模块句柄

      GetPriorityClass 获取特定进程的优先级别

      GetProcessShutdownParameters调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况

      GetProcessTimes 获取与一个进程的经过时间有关的信息

      GetProcessWorkingSetSize了解一个应用程序在运行过程中实际向它交付了多大容量的内存

      GetSartupInfo 获取一个进程的启动信息

      GetThreadPriority 获取特定线程的优先级别

      GetTheardTimes 获取与一个线程的经过时间有关的信息

      GetWindowThreadProcessId获取与指定窗口关联在一起的一个进程和线程标识符

      LoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间

      LoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间

      LoadModule 载入一个Windows应用程序,并在指定的环境中运行

      MsgWaitForMultipleObjects等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回

      SetPriorityClass 设置一个进程的优先级别

      SetProcessShutdownParameters在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序

      SetProcessWorkingSetSize设置操作系统实际划分给进程使用的内存容量

      SetThreadPriority 设定线程的优先级别

      ShellExecute 查找与指定文件关联在一起的程序的文件名

      TerminateProcess 结束一个进程

      WinExec 运行指定的程序

    展开全文
  • MFC中UpdateData函数解析

    2013-12-17 13:19:00
    使用UpdateData()函数时,当前界面上所有绑定了的变量(即通过MFC ClassWizard给控件添加了对应的变量)都会被UpdateData(TRUE)更新成对应控件中的内容; 同样所有绑定了变量的控件中的内容也会 UpdateData(FALSE)...
  • 另外注意一点: 使用UpdateData()函数时,当前界面上所有绑定了的变量(即通过MFC ClassWizard给控件添加了对应的变量)都会被UpdateData(TRUE)更新成对应控件中的内容;同样所有绑定了变量的控件中的内容也会 ...
  • 要禁止系统搽除你的窗口,可以重载OnEraseBkgnd()函数,让其直接返回TRUE就可以了。如 BOOL CMyWin :: OnEraseBkgnd ( CDC * pDC ) { return TRUE ; //return CWnd::OnEraseBkgnd(pDC);//把系统原来的这条...
  • MFC 刷新界面

    千次阅读 2018-02-28 08:23:32
    按引:Invalidate在消息队列中加入一条WM_PAINT消息,其无效...效果很明显,调用Invalidate之后,屏幕不一定马上更新,因为WM_PAINT消息不一定在队列头部,而调用UpdateWindow会使WM_PAINT消息马上执行的,绕过了消...
  • MFC利用双缓冲实现屏幕无闪烁刷新

    千次阅读 2012-07-13 19:27:31
     我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘
  • MFC函数大全

    2018-02-06 15:07:00
    GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 GetMessageTime 取得消息队列中上一条消息处理完毕时的时间 PostMessage 将一条消息投递到指定窗口的消息队列 PostThreadMessage 将一条...
  • MFC一些函数说明

    2013-07-11 12:51:12
    BOOL IsWindow(HWND hWnd):该函数确定给定的窗口句柄是否标识一个已存在的窗口。
  • InvalidateRect()函数的作用是设置一个无效区域,并发送一个WM_PAINT消息到消息队列中,不过这个消息在众多的消息之中优先级比较级。 在VC++编程中,对无效区域的处理方式是: 在OnPaint()中绘图,不管它绘制了...
  • updateData函数声明 // 位于afxwin.h文件中 // Dialog Data support public: BOOL UpdateData(BOOL ...UpdateData() 是MFC的窗口函数,用来刷新数据的。 总的来说:操作系统会调用这个函数来初始化对话框中的数据,
  • MFC中位图显示函数

    千次阅读 2016-06-20 17:21:34
    我们常说的屏幕分辨率为640×480,刷新频率为70Hz,意思是说每行要扫描640个象素,一共有480行,每秒重复扫描屏幕70次。   理解调色板 有一个长宽各为200个象素,颜色数为16色的彩色图,每一个象素都用R、G、B三...
  • 刷新函数小结

    千次阅读 2009-03-20 21:32:00
    所以只是刷新在OnPaint()和OnDraw()函数中的绘图语句。其它地方没有影响。 Invalidate标记一个需要重绘的无效区域,并不意味着调用该函数后就立刻进行重绘。类似于PostMessage(WM_PAINT),需要处理到WM_PAINT消息...
  • MFC入门指导 2011-3 说明  本文从零讲起,内容简单,旨在帮助MFC零基础的同学快速上手,可以短时间内做出简单的可视化界面。工程环境:Visual C++ 6.0;语言基础:C++。   1. 怎样创建MFC工程 打开VC6,...
  • 我想在MFC中也能把函数中的计算结果随时输出到文档的窗口本文档可以在任何函数中随意(顺序)输出到屏幕,可以在屏幕的任何位置然后时候输出文字,当然输出后如果被刷新就消失了,在MFC中也能把函数中的计算结果随时...
  • 背景   前置文章:MFC鼠标滚轮缩放OpenCV图片   使用滚轮缩小图片,使其小于MFC的PictrueContral控件大小时,发现缩小前的图片依旧存在,缩小...  在显示图片之前添加如下代码刷新MFC的PictrueContral控件,其...
  • MFC消息响应函数OnPaint

    2021-07-23 09:37:47
    MFC消息响应函数OnPaint WM_PAINT是窗口每次重绘都会产生的一个消息。 OnPaint是对这个消息的反应函数 mfc 的 CWnd::OnPaint 没做什么,只是丢给系统处理。 一 : 先执行OnEraseBkgnd,擦除背景(如果想自绘控件,这...
  • MFC函数速查大全

    万次阅读 2007-03-29 00:50:00
    MFC函数书本速查+API函数大全 [ 日期:2006-08-16 ] [ 来自:本站原创 ] 基础类 CObject AssertValid p3 Dump p3 IsSerializable p4 Serializable p4 GetRuntimeClass p4 IsKindOf p5 CCmdTarget FromIDispatch p5...
  • MFC双缓冲图形刷新

    2013-03-12 09:20:25
    绘图时屏幕闪烁的原因分析 很长一段时间我一直认为绘图过程中出现的屏幕闪烁是...1、编写一个刷新速度很慢的应用程序,可以设计为通过点击鼠标来进行屏幕刷新。通过该试验可以发现即使屏幕的刷新速度很慢,但是在每
  • 双缓冲技术解决屏幕刷新闪烁

    千次阅读 2016-12-03 16:13:30
    1. 屏幕刷新时产生闪烁的原因 在MFC对话框上画图形,当需要显示新的图形或使原来的图形显示发生变化时,就需要刷新背景,也就是用背景颜色的画刷把背景重新刷一遍,这样就把原来的图形覆盖掉了,然后画上新图形,...
  • MFC 的窗口刷新接口

    千次阅读 2014-11-12 17:26:12
    MFC为窗口类提供了 WM_PAINT 的消息处理函数 OnPaint,OnPaint 负责重绘窗口。视图类有一些例外,在视图类的 OnPaint 函数中调用了 OnDraw 函数,实际的重绘工作由 OnDraw 来完成。参数 bErase 为 TRUE 时,重绘区域...
  • 基础类CObjectAssertValid p3Dump p3IsSerializable p4Serializable p4GetRuntimeClass p4IsKindOf p5CCmdTargetFromIDispatch p5GetIDispatch p6IsResultExpected p6BeginWaitCursor p6DoOleVerb p6Enab...
  • MFC函数简单解释(更新至28日凌晨)

    千次阅读 2016-02-25 21:17:38
    以该博文http://blog.csdn.net/column/details/megogame.html 为基础,涉及到的每个都尽量解释和说明其用法。...函数或命令:   所属类:   原型:   说明:   参考链接:   ———————————————

空空如也

空空如也

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

mfc屏幕刷新函数