我有一个对话框的程序,主对话框中有一个按钮“Text”,点击他可引起另一个对话框“Page”,在这个对话框中可以加入属性页,又能随意添加控件。
所以我有一个主对话框类CMyDlg,为Page对话框建了一个对话框类CPage,为属性页新建了2个类CPage1、CPage2,还建了一个由CTabCtrl派生的CTabsheet类。
我声明了变量CTabsheet m_sheet;CPage1 m_page1;CPage2 m_page2;
在CTabsheet中
void CTabSheet::OnLButtonDown(UINT nFlags, CPoint point) 
{
CTabCtrl::OnLButtonDown(nFlags, point); if(m_nCurrentPage != GetCurFocus())
{
m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);
m_nCurrentPage=GetCurFocus();
m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);
// m_pPages[m_nCurrentPage]->SetFocus();
}
}
在CPage中
BOOL CPage::OnInitDialog() 
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
#define TITLEHEIGHT 24;
#define LINEWIDTH 2;
CRect rcTab,rcPage,rcWnd;
this->GetWindowRect(rcWnd);
m_sheet.GetWindowRect(&rcTab);
    rcPage.top=rcTab.top-rcWnd.top-TITLEHEIGHT+34;
rcPage.left=rcTab.left-rcWnd.left+8;
rcPage.bottom=rcPage.top+rcTab.Height()-40;
rcPage.right=rcPage.left+rcTab.Width()-20;
TCITEM tm;
tm.mask=TCIF_TEXT;
tm.pszText="page1";
m_sheet.InsertItem(0,&tm);
tm.pszText="page2";
m_sheet.InsertItem(1,&tm);
m_page1.Create(IDD_PAGE1,this);
m_page2.Create(IDD_PAGE2,this);
m_page1.MoveWindow(&rcPage);
m_page2.MoveWindow(&rcPage);
m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
return TRUE;  // return TRUE unless you set the focus to a control
              // EXCEPTION: OCX Property Pages should return FALSE
}void CPage::OnClickTab1(NMHDR* pNMHDR, LRESULT* pResult) 
{
// TODO: Add your control notification handler code here
if(m_sheet.GetCurSel()==0)
{m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
}
else{
m_page1.ShowWindow(SW_HIDE);
m_page2.ShowWindow(SW_SHOW);
}
*pResult = 0;
}
调试之后没有错误可以显出出来
问题在于:
我点击标签page1时,一松开鼠标,标签page1和page2 就不能够显示不来了,鼠标按住可以,松开就不行。
这是为什么?