CRebarHandler *test;
switch (nCmdID){
case BUTTON_PRESSED:
MessageBox(m_hWnd, L"You have pressed the button", L"Button Pressed", MB_OK);
test->findButton(m_hWnd); // <= using test without initialization
test->setmenu();
// ...
В этих двух последних строках вы используете неинициализированный указатель test
. Так как он не был инициализирован, он может указывать где-нибудь в памяти, и фрагмент, на который он случайно указывает, будет интерпретирован как CRebarHandler
объект. Это неопределенное поведение в лучшем случае, и оно может сделать что угодно . Будь рад, что это взрывается сразу.
Я не знаю, что такое CRebarHandler
, но вы не можете использовать его как автоматический объект? Что-то вроде:
CRebarHandler test( /`...whatever it takes...*/ ); // no pointer
switch (nCmdID){
case BUTTON_PRESSED:
MessageBox(m_hWnd, L"You have pressed the button", L"Button Pressed", MB_OK);
test.findButton(m_hWnd);
test.setmenu();
// ...