CStatic* p = (CStatic*)GetDlgItem(IDC_STATIC_FILE);
IDC_STATIC_FILE是对话框上一标签的ID,
该语句在他人的程序中可正确得到该标签的句柄
可在我的程序上却总是得到0,
请问是在属性或什么地方的设置有问题,还是~~~~!!

解决方案 »

  1.   

    你的那种方法很危险,且在一些地方无效
    可以这样:
    CStatic mystatic;
    mystatic.Attach(GetDlgItem(IDC_STATIC_FILE));mystatic.detach()一定要加上这句.
      

  2.   

    不好意思错了 应该是mystatic.Attach(GetDlgItem(IDC_STATIC_FILE)->m_hWnd);
      

  3.   

    CStatic* p = (CStatic*)GetDlgItem(IDC_STATIC_FILE);
    这句话应该为对话框的对应类中,否则一定要在前面加上对话框的对象
      

  4.   

    在那设个断点,跟一下就知道了,估计是因为(CStatic*)GetDlgItem(IDC_STATIC_FILE)拿到的东西为空了。
      

  5.   

    fireinsky(天空流星) 
    我是设了断点才发现是为空的
      

  6.   

    感谢楼上各位!!我刚才发现主要问题可能不是在
    CStatic* p = (CStatic*)GetDlgItem(IDC_STATIC_FILE);
    因为我在对话框中添加任何控件,程序运行后添加的控件都是不可见的,当然也可能是不可用的.而新建一工程,用CStatic* p = (CStatic*)GetDlgItem(IDC_STATIC_FILE);是可以正确得到返回值的.是否是这个原因呢?
      

  7.   

    哈哈,问题解决但还是不懂
    我将Release或者是Debug文件夹删除
    重新编译,就一切正常,得到正确返回值,而且控件也出来了~~~~?咋回事?
      

  8.   

    CStatic* p = (CStatic*)GetDlgItem(IDC_STATIC_FILE);
    用于父窗口取自己的子窗口的对象指针。