在Property Sheet中的两个对话框之间怎样实现通信呢?
例如:在一个对话框的成员函数中通过GetWindow( GW_HWNDNEXT )
得到了另一个对话框的指针,想通过这个指针实现对另一个对话框的
控件进行操作,可是为什么通过GetDlgItem不能取得另一个对话框的句柄?
CTargetParameterPage* p_temp1 = ( CTargetParameterPage* )( this->GetWindow(
GW_HWNDNEXT ) );
CWnd* p_temp2 = ( p_temp1->GetDlgItem( IDC_EDIT_TARGETORIENTATION ) );
p_temp2->EnableWindow( FALSE );
不知道什么原因,应该怎么做?
我想在一个对话框中动态禁用另一个对话框的控件!
多谢了!
例如:在一个对话框的成员函数中通过GetWindow( GW_HWNDNEXT )
得到了另一个对话框的指针,想通过这个指针实现对另一个对话框的
控件进行操作,可是为什么通过GetDlgItem不能取得另一个对话框的句柄?
CTargetParameterPage* p_temp1 = ( CTargetParameterPage* )( this->GetWindow(
GW_HWNDNEXT ) );
CWnd* p_temp2 = ( p_temp1->GetDlgItem( IDC_EDIT_TARGETORIENTATION ) );
p_temp2->EnableWindow( FALSE );
不知道什么原因,应该怎么做?
我想在一个对话框中动态禁用另一个对话框的控件!
多谢了!
1。先得到每一页的句柄:m_hWnd
2。GetDlgItem(属性页句柄,控件id号),返回该id号控件的句柄。
3。用fromhandle()转化该句柄成为CWND *
4。再转化CWND *为你所需要控件类型指针。
然后你就可以自便了。以下m_page1是窗口句柄。
CWnd *pWnd;
HWND myhandle;
myhandle = ::GetDlgItem(m_page1,IDC_CHECK1);
pWnd = FromHandle(myhandle);
CButton * pBtn;
pBtn = static_cast<CButton *>(pWnd) ;
已经通过GetWindow()取得属性页的指针。
GetDlgItem()返回的好象还是NULL.
HWND MYHANDLE
在B中声明A类的对象 B bobject
bobject.myhandle = m_hWnd;
myhandle就是B窗口的句柄了
再用::GetDlgItem(handle,id)这个函数,你去查查msdn,返回值是句柄
CWnd* pWnd1 = ( CWnd* )( this->GetWindow( GW_HWNDNEXT ) );
HWND myHandle1 = p_Wnd1->m_hWnd;
HWND myHandle2 = ( ::GetDlgItem( myHandle1, IDC_EDIT_TARGETORIENTATION ) );
CWnd* pWnd2 = FromHandle( myHandle2 );
pWnd2->EnableWindow( FALSE );
以上代码在其中一个属性页的成员函数中,通过GetWindow( GW_HWNDNEXT )取得另一个
属性页的指针pWnd1,再得到相应的句柄myHandle1(不知道取得句柄的方法对不对),
但是调用::GetDlgItem()时总是返回NULL,不知道怎么回事!
这个问题已经困扰我好长时间了!
我想实现的功能很简单:在一个Property Page中动态的控制另一个Property Page中CEdit控件的Disable或Enable,比如点击某一按钮,另一Property Page中的CEdit控件被禁用,可是
GetDlgItem()返回的总是NULL,苦恼啊!
你能说的再具体点儿吗?谢谢了!