需求:
  在计算器的标题栏的中间加一个图标,响应用户点击事件,(响应要求: 就弹个消息框吧)实现:
  语言不限.
  效率不考虑.
  WINDOWS平台.请赐教.

解决方案 »

  1.   

    http://www.vckbase.com/document/viewdoc/?id=301
      

  2.   

    横秋先生的方法是可行的,采用远程线程注入.其最终解法有两个,一个是挂自己的DLL并在DLL中实现,另一个是直接在远程线程中实现.前者是优点是省力,但多一个DLL. 后者是干净,但需要自己处理除kernal32以外各API的重定位. 横秋先生可获100点.在相互先生的担心是有道理的,不过如果已在计算器的自己的内存空间里了,在标题栏上加按钮是有解的,此问题已被讨论过多次.psbeyond先生的方法是不可取,因为你无法在计算器的的非用户区创建一个子窗口.如果不是子窗口,你无法让它平滑地和计算器一起移动,消失以及activate/decativated,而用保持其永远且仅在计算器上面,不被其他窗口所干扰也是异常困难的. 不过如果你能用代码实现,那仍是十分欢迎的.谢谢诸位的指教,并继续希望再有其他的实现方法.
      

  3.   

    psbeyond不是让你创建计算器的子窗口,是一个单独的exe,就像拼音加加那那。
      

  4.   

    我试过,即使在自己的窗口标题栏上加一个按钮,好像也不行。一般采用的是在WM_NCPAINT中绘制按钮的方法。好像标题栏确实无法放置其它窗体。不过可能是我孤陋,希望你做出来后能说一下做法。
      

  5.   

    正是,正是,采用处理WM_NCPAINT方法。原题要求只是在标题栏上加按钮,加窗体的确是难一些,原来出题时是想说加一个ComboBox的,考虑到可能太难,才简化为按钮。psbeyond先生对题意的理解有出入,如果是一个独立的窗口,你是怎么使之与计算器一起移动的呢?
      

  6.   

    psbeyond的方式应该有解的吧
    采用HOOK可以对控制窗口定位,然后自动判断外加按键窗口的位置
      

  7.   

    采用HOOK方法的确可以判定宿主窗品的移动,但我的考虑是,如果监听WM_WINPOSCHANGING,就开始动,就可能会出现自有窗口在宿主窗口移动前就会移动;如果监听WM_WINPOSCHANGED再开始动,就可能会出现移动滞后,不知 xjtuzhw先生对此有何高见?
      

  8.   

    飞影先生的想法有一定的道理,可以视做对psbeyond先生做法的完善, 十分感谢!目前来看横秋先生的解法似乎比较接近题目要求,希望还能看到更佳的想法!