2016-06-24 1 views
1

У меня есть CPropertySheet с несколькими вкладками. У меня есть другой класс CPropertyPage для каждой вкладки. Если пользователь нажимает на одну страницу (Tab), эта страница активируется. Как я могу узнать, нажал ли пользователь Tab или где-то еще на этой странице?Поменять событие вкладки, щелкнув мышкой по вкладке

enter image description here

Я пытаюсь получить, что событие (WM_LBUTTONDOWN) в PreTranslateMessage() класса недвижимости листа.

Я понятия не имею, что делать Я бы очень признателен за любую помощь.

ответ

0

Использование TCN_SELCHANGE

тело функции будет что-то вроде этого

void CDlgName::OnTcnSelchangeFuncName(NMHDR *pNMHDR, LRESULT *pResult) 
{ 
    // TODO: Add your control notification handler code here 

    int nCur = m_tabSettings.GetCurSel(); 
    if(nCur == 0)  //first tab clicked 
    { 
     //your code 
    } 
    else if(nCur == 1){ //Second tab clicked 
     //your code 
    } 
    else if(nCur == 2){ //Third tab clicked 
    { 
     //your code 
    } 
    *pResult = 0; 
} 

Это может быть полезно для вас.

+0

У меня есть страницы свойств и страницы свойств. Я не могу преобразовать их в элемент управления Tab. Я мог бы помочь, если u может предоставить больше кода. –

1

Вы хотите посмотреть на OnSetActive и OnKillActive.

Они обеспечивают пример:

// CShapePage is the last wizard property page. Enable the Back 
// button and change the Next button to Finish. The "Finish" button 
// will have "Done" as its caption. 
BOOL CShapePage::OnSetActive() 
{ 
    CPropertySheet* psheet = (CPropertySheet*) GetParent(); 
    psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH); 
    psheet->SetFinishText(_T("Done")); 

    return CPropertyPage::OnSetActive(); 
} 

То есть то, что я использую. Вы можете реализовать их из ClassWizard. Есть ли какая-то причина, по которой лист сам должен знать, а не страница?

+0

Эти две функции имеют свои недостатки. При обработке изменений страницы, основываясь на некотором входе, я должен закрыть лист свойств и повторно открыть его (например, обновить вид вещей). см. [link] (https://msdn.microsoft.com/en-us/library/bb774568%28v=vs.85%29.aspx). Вот почему мне нужно обрабатывать изменения страниц в PretranslateMessage(). –

+0

Несомненно. ПТМ на помощь. –