ON_CONTROL_RANGE
у меня есть ON_CONTROL_RANGE(BN_CLICKED,IDC_BT1,IDC_BT64,&Clab1Dlg::OnBmpClick), ф-я OnBmpClick(UINT id) принимает аргумент id - id контрола, могу ли я по этому id получить указатель на объект с которым он связан через DDX?
Конечно можно получить дескриптор на него:
CDataExchange* pDX;
HWND hwnd=pDX->PrepareCtrl(id);
но таким образом я смогу использовать методы CWnd т.е. работать как с окном а мне нужно с контролом CStatic.
Так что программистов здесь нет?
Цитата: bnm
Кароче вопрос такой:
у меня есть ON_CONTROL_RANGE(BN_CLICKED,IDC_BT1,IDC_BT64,&Clab1Dlg::OnBmpClick), ф-я OnBmpClick(UINT id) принимает аргумент id - id контрола, могу ли я по этому id получить указатель на объект с которым он связан через DDX?
Конечно можно получить дескриптор на него:
CDataExchange* pDX;
HWND hwnd=pDX->PrepareCtrl(id);
но таким образом я смогу использовать методы CWnd т.е. работать как с окном а мне нужно с контролом CStatic.
у меня есть ON_CONTROL_RANGE(BN_CLICKED,IDC_BT1,IDC_BT64,&Clab1Dlg::OnBmpClick), ф-я OnBmpClick(UINT id) принимает аргумент id - id контрола, могу ли я по этому id получить указатель на объект с которым он связан через DDX?
Конечно можно получить дескриптор на него:
CDataExchange* pDX;
HWND hwnd=pDX->PrepareCtrl(id);
но таким образом я смогу использовать методы CWnd т.е. работать как с окном а мне нужно с контролом CStatic.
CStatic является потомком CWnd. Что мешает преобразовать CWnd в CStatic
А указатель на объект можно как-то получить?
CWnd *pWnd = CWnd::FromHandle(hWnd)
или если как метод CDialog, будет CWnd* GetDlgItem(int nIDDlgItem)
Это понятно, но мне нужно указатель на объект CStatic. А при преобразовании из CWnd он выкидывает ассерты. Как быть?
странно, конечно, что он ассёрты кидает.... а по DDX с переменной типа CStatic связать не пробовал?