 |
11.12.2009, 07:40
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 23.11.2009
 Сообщений: 10
 Популярность: 146
 Сказал(а) спасибо: 6
Поблагодарили 41 раз(а) в 20 сообщениях
|
GDI+ Native Template
Честно-говоря я просто набиваю сообщения что б увидеть чат
Но пытаюсь это сделать наиболее культурным способом. В архиве то что в названии темы и еще несколько заморочек, родительский класс контролов и класс edit - его child собственно.
PHP код:
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") //Усовершенствованная версия метода включения WinXP контролов.
#pragma comment(lib,"gdiplus.lib") #pragma comment(lib,"Ws2_32.lib") #include <winsock2.h> #include <ws2tcpip.h> #include <stdio.h>
#include <windows.h> #include <ddraw.h> #include <stdio.h> #include <gdipluspixelformats.h> #include <gdiplusenums.h> #include <GdiplusTypes.h> #include <GdiplusGpStubs.h> #include <gdiplusimaging.h> #include <gdiplusmetaheader.h> #include <gdipluscolor.h> #include <gdipluscolormatrix.h> #include <GdiPlusFlat.h> #include <GdiPlusInit.h>
Эта последовательность инлкудов обязательна - менять нельзя. Собственно это все что нужно для работы с GDI+.
Начнемс:
Пишем в WinMain инициализацию самого GDI+-а
PHP код:
GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
Далее едем к wndProc-у
PHP код:
case WM_PAINT: { BeginPaint(hWnd,&ps); OnPaint(); EndPaint(hWnd,&ps); }return 0;
Собственно это все - дальше в OnPaint-е можете делать все что захотите, но в данном случае реализована двойна-буфферизация:
PHP код:
case WM_CREATE: { InitializeGraphics(GetWindowDC(hWnd)); InvalidateRect(hWnd,0,true); }return 0;
PHP код:
void InitializeGraphics(HDC hdc) { GdipCreateFromHDC(hdc,&graphics); GdipCreateBitmapFromGraphics(Window_w,Window_h,graphics,&bmpBack); GdipGetImageGraphicsContext(bmpBack,&memGraphics); GdipSetSmoothingMode(memGraphics,SmoothingModeAntiAlias); GdipCreatePen1(Color::Black,1.0f,UnitPixel,&pen0); }
PHP код:
void OnPaint() { GdipGraphicsClear(memGraphics,0xFFA0A0A0); GdipDrawRectangle(memGraphics,pen0,4.0f,4.0f,595.0f,101.0f); GdipDrawImagePointRectI(graphics,bmpBack,8,30,0,0,Window_w,Window_h,UnitPixel); };
Остальные части программы - заготовки для чего либо. Я не очень силен в С++ потому программа и не была допилена - на ассемблере все это реализуется в пару раз легче.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 09:04.
|
 |