Re: how to switch between property pages using another application?
On 7 2 , 4 21 , "David Ching" <d...@remove-this.dcsoft.com> wrote:
<bangzh...@gmail.com> wrote in message
news:1183254917.148335.165130@o11g2000prd.googlegroups.com...
Hi, experts
I have an applications A which consists 4 property pages. I want to
write another application to switch the property pages in application
A. How to do it?
Property sheets switch pages in response to PSM_SETCURSEL. Therefore, just
do a
// nPage is desired page; 0 <= nPage < 4
::SendMessage (hwndPropSheet, PSM_SETCURSEL, nPage, 0);
In fact, the MFC code is this:
---
BOOL CPropertySheet::SetActivePage(int nPage)
{
if (m_hWnd == NULL)
{
m_psh.nStartPage = nPage;
return TRUE;
}
return (BOOL)SendMessage(PSM_SETCURSEL, nPage);}
---
Of course, all the rules about sending a message to a HWND of a different
process apply. I would replace SendMessage with PostMessage to avoid
hanging problems if App A is hung, you don't want to hang the app that is
trying to change the pages too:
::PostMessage (hwndPropSheet, PSM_SETCURSEL, nPage, 0);
But as the MFC code shows, the return value from SendMessage is a BOOL
whether it succeeded or not. If this is important to you, you need to keep
the SendMessage in order to get a return value. You can use
SendMessageAsync() instead to at least not infinitely hang if app A is hung.
-- David
I have tried PSM_SETCURSEL, but failed. The following is what I really
wants to do.
I have a 3rd party application written in borland c++, it is property
sheet based and contains 4 property sheet pages. I want to write
another application to get the content of an edit control in one of
property sheet pages. My program will be written using visual c++.
I used EnumWindows and EnumChildWindows to find the child edit
control, but if the property sheet page containing the edit control is
not the active page, I can't find the edit control window, so I can't
SendMessage to get the content.
I have tried to switch to the property sheet page using PSM_SETCURSEL,
but gets an 203 error. This 3rd party application contains one
TPageControl with 4 TTabSheets. When I SendMessage to the TPageControl
window, error 203 returns. It seems that TPageControl is not a
property sheet windows in win32.