至少它们在创建时都用的是CreateWindow或CreateWindowEx,然后都会用一个句柄,一个窗口过程。

解决方案 »

  1.   

    大量的api 调用,无论很麽样的类库
      

  2.   

    这是对WINDOWS的API的两种不同的封装。
    如果你愿意,你也可以写一个类库来封装:)
      

  3.   

    标准类库? 也许有些地方用这样的词来称呼MFC,VCL吧,但这'标准'是
    习惯性的称呼,并不意味着它们是标准。
    一般的WINDOWS程序都离不开下面这三个DLL
    kernal.dll,
    GDI.dll,
    user.dll。
    它们至少是需要用到这三个DLL提供的函数。
    具体细节可以看看WINDOWS SDK的资料。
    我想你所说的那个就是它们。使用类库。。不仅仅是方便,更重要的是为开发者和操作系统提供了
    层次上的隔离。
      

  4.   

    对TButton,CButton都是封装了标准的windows控件,也都是使用了windows的预定
    义窗口类"BUTTON",这是基本的界面原素
    好象存在于'USER.DLL'里把,不太清楚从源码可看到
    TButtonprocedure TButton.CreateParams(var Params: TCreateParams);
    const
      ButtonStyles: array[Boolean] of DWORD = (BS_PUSHBUTTON, BS_DEFPUSHBUTTON);
    begin
      inherited CreateParams(Params);
      CreateSubClass(Params, 'BUTTON');   //这取的"BUTTON"类
      Params.Style := Params.Style or ButtonStyles[FDefault];
    end;CButton:BOOL CButton::Create(LPCTSTR lpszCaption, DWORD dwStyle,
    const RECT& rect, CWnd* pParentWnd, UINT nID)
    {
    CWnd* pWnd = this;
    return pWnd->Create(_T("BUTTON"), lpszCaption, dwStyle, rect, pParentWnd, nID);
    }这个也是"BUTTON"类
      

  5.   

    "实质上调用了同一个东西"
    我觉得这个东西就是调用了存在于系统的DLL中的"BUTTON"类的窗口过程
    由这个窗口过程来负责绘制BUTTON的外观,响应一些行为等,
      

  6.   

    实质上都是基于WINDOWS API函数的,两家公司都是对此进行了一个封装。
      

  7.   

    mfc只是对api的简单的封装,在你使用的时候能不时的见到api的影子
    而vcl是较高级的封装,象canvas对dc的封装