Сообщение WM_SIZE просто не прилетает, кнопки минимизации и максимизации не работают. | Код | class CMessagesSheet : public CPropertySheet { public: CMessagesSheet (LPCTSTR title); ~CMessagesSheet (void);
LRESULT OnCreate(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnDelete(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); void OnShowWindow(BOOL, INT); void OnSize(UINT, CSize); void OnClose(); void OnDestroy(); BEGIN_MSG_MAP(CMessagesSheet) MESSAGE_HANDLER(WM_SYSCOMMAND, CPropertySheetImpl<CPropertySheet>::OnSysCommand) COMMAND_ID_HANDLER(IDOK, OnCreate) COMMAND_ID_HANDLER(IDCANCEL, OnDelete) MSG_WM_SHOWWINDOW(OnShowWindow) MSG_WM_SIZE(OnSize) MSG_WM_CLOSE(OnClose) MSG_WM_DESTROY(OnDestroy)
REFLECT_NOTIFICATIONS() END_MSG_MAP() };
|
| Код | CMessagesSheet::CMessagesSheet(LPCTSTR title) : CPropertySheet(title) {
// m_psh.dwFlags |= PSH_NOAPPLYNOW; }
CMessagesSheet::~CMessagesSheet(void) { }
void CMessagesSheet::OnShowWindow(BOOL wParam, INT lParam) {
LONG windowStyles = GetWindowLong(GWL_STYLE); windowStyles |= WS_SIZEBOX; windowStyles |= WS_MINIMIZEBOX; windowStyles |= WS_MAXIMIZEBOX; if (SetWindowLong(GWL_STYLE, windowStyles) == 0) MessageBox("", "", MB_OK); CWindow button = GetDlgItem(IDOK); button.SetWindowText("Создать"); button = GetDlgItem(IDCANCEL); button.SetWindowText("Удалить"); }
void CMessagesSheet::OnSize(UINT wParam, CSize lParam) {
if (wParam == SIZE_MAXIMIZED) ShowWindow(SW_MAXIMIZE); else if (wParam == SIZE_MINIMIZED) ShowWindow(SW_MINIMIZE); return; }
void CMessagesSheet::OnClose() {
DestroyWindow(); }
void CMessagesSheet::OnDestroy() {
PostQuitMessage(0); }
LRESULT CMessagesSheet::OnCreate(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& bHandled) {
return 0; }
LRESULT CMessagesSheet::OnDelete(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& bHandled) {
if (MessageBox("Вы уверены?", "Предупреждение", MB_YESNO | MB_ICONWARNING) != IDYES) return 0;
return 0; }
|
| Код | CAppModule _Module;
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow) {
HRESULT hRes = ::CoInitialize(NULL); ATLASSERT(SUCCEEDED(hRes));
hRes = _Module.Init(NULL, hInstance);
CMessageLoop loop; _Module.AddMessageLoop(&loop);
CMessagesSheet msDlg(""); msDlg.Create();
int nRet = loop.Run();
_Module.Term(); ::CoUninitialize();
return 0; }
|
|