簡體   English   中英

MFC:RadioButton在CWnd子類中不起作用(灰顯)

[英]MFC: RadioButton not working(grayed out) in a class subclassed from CWnd

簡介 :我有一個從CWND派生的類(自定義窗口)。 這個自定義類有一個單選按鈕(CButton)和一堆其他靜態控件。

問題 :當創建單選按鈕時,它顯示為灰色,單擊它不會執行任何操作。 用於創建的代碼非常簡單:

m_radioButton->Create(_T("rButton1.1"), WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON , CRect(5,5,300,15), this,2001);

我試着添加

ON_BN_CLICKED(2001,method())

事件,但沒有被觸發。

我也有ShowWindow()和EnableWindow()方法,但這也沒有用。

問題 :由於此類不是從CDialog派生的,因此DDX不可用。 這可能是問題嗎? 有辦法解決它嗎? 我的消息映射只有ON_BN_CLICKED以外的SIZE,CREATE和DESTROY。

歡迎任何建議。

側面注意 :MFC新手在這里,非常感謝您的幫助。

研究 :我發現只有這個相關的堆棧溢出問題,但這對我的情況沒有幫助。 還發現了關於mfc子類化的這個很酷的頁面,但它沒有回答我的問題。

側面問題 :由於我沒有得到任何答案,這種情況是不是很常見,如果我根本不是從CWND派生出來並從CDialog或其他東西派生出來的話,這根本就是錯誤的嗎?

我試圖復制場景,但無法重現。 從CWnd派生不應該是任何問題。 我在下面提供了示例代碼,我創建了一個名為“CTestWindow”的自定義類,該類來自CWnd,並在CTestWindow的OnCreate()內創建一個功能區按鈕。 我可以單擊單選按鈕,方法()也按預期調用。

IMPLEMENT_DYNAMIC(CTestWindow,CWnd)
BEGIN_MESSAGE_MAP(CTestWindow, CWnd)
    ON_WM_CREATE()
    ON_BN_CLICKED(2001, method)
END_MESSAGE_MAP()

int CTestWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    CButton *m_radioButton = new CButton;
    if (CWnd::OnCreate(lpCreateStruct) == -1)
        return -1;
    if(!m_radioButton->Create(_T("rButton1.1"), WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON , CRect(5,5,300,25), this,2001)){
        return -1;
    }
    return 0;
}

void CTestWindow::method(){
    AfxMessageBox(_T("I m clicked"));
}

查找以下用於創建自定義窗口實例的代碼:

CString strMyClass;
    try
    {
        strMyClass = AfxRegisterWndClass(
            CS_VREDRAW | CS_HREDRAW,
            ::LoadCursor(NULL, IDC_ARROW),
            (HBRUSH) ::GetStockObject(WHITE_BRUSH),
            ::LoadIcon(NULL, IDI_APPLICATION));
    }
    catch (CResourceException* pEx)
    {
        AfxMessageBox(_T("Couldn't register class! (Already registered?)"));
        pEx->Delete();
    }
    if(m_wndTest.Create(strMyClass,_T("Custom Window"),WS_OVERLAPPEDWINDOW | WS_VISIBLE,CRect(0,0,400,400),this,200,NULL) == -1){
        return;
    }
    m_wndTest.SetWindowPos(NULL,120,120,500,500,SWP_SHOWWINDOW);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM