powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / при создании Custom Control останавливается на ASSERTе
3 сообщений из 3, страница 1 из 1
при создании Custom Control останавливается на ASSERTе
    #34085805
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем!
В VC 2005 я создал MFC приложение на базе диалогового окна, в него поместил Custom Control, для которог есть класс MECGraphCtrl. Класс регистрируется так:
BOOL MECGraphCtrl::RegisterWndClass(HINSTANCE hInstance)
{
WNDCLASS wc;
wc.lpszClassName = _T("GRAPH_CUSTOM"); // matches class name in client
wc.hInstance = hInstance;
wc.lpfnWndProc = ::DefWindowProc;//ControlWndProc;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = 0;
wc.lpszMenuName = NULL;
wc.hbrBackground = (HBRUSH) ::GetStockObject(LTGRAY_BRUSH);
wc.style = CS_GLOBALCLASS; // To be modified
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;

return (::RegisterClass(&wc) != 0);
}

Также в классе есть переопределенная функция Create:
BOOL MECGraphCtrl::Create(DWORD dwStyle, const RECT& rect,
CWnd* pParentWnd, UINT nID)
{
BOOL result ;
static CString className = AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW) ;
//m_hWnd =NULL;
//_T("GRAPH_CUSTOM")
result = CWnd::CreateEx(WS_EX_CLIENTEDGE | WS_EX_STATICEDGE,
_T("GRAPH_CUSTOM") , NULL, dwStyle,
rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top,
pParentWnd->GetSafeHwnd(), (HMENU)nID) ;

//result=CWnd::Create(_T("GRAPH_CUSTOM"), NULL, dwStyle, rect, pParentWnd, nID);
if (result != 0)
InvalidateCtrl() ;
return result ;
}
дак вот в ней при вызове CWnd::CreateEx и останавливается программа на
ASSERT(pWnd->m_hWnd == NULL) в функции AfxHookWindowCreate
в строке 624 файла wincore.cpp.
Я пытался обойти этот ASSERT так
m_hWnd =NULL;
но возникает какая-то Runtime ошибка.
В релизной версии всё работает!
Что делать?
Заранее большое спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
при создании Custom Control останавливается на ASSERTе
    #38269690
Сергей332
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По моему проще использовать MapDialogRect для преобразования координат шаблона в экранные. И не надо мучаться с тупым и "глюканутым" custom control и регистрацией классов для него.

BOOL wDialog::OnInitDialog(){
CDialog::OnInitDialog();
CRect RectC(0, 250, 0+158, 250+70);
MapDialogRect(&RectC);
cEdit.Create(WS_CHILD | WS_VISIBLE, RectC, this, IDCEdit);
return TRUE;
}
...
Рейтинг: 0 / 0
при создании Custom Control останавливается на ASSERTе
    #38269773
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей332По моему проще использовать ...не прошло и семи лет, как он наконец узнал, как надо )))
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / при создании Custom Control останавливается на ASSERTе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]