RT,我创建了一个非windowless的Activex控件,内部创建了一个 
CContainedWindow m_ctlStatic;
我知道,如果是windowless的窗口,我在OnDraw中,获得容器的区域和DC,然后绘制在容器上面即可。现在是非windowless的窗口,我改在哪绘制?怎么绘制?是使用CContainedWindow来绘制吗?
请高人指教!

解决方案 »

  1.   

    我重载了OnDraw函数,跟windowless控件一样 的绘制,但是结果看不到任何区别
    OnDraw(ATL_DRAWINFO& di)
    不知道上面 传递进来的dc和区域是否是控件本身的,还是外面的容器的?
      

  2.   

    STATIC设置为自绘,然后响应它的WM_PAINT消息即可,OnDraw在有句柄控件中是无效的
      

  3.   

    可以说清楚一点不哦,是响应 CContainedWindow m_ctlStatic 的WM_ONPAINT吗?
      

  4.   


    CContainedWindow  怎么设置自绘啊?我第一次用ATL哈,菜鸟
      

  5.   

    你可以从CStatic派生一个类,或者子类化一个存在的窗口,就能响应控件的消息了
      

  6.   

    jameshooo
     大爷,求你了,急啊,分可以再加,有些情况我一下说不清啊
      

  7.   

    有没有人指教下,怎么搞一个非windowless的activex控件,我会搞windowless的,但是非windowless的,也就是自己有窗口的,改怎么搞???对于稍微熟悉ATL的人都不会太难吧
    若有解决,额外奉献100分
      

  8.   

    这个如果m_bWindowOnly=1;那么他给你生成了一个窗口,在窗口消息里画就是了;如果这里显示不出,一定是某个地方没注意.
    不管用什么,其实画图的环境都帮你整好了,试试看看你的HDC的环境是不是有问题,或者在向导生成的代码里直接修改他画出来的那行字, 就可以证明哪错了
      

  9.   

    如果是非windowless的activex控件,自身就会生成一个窗口,响应该窗口的onpaint消息就能绘制了撒。