几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   vc编程 (http://www.dimcax.com/hust/forumdisplay.php?f=76)
-   -   【转帖】DLL中创建带有属性页的对话框Bug? (http://www.dimcax.com/hust/showthread.php?t=1619)

huangyhg 2007-12-22 11:02 PM

【转帖】DLL中创建带有属性页的对话框Bug?
 
int StartPageDia(CDialog ** pDialog,BOOL bIsModal,HWND hWndParent,UINT msgToParent,PBYTE buf )
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
static CProperDia * pDia = NULL;
if ( pDia == NULL)
{
pDia = new CProperDia;
pDia-> Create( CProperDia::IDD,CWnd::FromHandle(hWndParent) );
*pDialog =pDia;
}
return 0;
}
DLL中引出此函数,创建具有属性页的对话框,当点击属性页中的对话框子控件,然后点击其他窗口,属性页丢失焦点,导致对话框总是在不断的发出接收WM_GETDLGCODE消息,出现死循环,那位大侠能伸出援手,百分求助,急等!
static CDiaSheet * m_dlgPropertySheet =NULL;
void CProperDia::InitSheet()
{
CRect rcsheet;
GetDlgItem(IDC_FRAME)-> GetWindowRect(&rcsheet);
ScreenToClient(&rcsheet);
if ( NULL == m_dlgPropertySheet)
{
m_dlgPropertySheet
= new CDiaSheet( "Simple PropertySheet ");
ASSERT(m_dlgPropertySheet);
// Add two pages to the CPropertySheet object. Both m_stylePage and
CPropertyPage *m_stylePage = new CPage1;
m_stylePage-> Create( CPage1::IDD,m_dlgPropertySheet);
m_dlgPropertySheet-> AddPage(m_stylePage);
m_dlgPropertySheet-> Create(this, WS_CHILD &brvbarWS_VISIBLE , 0); //NULL !=m_hParentWnd ? CWnd::FromHandle(m_hParentWnd) :
m_dlgPropertySheet-> MoveWindow( &rcsheet);
}
}

huangyhg 2007-12-22 11:04 PM

回复: 【转帖】DLL中创建带有属性页的对话框Bug?
 
OnSetActive, OnKillFocus 直接返回

huangyhg 2007-12-22 11:04 PM

回复: 【转帖】DLL中创建带有属性页的对话框Bug?
 
这是MFC的一个已知的bug,
http://support.microsoft.com/kb/149501/en-us


所有的时间均为北京时间。 现在的时间是 08:06 AM.