IE8有放大小缩小的功能,界面上的元素会相应放大缩小,
我发MFC的ActiveX可以做出这个响应,但很可怜,调来调去后就显示的乱了,
Atl的干脆就不支持这个缩放(主要是字体不跟着缩放),但是在OnDraw的参数里却也能体现出当前控件缩放的情况,现在的问题是,当ActiveX被IE缩放后不能正常的发生重绘(我的是Win7),显示的乱的,于是我想问的是我怎么能第一时间得知现在IE的缩放情况,且自动来适应呢?注:我已知道怎么在Atl里缩放字体了,主要是不知道IE缩放的消息以便我及时的重绘。我试过Size事件,但不太好使。请指教!

解决方案 »

  1.   

    关注下,lz 怎么 处理 "Atl里缩放字体" 的?
      

  2.   

    VARIANT varIn, varOut;   
      varIn.vt   =   VT_I4;   
      varIn.lVal   =   4;   //size   here   
      ExecWB(OLECMDID_ZOOM,   OLECMDEXECOPT_DONTPROMPTUSER,   &varIn,   &varOut); 
      

  3.   

    这个好像是请求让IE缩放的,我现在的目的是想被动的知道已被缩放了。就像改变了控件的大小然后发生WM_SIZE一样。我需这样的一个或几个消息或是其它有用的信息。
      

  4.   

    VARIANT varIn, varOut;   
      varIn.vt = VT_I4;   
      varIn.lVal = 4; //size here   
      ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, &varIn, &varOut); 
      

  5.   

    提供 IOleCommandTarget 接口,这样就拦截了 Exec 函数了
      

  6.   


    我为什么要拦截Exec呢? IE会把它Zoom的消息通过Exec来通知我的控件吗?我试了IOleCommandTarget接口,Exec一点反应也没有。帖子加分了,希望高手支招!
      

  7.   

    非常奇怪,我在添加了WM_WINDOWPOSCHANGED消息映射后,程序也能运行到方法OnPosChanged里,我在这个方法里调用this.Invalidate(),发现OnDraw没有任何反应,郁闷,很郁闷!
      

  8.   

    哥们   你和我问题一样   请问解决了吗    我现在想知道IE当前百分比和IE改变百分比进什么消息