zoukankan      html  css  js  c++  java
  • CWnd创建WS_CHILD和WS_POPUP窗口的不同

    转载:http://blog.csdn.net/tangaowen/article/details/6054152

    最近在写一个从CWnd派生出来的自绘窗口,以前在包装自己的类的Create函数都是这么写的:

    BOOL  CXXX::Create(DWORD dwStyle, const RECT &rect, CWnd *pParentWnd, UINT nID, CCreateContext *pContext)  
    {  
          if (!CWnd::Create(GUOGUOTIPSUPWINDOW_CLASSNAME, NULL, dwStyle, rect, pParentWnd, nID, pContext))  
             return FALSE;  
          return true;  
    }  

        这次也这么写,以前都是创建的WS_CHILD的窗口,都是这么调用的:

    DWORD  style=WS_CHILD|WS_OVERLAPPED;
        m_tooltips.Create(style,CRect(0,0,300,300),NULLthis,NULL,NULL);

        没有任何问题。

        

       这次要创建一个WS_POPUP类型的窗口,当然就按照下面这么调用了:

    DWORD  style=WS_POPUP|WS_OVERLAPPED;
        m_tooltips.Create(style,CRect(0,0,300,300),NULL,NULL,NULL);

        但是,结果却crash了,郁闷了。

        查了半天发现,原来是Create函数的实现出了问题。

         CWnd::Create函数只能创建非WS_POPUP的窗口风格的窗口。而如果要创建WS_POPUP的窗口和有扩展风格的窗口,必须调用CWnd::CreateEx才能搞定。

         MSDN对Create的说明:

         Creates and initializes the child window associated with the CWnd object.

         MSDN对CreateEx的说明:

        Creates a Windows overlapped, pop-up, or child window and attaches it to a  CWnd object.


  • 相关阅读:
    ◆◆0[BAPI]如何修改工单状态-BAPI_ALM_ORDER_MAINTAIN
    ◆◆0[BAPI]如何读取采购订单PO审批状态数据-[BAPI_PO_GETRELINFO]
    ◆◆0[问题解决]开启了adsubcon调用BAPI_GOODSMVT_CREATE创建物料凭证时第一行批次错误
    ◆◆0如何查看ECC系统中配置的PI连接账号
    ◆◆0[问题解决]调用BAPI_ACC_DOCUMENT_POST时报错“被合并的公司 XXXX 和 XXXX 是不同的”
    [问题解决]创建预制发票(BAPI_INCOMINGINVOICE_PARK)时报错”采购凭证的帐户设置00不存在”
    [BAPI]读取设备用户状态和系统状态-BAPI_EQUI_GETSTATUS
    28-高级特性之作用域(2)
    31-高级特性之装饰器(1)
    30-高级特性之闭包(2)
  • 原文地址:https://www.cnblogs.com/staring-hxs/p/3434169.html
Copyright © 2011-2022 走看看