| 
			| 
					
						| HungryEagle 
								Интересующийся    Offline 
								Пол:    | 
								|  | «  : 03-09-2009 16:03 »  |  | 
 
 Вот прога которая должна ставить точку по координатам:
 
 #include "afxwin.h" // MFC Основные и стандартные компоненты
 
 class CMainWnd : public CFrameWnd
 {
 public:
 CMainWnd();   // Конструктор по умолчанию
 };
 
 CMainWnd::CMainWnd()
 {
 Create(NULL,"Step1",WS_OVERLAPPEDWINDOW,rectDefault,
 NULL,NULL);   // Создать окно программы
 }
 
 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;   // запуск приложения
 
 
 
 //Вывести точку, смотрите внимательно, ну маленькая она и чем выше разрешение экрана, тем меньше.
 
 void CMainWnd::OnPaint()
 {
 CPaintDC dc(this);
 dc.SetPixel(500,200,RGB(255,0,0));
 }
 
 
 Как декларировать OnPaint() ? Может кто-то знает... Два дня уже мучаюсь ...
 Я С++ плохо знаю, Асм нормально. Вот решил с графикой поразбираться. Сложно ...
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #1 : 03-09-2009 16:10 »  |  | 
 
 эээ, а в чём вопрос то ?   Вывести точку, смотрите внимательно, ну маленькая она и чем выше разрешение экрана, тем меньше.
 стало быть, точка вывелась. Что ты и хотел. А маленькая - так в размер пиксела, что ты и требовал : уточняй вопрос, а ещё лучше - расскажи конечную цель   |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| HungryEagle 
								Интересующийся    Offline 
								Пол:    | 
								|  | « Ответ #2 : 03-09-2009 16:15 »  |  | 
 
 Точка не вывелась !
 Ошибка при компиляции :
 
 1>.\step1.cpp(46) : error C2509: 'OnPaint' : member function not declared in 'CMainWnd'
 1>        .\step1.cpp(3) : see declaration of 'CMainWnd'
 Нужно как-то объявить OnPaint(), но как ?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #3 : 03-09-2009 16:15 »  |  | 
 
 BOOL CMyApp::InitInstance() // стандартная инициализация{
 m_pMainWnd=new CMainWnd();   // создать класс окна
 ASSERT(m_pMainWnd);   // проверить его правильность
 m_pMainWnd->ShowWindow(SW_SHOW);// Показать окно
 m_pMainWnd->UpdateWindow();   // Обновить окно
 return TRUE;      // Вернуть что все нормально
 };
 
а тут неточность: return TRUE; здесь означает не "все нормально" , а то, что приложение не заканчивает свою работу, а работает с  m_pMainWnd в качестве главного окна. Если вернуть FALSE, то приложение завершится. а можно так: BOOL CtApp::InitInstance(){
 CWinApp::InitInstance();
 
 CMyMainDlg dlg;
 m_pMainWnd = &dlg;
 dlg.DoModal();
 
 return FALSE;
 }
 
главное (и модальное) окно будет не давать выйти из InitInstance(). Как окно закроют - приложение заканчивает работу. |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #4 : 03-09-2009 16:21 »  |  | 
 
  Ошибка при компиляции :
 1>.\step1.cpp(46) : error C2509: 'OnPaint' : member function not declared in 'CMainWnd'
 Нужно как-то объявить OnPaint(), но как ?
 
 а, ну так понятно, объяви при помощи визарда ) У тебя какая версия студии ? визард сделал так : в хедере 	DECLARE_MESSAGE_MAP()
 
 afx_msg void OnPaint();
 
в cpp , после инклуда хедера  BEGIN_MESSAGE_MAP(CMyMaintDlg, CDialog)//{{AFX_MSG_MAP
 //}}AFX_MSG_MAP
 ON_WM_PAINT()
 END_MESSAGE_MAP()
 
 void CMyMaintDlg::OnPaint()
 {
 CPaintDC dc(this);
 //CDialog::OnPaint()
 }
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| HungryEagle 
								Интересующийся    Offline 
								Пол:    | 
								|  | « Ответ #5 : 03-09-2009 16:38 »  |  | 
 
 Спасибо, добрый человек, но я не о том спрашивал.
 Если это задокументировать, то не ругается.
 
 void CMainWnd::OnPaint()
 {
 CPaintDC dc(this);
 dc.SetPixel(500,200,RGB(255,0,0));
 }
 
 Как OnPaint() объявить в CMainWnd ? Открыл дерево классов, там чёрт ногу сломет ...
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #6 : 03-09-2009 16:38 »  |  | 
 
 я тебе только что рассказал, как. Целых 2 способа даже |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| HungryEagle 
								Интересующийся    Offline 
								Пол:    | 
								|  | « Ответ #7 : 03-09-2009 16:39 »  |  | 
 
 У меня VS 2008 Team System |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| HungryEagle 
								Интересующийся    Offline 
								Пол:    | 
								|  | « Ответ #8 : 03-09-2009 16:40 »  |  | 
 
 Спасибо, попробую ...
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #9 : 03-09-2009 16:41 »  |  | 
 
 в 2008 - в списке классов проекта найди CMainWnd , щёлкни правой кнопой мыши, свойства. В окне свойств нажми кнопку "сообщения" , выбери WM_PAINT, там в выпадающем списке выбери OnPaint |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| HungryEagle 
								Интересующийся    Offline 
								Пол:    | 
								|  | « Ответ #10 : 03-09-2009 16:56 »  |  | 
 
 Спасибо, объявлять получилось, потом начал ругаться на недостающую точку с запятой. Выдал аж 15 ошибок. Глянешь ?Вот прям это вставляй:
 
 
 #include "afxwin.h"                  // MFC Основные и стандартные компоненты
 
 class CMainWnd : public CFrameWnd
 {
 public:
 CMainWnd();                     // Конструктор по умолчанию
 DECLARE_MESSAGE_MAP()
 afx_msg void OnPaint();
 };
 
 CMainWnd::CMainWnd()
 {
 Create(NULL,"Step1",WS_OVERLAPPEDWINDOW,rectDefault,
 NULL,NULL);                  // Создать окно программы
 }
 
 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;                     // запуск приложения
 
 void CMainWnd::OnPaint()
 {
 CPaintDC dc(this); // device context for painting
 dc.SetPixel(500,200,RGB(255,0,0));
 }BEGIN_MESSAGE_MAP(CMainWnd, CFrameWnd);
 ON_WM_PAINT();
 END_MESSAGE_MAP();
 };
 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| HungryEagle 
								Интересующийся    Offline 
								Пол:    | 
								|  | « Ответ #11 :  03-09-2009 17:02 »   |  | 
 
 Лёха, а у Тебя есть SKYPE ? Может с видео поговорим ? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #12 : 03-09-2009 17:10 »  |  | 
 
 я не знаю, где т/з не хватает - глянь, куда компилятор указывает. Скорее всего что то тут  }BEGIN_MESSAGE_MAP(CMainWnd, CFrameWnd); - лишняя фиговая скобка ) Скайпа нет и никогда не будет    В асю щас не могу выйти, только завтра |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| HungryEagle 
								Интересующийся    Offline 
								Пол:    | 
								|  | « Ответ #13 : 03-09-2009 17:15 »  |  | 
 
 Да, та фигурная скобка была лишней ! Осталось 14 ошибок !!!
 :\1\step1.cpp(43) : error C2601: 'CMainWnd::GetMessageMap' : local function definitions are illegal
 1>        e:\1\step1.cpp(40): this line contains a '{' which has not yet been matched
 1>e:\1\step1.cpp(43) : error C2601: 'CMainWnd::GetThisMessageMap' : local function definitions are illegal
 1>        e:\1\step1.cpp(40): this line contains a '{' which has not yet been matched
 1>e:\1\step1.cpp(43) : error C2466: cannot allocate an array of constant size 0
 1>e:\1\step1.cpp(43) : error C2143: syntax error : missing '}' before ';'
 1>e:\1\step1.cpp(44) : error C2143: syntax error : missing ';' before '}'
 1>e:\1\step1.cpp(44) : error C2143: syntax error : missing ';' before ','
 1>e:\1\step1.cpp(45) : error C2143: syntax error : missing ';' before '}'
 1>e:\1\step1.cpp(45) : error C2653: 'TheBaseClass' : is not a class or namespace name
 1>e:\1\step1.cpp(45) : error C2065: 'GetThisMessageMap' : undeclared identifier
 1>e:\1\step1.cpp(45) : error C2065: '_messageEntries' : undeclared identifier
 1>e:\1\step1.cpp(45) : error C2059: syntax error : 'return'
 1>e:\1\step1.cpp(45) : error C2059: syntax error : '}'
 1>e:\1\step1.cpp(45) : error C2143: syntax error : missing ';' before '}'
 1>e:\1\step1.cpp(45) : error C2059: syntax error : '}'
 
 SKYPE классная штука ! Зря не любишь.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| HungryEagle 
								Интересующийся    Offline 
								Пол:    | 
								|  | « Ответ #14 : 03-09-2009 17:24 »  |  | 
 
 #include "afxwin.h"                  // MFC Основные и стандартные компоненты
 class CMainWnd : public CFrameWnd
 {
 public:
 CMainWnd();                     // Конструктор по умолчанию
 DECLARE_MESSAGE_MAP()
 afx_msg void OnPaint();
 };
 
 CMainWnd::CMainWnd()
 {
 Create(NULL,"Step1",WS_OVERLAPPEDWINDOW,rectDefault,
 NULL,NULL);                  // Создать окно программы
 };
 
 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;                     // запуск приложения
 
 void CMainWnd::OnPaint()
 {
 CPaintDC dc(this); // device context for painting
 dc.SetPixel(500,200,RGB(255,0,0));
 BEGIN_MESSAGE_MAP(CMainWnd, CFrameWnd)
 ON_WM_PAINT()
 END_MESSAGE_MAP()
 };
 
 Осталось 2 ошибки:
 
 1>e:\1\step1.cpp(43) : error C2601: 'CMainWnd::GetMessageMap' : local function definitions are illegal
 1>        e:\1\step1.cpp(40): this line contains a '{' which has not yet been matched
 1>e:\1\step1.cpp(43) : error C2601: 'CMainWnd::GetThisMessageMap' : local function definitions are illegal
 1>        e:\1\step1.cpp(40): this line contains a '{' which has not yet been matched
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #15 : 03-09-2009 17:26 »  |  | 
 
 1)BEGIN_MESSAGE_MAP(CMainWnd, CFrameWnd);
 ON_WM_PAINT();
 END_MESSAGE_MAP();
 
 - не должно быть внутри функции, вынеси перед функцией
 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| HungryEagle 
								Интересующийся    Offline 
								Пол:    | 
								|  | « Ответ #16 : 03-09-2009 17:35 »  |  | 
 
 Спасибо ! Работает ! Ты её добил ! Мой скайп cdman__x, ася 267302506. Добавляйся будем общаться ! |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #17 : 03-09-2009 17:45 »  |  | 
 
 добил - это хорошо. Но привыкай пользоваться визардом для экономии времени и нервов)
 А потом, никто не мешает полазить по визардовскому коду и посмотреть, что как устроено
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| HungryEagle 
								Интересующийся    Offline 
								Пол:    | 
								|  | « Ответ #18 : 03-09-2009 18:09 »  |  | 
 
 Следующая задача будет у меня вывод спрайта, помощи не прошу, буду мучаться сам -:)))Добавляйся хоть в аську ко мне.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #19 : 03-09-2009 18:11 »  |  | 
 
 подскажу только: GDI+
 Image
 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	|  |