MFC中关于怎么获得对话框的信息

MFC中关于如何获得对话框的信息
HWND hwnd=::FindWindow(NULL,"sample6");//获得对话框句柄
HWND hwndButton=FindWindowEx(hwnd,NULL,"Button","OK");//获得一个按扭句柄

问题:
1,  ::EnableWindow(hwndButton,false);//可以改变按扭的状态
GetDlgItem(GetWindowLong(hwnd,GWL_ID))->EnableWindow(false);//为什么这个改变不了按扭状态,什么原因???

2,如何获得一个文本框的内容?
3,如果是CFileDialog类的,怎么获得里面选取的文件的路径?
------解决思路----------------------
最方便的方法就是,你资源视图里面点击对话框,点击类向导,在对应的对话框创建关联变量,记得把变量类别改为value,在主程序中先调用updatedata(true);然后直接把关联变量读出来就好了MFC中关于怎么获得对话框的信息
------解决思路----------------------
CFileDialog 调用GetPathName返回选中文件全路径
 
------解决思路----------------------
你的问题说明不详细
看你的代码是 Win32 与 MFC 混用的,搞得代码混乱

1、EnableWindow(hwndButton,false) 设置的是按钮的状态
GetDlgItem(GetWindowLong(hwnd,GWL_ID))->EnableWindow(false) 是设置一个不知道是什么窗口的状态,不出错已经很不错了。GetWIndowLong 获得当前窗口的 ID 号,接着 GetDlgItem 获取根据控件 ID 获得当前窗口的子控件,问题是你的控件 ID 是你本身父窗口的 ID,那你究竟想设置哪个窗口?

2、获取文本框的窗口句柄或者类对象后,用 GetWindowText 来获得文本
3、GetPathName 获取

你是不是给 CFileDialog 安装了钩子?
------解决思路----------------------
先用SPY++ 分别看看各个控件的不同。。
------解决思路----------------------
什么控件,CEdit?使用成员函数:CEdit::GetLine()

CEdit::GetLine 
int GetLine(int nIndex, LPCTSTR lpszBuffer) const;
int GetLine(int nIndex, LPCTSTR lpszBuffer, int nMaxLength) const;

返回值
实际拷贝的字节数。如果由nIndex 指定的行号大于此编辑控件的行数,则返回值为0。
参数
nIndex 
指定从多行编辑控件中检索的行的行号,行号由0 指定。对单行编辑控件,此参数被忽略。
lpszBuffer 
指向获取此行备份的缓冲区。缓冲区的第一个字必须指定能被拷贝到缓冲区的最大字节数。
nMaxLength 
指定能被拷贝到缓冲区的最大字节数,GetLine 在调用Windows 之前将此值放置到lpszBuffer 的第一个字中。
说明
调用此成员函数从编辑控件中获取文本的一行并将其放置到lpszBuffer 缓冲区。
被拷贝的行不包括空终止符。要了解更多信息,请参阅Win32 文档中的EM_GETLINE 。

------解决思路----------------------
跨进程发送窗口消息需要的API:
GetWindowThreadProcessId
OpenProcess
VirtualAllocEx
WriteProcessMemory
SendMessage
ReadProcessMemory
VirtualFreeEx
CloseHandle