Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CStatic 
V
    Опции темы
papam
Дата 29.6.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 2.2.2006
Где: Украина::Запорожь е

Репутация: нет
Всего: 4



Вот условие:
Щелкаем левой кнопкой мыши по форме и, не отпуская кнопку, ведем по ней мышку, а в момент отпускания кнопки по полученным координатам прямоугольника необходимо создать "статик", который содержит свой порядковый номер 
Вот программа:
Код

#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
PM MAIL ICQ   Вверх
Earnest
Дата 30.6.2006, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Ты бы хоть указал, в какой строке ошибки.
m_st объявлена как CMyStatic. А ты что делаешь? Присваиваешь ей указатель... Компилятор тебе прямо говорит: "Нет у CStatic оператора =", а среда показывает на строку с ошибкой. Что тебе еще нужно? Не научишься читать ошибки компилятора - не научишься программировать. 


--------------------
...
PM   Вверх
papam
Дата 30.6.2006, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 2.2.2006
Где: Украина::Запорожь е

Репутация: нет
Всего: 4



Спасибо  Earnest 
--------------------
No Fucking Future
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0477 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.