Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2017, 10:10   #1
Maray
Форумчанин
 
Регистрация: 03.01.2015
Сообщений: 160
Лампочка Ошибка в контексте устройства

Добрый день!

Помогите, пожалуйста, Получаю контекст устройства, но он почему то нулевой. Из-за этого ничего на экране не рисуется. Помогите, пожалуйста.

Код:
#include <Windows.h>
#include <WindowsX.h>
#include <CommCtrl.h>
#include <tchar.h>
#include <stdlib.h>
#include <gdiplus.h>
#include <strsafe.h>
#include <sstream>
#include"Math.h"
#include<Psapi.h>
#include<gdiplusflat.h>
#include<memory>

#pragma comment (lib, "Gdiplus.lib")
#pragma comment(lib, "secur32.lib")
typedef std::ostringstream SStre;
using namespace Gdiplus;

TCHAR szBuffer[100] = TEXT("");
TCHAR ProgDir[MAX_PATH];
;

#define IDC_BUTTON 2001
HDC hdc = NULL;


LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
void OnIdle(HWND hwnd);
BOOL PreTranslateMessage(LPMSG lpMsg);
void OnDestroy(HWND hwnd);
void Display();

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpszCmdLIne, int nCmdShow)
{
	WNDCLASSEX wcex = { sizeof(WNDCLASSEX) };
	wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
	wcex.lpfnWndProc = MyWindowProc;
	wcex.hInstance = hInstance;
	wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
	wcex.lpszMenuName = NULL;
	wcex.lpszClassName = TEXT("Класс");
	wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

	if (0 == RegisterClassEx(&wcex))
	{
		return -1;
	}

	HWND hWnd = CreateWindowEx(0, TEXT("Класс"), TEXT("Программа"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 1400, 700, NULL, NULL, hInstance, NULL);

	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);

	SetTimer(hWnd, 1, 50, NULL);

	LoadLibrary(TEXT("ComCtl32.dll"));

	if (NULL == hWnd)
	{
		return -1;
	}

	ShowWindow(hWnd, nCmdShow);

	MSG msg;
	BOOL bRet;

	for (;;)
	{
		while (!PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
		{
			OnIdle(hWnd);
		}

		bRet = GetMessage(&msg, NULL, 0, 0);

		if (bRet == -1)
		{

		}
		else if (FALSE == bRet)
		{
			break;
		}
		else if (PreTranslateMessage(&msg) == FALSE)
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	return (int)msg.wParam;
}

LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	int i;
	switch (uMsg)
	{
		HANDLE_MSG(hWnd, WM_DESTROY, OnDestroy);
		
	case WM_TIMER:	
	    hdc = GetDC(hWnd);
		Display();
		ReleaseDC(hWnd, hdc);
		return 0;
	
	}

	return DefWindowProc(hWnd, uMsg, wParam, lParam);
}



void Display()
{
	Graphics g(hdc);
	g.SetSmoothingMode(SmoothingModeAntiAlias);
	g.Clear(Color::Green);
	Pen pen1(Color::Brown, 5.f);
	g.FillPolygon(&linGrLinGr, points, 11);
	g.DrawPolygon(&linGrLinGr, points, 11);
}
Maray вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО]: [C#]: когда пытаюсь присвоить переменной значение которое вводит пользователь, мне выдается ошибка мол ConvertToInt(); неприемлемо в данном контексте GRUB_666 Помощь студентам 0 07.01.2017 20:18
Как на c# изменить громкость определённого звукового устройства (не того устройства, которое используется по умолчанию)? AKepchikov C# (си шарп) 1 11.03.2015 09:00
Не существует в данном контексте zaki C# (си шарп) 1 07.12.2013 22:30
Ошибка:"Вложенные запросы в данном контексте не разрешены. Допускаются только скалярные выражения." Андрей9677 Помощь студентам 1 26.06.2013 01:58
Ошибка создания устройства после чтения параметров из файла. Sargonass Gamedev - cоздание игр: Unity, OpenGL, DirectX 10 14.01.2012 16:37