Страница 4 из 10 Как нарисовать рванное окно?
... WNDCLASS WndClass;
WndClass.lpszClassName =(LPSTR)"BalonHelp"; WndClass.hInstance =hInstance; WndClass.lpfnWndProc =BalonWndProc; WndClass.style =CS_SAVEBITS; // восстановление возлагаем на Win > WndClass.hbrBackground =GetStockBrush(NULL_BRUSH); WndClass.hCursor =LoadCursor(NULL,IDC_ARROW); WndClass.hIcon =NULL; WndClass.lpszMenuName =NULL; WndClass.cbClsExtra =0; WndClass.cbWndExtra =0;
RegisterClass(&WndClass); ... LRESULT CALLBACK BalonWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { case WM_PAINT: > // отpисовка всего окна ложится на твои плечи :-) ... case ... } return DefWindowProc(hWnd,msg,wParam,lParam); }
Как полностью перекрыть доступ к файлу во время работы с ним? После создания с помощью следующего кода файл даже не читается: CreateFile(f,GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
Как сделать так, чтобы во время выполнения длинного метода приложение реагировало на сообщения?
BOOL ProcessMessages() { MSG msgCur; if (!::GetMessage(&msgCur, NULL, NULL, NULL)) { return FALSE; }
// обрабатываем это сообщение
::TranslateMessage(&m_msgCur); ::DispatchMessage(&m_msgCur); return TRUE; }
Как сделать цикличным проигрывание MIDI-файла?
LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { if(message==MM_MCINOTIFY) if(wParam!=MCI_NOTIFY_ABORTED) { if(m_bIsPlaing) { if(SetMidi()) PlayMidi(); } }
return CFrameWnd::WindowProc(message, wParam, lParam); }
BOOL CMainFrame::SetMidi() { StopMidi(); MCI_OPEN_PARMS OpenParm; OpenParm.dwCallback = (DWORD)GetSafeHwnd(); OpenParm.lpstrDeviceType = NULL; OpenParm.lpstrElementName = filename; DWORD flags=MCI_OPEN_ELEMENT; MCIERROR err; err=mciSendCommand(0, MCI_OPEN, flags,(DWORD)&OpenParm); if(!err){ m_nMidideviceID=OpenParm.wDeviceID; return TRUE; } else return FALSE; }
BOOL CMainFrame::PlayMidi(void) { MCI_PLAY_PARMS PlayParm; PlayParm.dwCallback =(DWORD)GetSafeHwnd(); PlayParm.dwFrom=0; MCIERROR err;
err=mciSendCommand(m_nMidideviceID,MCI_PLAY,MCI_FROM|MCI_NOTIFY,(DWORD)&PlayParm); if(!err) { m_bIsPlaing=TRUE; return TRUE; } m_bIsPlaing=FALSE; return FALSE; }
BOOL CMainFrame::StopMidi(void) { m_bIsPlaing=FALSE; MCI_GENERIC_PARMS generic_params; generic_params.dwCallback=(DWORD)GetSafeHwnd(); mciSendCommand(m_nMidideviceID,MCI_CLOSE,MCI_WAIT,(DWORD)&generic_params); return TRUE; }
Как перехватывать ВСЕ исключения в процессе?
main() { try { ... } catch(...) { ^^^именно так и напиши! ... } }
Так как функция main() совсем не типична для Win32, предлагаю уделить внимание SetUnhandledExceptionFilter(). |