Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Неправильно отрисовывает  (Прочитано 5338 раз)
0 Пользователей и 1 Гость смотрят эту тему.
WS_SAWER
Гость
« : 20-12-2009 10:18 » 

Суть проблемы: рисуем линии, сначала все рисуется нормально, но через некоторое время линии становятся стандартными, т.е., черными с шириной = 1. Также кнопки меню становятся черным и "просвечиваются" только при наведении курсора. При этом ошибок никаких нет, программа работает (кроме того, что отображает все не так). Делал проект вин32

Помогите, пожалуйста, решить проблему

Вот часть кода, а в приложении весь код:
Код:
#include "stdafx.h"
#include "game.h"
#include <cstdlib>
using std::srand;
using std::rand;
#include <time.h>

#define MAX_LOADSTRING 100

// Глобальные переменные:
HINSTANCE hInst; // текущий экземпляр
TCHAR szTitle[MAX_LOADSTRING]; // Текст строки заголовка
TCHAR szWindowClass[MAX_LOADSTRING]; // имя класса главного окна


// Отправить объявления функций, включенных в этот модуль кода:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void DrawDiagram(HWND hWnd, HDC hdc,int [11][11]);
int Mas[11][11]; // массив шариков

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
SetTimer(hWnd, 1, 500, NULL);
RECT rect;

switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
DrawDiagram( hWnd, hdc, Mas);
DrawCursor( hWnd, hdc, kursor);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}

void DrawDiagram(HWND hWnd, HDC hdc,int [11][11])
{
RECT rect;
GetClientRect(hWnd, &rect);

const int xVE = rect.right - rect.left;
const int yVE = rect.bottom - rect.top;
int x,y;

SetMapMode(hdc, MM_ISOTROPIC);
SetWindowExtEx(hdc, xVE, yVE, NULL);
SetViewportExtEx(hdc, xVE, -yVE, NULL);  //ctnrf
SetViewportOrgEx(hdc, 0, yVE, NULL);

HPEN hPen0 = CreatePen(PS_SOLID, 3, RGB(0, 160, 0));
HPEN hOldPen = (HPEfor(int t = 0; t <= 10; ++t)

for(int t = 0; t <= 10; ++t)
{
x=xVE*t/10;
y=yVE*t/10;
     MoveToEx(hdc, x, 0, NULL); //перемещаемся в заданную точку
LineTo(hdc, x, yVE);         //рисуем туда линию
        MoveToEx(hdc, 0, y, NULL); //перемещаемся в заданную точку
LineTo(hdc, xVE, y);         //рисуем туда линию        
}
}

* game.cpp.txt (10.19 Кб - загружено 1265 раз.)
« Последнее редактирование: 20-12-2009 10:21 от Sel » Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 20-12-2009 10:23 » 

Код:
HPEN hPen0 = CreatePen(PS_SOLID, 3, RGB(0, 160, 0));
- это перо на каждый вызов создаётся? А где освобождается? Если нигде - утечка ресурсов. Когда все утекут, перестанет корректно работать.
Записан
WS_SAWER
Гость
« Ответ #2 : 20-12-2009 11:34 » 

а как освободить функцию подскажите плз
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 20-12-2009 11:39 » new

Функцией DeleteObject.
« Последнее редактирование: 20-12-2009 11:41 от Вад » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines