该问题在其它很多帖子都有讲述,但是本人愚钝,未明全意。故另开新帖,希望前辈能细答:我在一个线程中,想对一个对话框中的一个控件进行操作。1. 是否必须知道那个对话框的句柄?
2. 如果要对话框的句柄,怎样去获得?
3. 用FindWindow()函数,各个参数代表什么意思?
4. ::FindWindow(NULL,"窗口")中的窗口是什么? 譬如我的对话框类为CDlg,我定义CDlg dlg;这里我是不是填
::FindWindow(NULL,"dlg");

解决方案 »

  1.   

    没必要用FindWindow定义CDlg dlg;dlg.m_hWnd  就是对话框句柄
      

  2.   

    1.是的 一般的方法都是一定需要得到句柄的.
    2.如果两线程在同进程中 可以在创建线程的时候传递进对话框的句柄进来 也可以用API函数 如FindWindow 查找 或线程名识别
    3.FindWindow(NULL,"窗口") 第一参数为类型 也就是你查询的是对话框 则类型是Dialog 查找的是编辑框 则类型是EDIT.第二参数是标题名称 如果是对话框则是它的标题 要全部对应 返回的就是窗体句柄.
    4.因该知道第二参数"窗体"改成什么了吧.
      

  3.   

    不知道你的线程在哪里创建的,如果是在主对话框创建,你又想在线程中使用主对话框的话,可以把this作为参数传给线程.