本帖最后由 shmilyptop 于 2010-02-08 10:45:43 编辑

解决方案 »

  1.   


    只是个静态文本框(static text).
      

  2.   

    顶一下呀,我现在不写在钩子函数里,就随便写在一个函数也是不行.
    void myp()
    {
    SetDlgItemTextW(s1,IDC_aa,b);//这个不能设置
    SendMessageW(s1,WM_SETTEXT,0,(LPARAM)(LPCTSTR)b);//可以设置
    }
    void CyyDlg::OnBnClickedmyp()
    {
    myp();
    }
      

  3.   

    再顶一下.SetDlgItemTextW放在全局函数不知道怎么用,谁指教一下.
    总觉得是窗口句柄s1出了问题(SendMessageW也用这个句柄,但没问题,难道两者需要的不是同一个句柄?),但又不知怎么解决.
      

  4.   

    SetDlgItemText是不能跨进程的。
      

  5.   


    原来是写在全局钩子上的,但用的是_LL的钩子,所以是在程序本身的,没用到DLL.但后来我为了测试,干脆就不写在钩子里了,直接在程序随便加了个全局函数(在六楼),结果也还是不行.(如果不写在全局函数是可以的),
      

  6.   

    怎么说呢和以前看到的那个GetWindowText的问题是一样的SetDlgItemTextW 并不一定是Send WM_SETTEXT 消息到目标窗口.对于自己进程的窗口来说 SetDlgItemText 可以说是和 Send WM_SETTEXT 等效的.
    但是对于其他进程的窗口 SetDlgItemText 并没有调用 SendMessage. 而是去更改窗口的标题,如果目标窗口没有标题的话,就不执行操作.LZ所说的是写在钩子过程里的,所以属于后者.所以SetDlgItemText就不起作用了,必须要SendMessage.