未知控件类型,SPY++中看是AfxWnd42s这个类名,是个容器,但不知道是啥!我需要利用API对里边的单元格赋值,这个单元格只有在鼠标双击,也就是有输入焦点的时候才会在父窗口下捕获到句柄,失去焦点的时候SPY++里边看不到任何子窗体信息!想求教一下诸位高手,如何才能让我对这个控件中的CELL赋值?

解决方案 »

  1.   

    http://topic.csdn.net/u/20091019/10/d76302ac-4132-467c-9d39-78dc127a430b.html
      

  2.   

    思路:
    1:计算每个单元格在窗口容器client区的坐标 posx,posy
    2:向目标窗口容器发送WM_LBUTTONDBLCLK,把上面的posx,posy通过参数带上
       如果WM_LBUTTONDBLCLK不起作用的话,则可能需要发送WM_NOTIFY,
       需要什么消息得用spy++抓一下
    3:获取鼠标双击后窗口容器出现的子窗口的句柄,通过
       SendMessageW(hwndChild,WM_SETTEXTW,NULL,(LPARAM)L"你的数据")LZ试试看吧。
      

  3.   

    窗口DC的坐标,不是windows的绝对坐标
      

  4.   

    GetClientRect()获取目标窗口的可视矩形区域
    rect.left=0 :是目标窗口横坐标元点
    rect.top=0  :是目标窗口纵坐标元点
    rect.right = 实际值  :是目标窗口横坐标可视区域最大值
    rect.bottom = 实际值  :是目标窗口纵坐标可视区域最大值就在这个坐标区域内计算出来鼠标双击的坐标范围,然后
    向目标窗口容器发送WM_LBUTTONDBLCLK,触发目标窗口弹出
    可以接受输入的子窗口,拿到这个子窗口
    FindWindowEx(目标窗口容器的HWND,NULL,子窗口的类名,NULL)
    的句柄,最后通过 SendMessageW(hwndChild,WM_SETTEXTW,NULL,(LPARAM)L"你的数据")明白不?
      

  5.   

    你不能让那个程序的主窗口最大化么?
    ShowWindow(HWND,SW_SHOWMAXIMIZED)么?
    如果最大化了还是要滚动条,则就控制它的
    滚动条。
      

  6.   

    坐标不会变的,可视区域的rect没变,只是
    有滚动条的介入。这样,滚动条往下滑动一个
    单位应该就是那个控件向上滚动一行。你只要计
    算出滚动条的滑动单位和当前滑动的值,
    就能知道当前你的坐标
    是第几行第几列的cell了。控制滚动条的api有
    几个,你查查msdn吧
      

  7.   


    - -#  老大,屏幕的分辨率也是不一的,所以滚动条的问题仍旧没搞定!如果我用键盘的方式呢?CELL是允许上下左右以及TAB这样的形式运动的,关键我是想知道,如果用键盘的话,我该如何获取当前鼠标焦点下的控件句柄呢?并且,这么操作的话,这个程序会不会被放到桌面的顶层?也就是用户可以看到程序的操作信息?