新建1个ATL COM工程. 完毕之后点击vc菜单Insert项下的 New ATL Object。然后选controls里的compsite Control
然后生成1个新的class. 再resource里的窗体上随便放个按钮回到ClassView.选择新加的这个类,添加1个windows消息处理函数。处理WM_PAINT消息,添加完以后什么也不做。编译成功后用ActiveX容器测试。你将发现。 cpu 100%

解决方案 »

  1.   

    tnnd,竟然出了个错,不过没有100%啊
      

  2.   

    不就是相当于添加1个MESSAGE_HANDLER(WM_PAINT, OnPaint)
    再添加
    LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
    // TODO : Add Code for message handler. Call DefWindowProc if necessary.
    return 0;
    }100%啊?
      

  3.   

    傻瓜!OnPaint是必须做事的,不然,Windows会固执的发WM_PAINT给你。
    我不太清楚ATL,不过,使用MFC的话,必须加这么一句:CPaintDC dc(this);
      

  4.   

    WM_PAINT 是不进队消息,只取决于 message queue 的一个标志 PM_QS_PAINT ,如果响应 WM_PAINT 而不清除这个标志,消息循环的 GetMessage 将不断返回 WM_PAINT.清除标志的方法有:
    1.
    ValidateRect(hWnd, NULL);2.
    PAINTSTRUCT ps;
    BeginPaint(hWnd, &ps);
    EndPaint(&ps);
      

  5.   

    原来是这样 ,谢谢 ln355Hz