我的需求:EDIT同时支持画线和输入文字。1、可以在EDIT控件中画图,其实就是记录鼠标移动的轨迹,LineTo画线而已。2、这个EDIT控件仍然可以输入文字,并且画的线和输入的文字都完整保留
我的实现方式:
    使用SetWindowlong给EDIT控件设置新的处理过程,在过程中处理LBUTTONDOWN、MOUSEMOVE、LBUTTONUP等消息。其中在MOUSEMOVE里面使用LineTo画出鼠标的轨迹现在存在的问题是:1、画完线后,再输入文字,EDIT控件会自动擦除一部分背景(文字高度*控件宽度的区域),这个问题我在En_Change中重绘线段就可以勉强处理了。不知有没有更好的办法?2、在多行文字的情况下,用鼠标拖动来选择文字,所选择的多行文字的高度*控件宽度的区域都会被擦除,这个问题不知如何处理了?尝试在MOUSEMOVE中重绘线段,看起来倒是可以解决似的。但效果不是太好~所以我不认为这是解决问题的好办法。
请各位大大给个方案吧!!

解决方案 »

  1.   

    自绘的 edit?
    输出文字时设置背景透明模式,SetBkMode(TRANSPARENT);
    选中时如果绘制的是矩形框,需要设置为空画刷 selectObject(NULL_BRUSH);
      

  2.   

    谢谢楼上回复,不过我用的EDIT是VS自带的EDIT控件,我没有自己写控件。
    只是重新设置了EDIT控件的处理过程来接收鼠标移动的消息而已。
      

  3.   

    以你的需求,不自己写一个Edit类是无法完成的。
    需要自绘制这个Edit类。