Программа вроде простая — делал ее по уроку. Вот решил ее немного видоизменить и зашел в тупик.
в общем в этой программе при запуске создается панель состояния. Я сделал так чтобы эта панель убивалась при двойном нажатии правой кнопки мыши, но вот когда попробовал ее возрадить с помощью двойного нажатия левой кнопки мыши — ничего не вышло. ( хотя вроде все правильно сделал. Вот листинг..подскажите что да как..буду очень благодарен.
#include "afxwin.h"
#include "afxext.h"
#define IDC_MYBUTTO 1220
#define IDC_MYEDIT 102
#define y 120
class CMyButton: public CButton
{
public:
CMyButton(int x);
int z;
afx_msg void OnLButtonDblClk(UINT, CPoint);
afx_msg void OnRButtonDblClk(UINT, CPoint);
private:
DECLARE_MESSAGE_MAP();
};
void CMyButton::OnLButtonDblClk(UINT, CPoint)
{
z=z+1;
MoveWindow(CRect(120,100,220,z),TRUE);
}
void CMyButton::OnRButtonDblClk(UINT, CPoint)
{
MoveWindow(CRect(120,10,220,50),TRUE);
}
BEGIN_MESSAGE_MAP(CMyButton, CButton)
ON_WM_LBUTTONDBLCLK()
ON_WM_RBUTTONDBLCLK()
END_MESSAGE_MAP()
CMyButton::CMyButton(int x)
{
z=x;
};
class CMainWnd : public CFrameWnd
{
public:
CMainWnd();
afx_msg void OnLButtonDblClk(UINT, CPoint);
afx_msg void OnRButtonDblClk(UINT, CPoint);
afx_msg void OnKeyDown(UINT, UINT, UINT);
int OnCreate(LPCREATESTRUCT lpCreateStruct);
CStatusBar* fm_wndStatusBar;
~CMainWnd();
private:
CStatic* MyStatic;
CMyButton* MyButton;
CEdit* MyEdit;
DECLARE_MESSAGE_MAP();
};
CMainWnd::CMainWnd()
{
Create(NULL,"hi",WS_OVERLAPPEDWINDOW,CRect(0,0,400,400),
NULL,NULL);
MyStatic = new CStatic();
if (MyStatic!=NULL) MyStatic->Create("hi",WS_CHILD|WS_VISIBLE|SS_CENTER,
CRect(10,10,100,50),this);
MyButton = new CMyButton(120);
if (MyButton!=NULL) MyButton->Create("MyButton",WS_CHILD|WS_VISIBLE|SS_CENTER,
CRect(120,10,220,50),this,IDC_MYBUTTO);
MyEdit = new CEdit();
if (MyEdit!=NULL) MyEdit->Create(WS_CHILD|WS_VISIBLE|WS_BORDER,
CRect(240,10,340,50),this,IDC_MYEDIT);
}
CMainWnd::~CMainWnd()
{
if (MyStatic!=NULL) delete MyStatic;
if (MyButton!=NULL) delete MyButton;
if (MyEdit!=NULL) delete MyEdit;
}
BEGIN_MESSAGE_MAP(CMainWnd, CFrameWnd)
ON_WM_LBUTTONDBLCLK()
ON_WM_RBUTTONDBLCLK()
ON_WM_KEYDOWN()
ON_WM_CREATE()
END_MESSAGE_MAP()
void CMainWnd::OnKeyDown(UINT, UINT, UINT)
{
AfxMessageBox(" Key Button Down ");
if(MyButton!=NULL)
{
delete MyButton;
MyButton=NULL;
}
}
void CMainWnd::OnRButtonDblClk(UINT, CPoint)
{
AfxMessageBox(" Rigth Button Click ");
if(fm_wndStatusBar!=NULL)
{
delete fm_wndStatusBar;
fm_wndStatusBar=NULL;
};
}
void CMainWnd::OnLButtonDblClk(UINT, CPoint)
{
if(fm_wndStatusBar==NULL)
{
fm_wndStatusBar=new CStatusBar();
fm_wndStatusBar->Create(this);
};
AfxMessageBox(" Left Button Click ");
}
int CMainWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
fm_wndStatusBar = new CStatusBar;
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if(fm_wndStatusBar!=NULL)
{
fm_wndStatusBar->Create(this);
return 0;
};
return 0;
}
class CMyApp : public CWinApp
{
public:
CMyApp();
virtual BOOL InitInstance();
};
CMyApp::CMyApp()
{}
BOOL CMyApp::InitInstance()
{
m_pMainWnd=new CMainWnd();
ASSERT(m_pMainWnd);
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;
};
CMyApp theApp;
Здравствуйте, vuler, Вы писали:
V>не..не помогло
после того как создашь заново статусбар вызови RecalcLayout()