Вот условие: Щелкаем левой кнопкой мыши по форме и, не отпуская кнопку, ведем по ней мышку, а в момент отпускания кнопки по полученным координатам прямоугольника необходимо создать "статик", который содержит свой порядковый номер Вот программа: | Код | #include "afxwin.h" #include "afxext.h" //#include "resource.h" #define IDC_MYBUTTON 100 #define IDC_MYEDIT 102
class CMyStatic: public CStatic { public: afx_msg void OnLButtonDblClk(UINT, CPoint); //afx_msg void OnRButtonDblClk(UINT, CPoint); // afx_msg void OnMouseMove(UINT,CPoint); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); private: DECLARE_MESSAGE_MAP(); };
void CMyStatic ::OnLButtonDblClk(UINT, CPoint) { DestroyWindow(); } void CMyStatic::OnLButtonDown(UINT nFlags, CPoint point) { CString S; S.Format("x=%d ,y=%d",point.x,point.y); SetWindowText(S); CStatic::OnLButtonDown(nFlags, point); }
BEGIN_MESSAGE_MAP(CMyStatic, CStatic) ON_WM_LBUTTONDBLCLK() ON_WM_RBUTTONDBLCLK() ON_WM_MOUSEMOVE() ON_WM_LBUTTONDOWN() END_MESSAGE_MAP()
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); afx_msg void OnLButtonUp( UINT, CPoint );
int OnCreate(LPCREATESTRUCT lpCreateStruct); private: CMyStatic* MyStatic; CEdit* MyEdit; CStatusBar m_wndStatusBar; CRect m_rect; int i_arreysize; CMyStatic m_st; CMenu m_wndMenu;
DECLARE_MESSAGE_MAP();
};
BEGIN_MESSAGE_MAP(CMainWnd, CFrameWnd) ON_WM_LBUTTONDBLCLK() ON_WM_RBUTTONDBLCLK() ON_WM_LBUTTONUP( ) ON_WM_KEYDOWN() ON_WM_CREATE() END_MESSAGE_MAP() int CMainWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; m_wndStatusBar.Create(this); return 0; } void CMainWnd::OnKeyDown(UINT, UINT, UINT) { AfxMessageBox(" Key Button Down "); } void CMainWnd::OnRButtonDblClk(UINT, CPoint)
{ AfxMessageBox(" Rigth Button Click "); }
void CMainWnd::OnLButtonDblClk(UINT, CPoint) { AfxMessageBox(" Left Button Click "); }
CMainWnd::CMainWnd() { Create(NULL,"ЗАДАНИЕ 2 ЗАДАЧА 1",WS_OVERLAPPEDWINDOW,rectDefault,NULL,NULL); MyStatic = new CMyStatic(); int a,b; a=15; b=10; if(a<10) { AfxMessageBox("В статике 1 не соответствует размер!!!\n Исправте ошибку и появится статик!!!"); }
// if(b<10) // { // AfxMessageBox("В статике 1 не соответствует размер!!!\n Исправьте ошибку и появится статик!!!"); // } else if (MyStatic!=NULL) MyStatic->Create("MyStatic 1",WS_CHILD|WS_VISIBLE|SS_CENTER|SS_NOTIFY,CRect(a,b,100,50),this);
MyStatic = new CMyStatic(); a=10; b=70; if(a<10) { AfxMessageBox("В статике 2 не соответствует размер!!!\n Исправьте ошибку и появится статик!!!"); } // if(b<10) // { // AfxMessageBox("В статике 2 не соответствует размер!!!\n Исправьте ошибку и появится статик!!!"); // }
else if (MyStatic!=NULL) MyStatic->Create("MyStatic 2",WS_CHILD|WS_VISIBLE|SS_CENTER|SS_NOTIFY,CRect(a,b,300,100),this); }
void CMainWnd::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default m_rect.bottom = point.y; m_rect.right = point.x; m_rect.NormalizeRect(); CString s; s.Format("%i", i_arreysize+1); UINT nID = 10000; if (!i_arreysize) { m_st = new CStatic; i_arreysize++; m_st->Create(s, WS_VISIBLE|WS_CHILD|WS_BORDER, m_rect, this, nID+i_arreysize); } else { CStatic* temp = new CStatic [i_arreysize]; CopyMemory(temp, m_st, sizeof(CStatic)); if(i_arreysize<=1) delete m_st; else delete [] m_st; i_arreysize++; m_st = new CStatic [i_arreysize]; CopyMemory(m_st, temp, sizeof(CStatic)); m_st[i_arreysize-1].Create(s, WS_VISIBLE|WS_CHILD|WS_BORDER, m_rect, this, nID+i_arreysize); delete [] temp; } CMainWnd::OnLButtonUp(nFlags, point); }
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;
|
Скажите почему выдет ошибки компелятор и как их исправить? Вот ошибки: error C2582: 'CMyStatic' : 'operator =' function is unavailable error C2819: type 'CMyStatic' does not have an overloaded member 'operator ->' see declaration of 'CMyStatic' error C2227: left of '->Create' must point to class/struct/union error C2582: 'CMyStatic' : 'operator =' function is unavailable error C2039: 'Create' : is not a member of 'HWND__' see declaration of 'HWND__' Спасибо
--------------------
No Fucking Future
|