Zireael |
Отправлено: 14 Августа, 2019 - 15:22:26
|
Эксперт
Покинул форум
Сообщений всего: 4395
Дата рег-ции: Нояб. 2017
Репутация: 580
|
Цитата: из списка можно выделять 1 или более строчек
https://docs.microsoft.com/en-us.../list-box-styles
Цитата: LBS_EXTENDEDSEL
Allows multiple items to be selected by using the SHIFT key and the mouse or special key combinations.
(Позволяет выбрать несколько элементов с помощью клавиши SHIFT и мыши или специальных комбинаций клавиш.) |
|
|
007wan |
Отправлено: 16 Августа, 2019 - 10:09:11
|
Эксперт
Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Textout на диалоге (Отобразить)CODE:#define RUSSIAN_CHARSET 204
#define OUT_DEFAULT_PRECIS 0
#define CLEARTYPE_QUALITY 5
#define FF_DONTCARE 0
#define CLIP_DEFAULT_PRECIS 0
external(INT, "GetDC", "GetDC", "User32.dll" );
external(INT, "SelectObject", "SelectObject", "Gdi32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
external(INT, "TextOut", "TextOutA", "Gdi32.dll" );
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll" );
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll" );
int font1, font2, font3;
createdialog(0);
showdialog(0, "Диалог", 100, 100, 300, 300, 1, 1);
char a[99], b[99], c[99];
strcpy(#a[0], "Текст");
strcpy(#b[0], "Курсив");
strcpy(#c[0], "Подчёркнутый");
int hdc=GetDC(gethwnd(0));
text(hdc, 20, 20, font1, 255, #a[0], size(#a[0])); // вывод текста
text(hdc, 20, 50, font2, 6006303, #b[0], size(#b[0]));
text(hdc, 20, 80, font3, 13734242, #c[0], size(#c[0]));
loop()
{
sleep(1);
}
function getmessage(0, WM_CREATE)
{
// создание шрифтов
font1 = CreateFont(24, 0, 0, 0, 700, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
font2 = CreateFont(32, 0, 0, 0, 400, 1, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
font3 = CreateFont(36, 0, 0, 0, 500, 0, 1, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
}
// принимает: hdc, координата X, координата Y, шрифт, цвет текста, указатель на массив с текстом, длина текста
function text(int HDC, int X, int Y, int FONT, int COLOR, char #array, int size_array)
{
SelectObject (HDC, FONT);
SetBkMode(HDC, 0);
SetTextColor(HDC, COLOR);
TextOut(HDC, X, Y, address(#array[0]), size_array);
}
А как вывести прямоугольник белого цвета на экран с текстом в нём. Используя функции Rectangle и Text или связанный с текстом.
(Добавление)
Как вывести на экран? CODE:Rectangle(-1, 100, 200, 100, 100);
(Добавление)
Вот что не так? где прямоугольник на экране?CODE:#define GRADIENT_FILL_RECT_H 0
#define GRADIENT_FILL_RECT_V 1
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateMenu", "CreateMenu", "User32.dll" );
external(INT, "CreatePopupMenu", "CreatePopupMenu", "User32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
external(INT, "CreateMutex", "CreateMutexA", "Kernel32.dll");
external(INT, "CloseHandle", "CloseHandle", "Kernel32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateUpDownControl", "CreateUpDownControl", "Comctl32.dll");
external(INT, "CheckMenuItem", "CheckMenuItem", "User32.dll");
external(INT, "ClipCursor", "ClipCursor", "User32.dll");
external(INT, "CreateHatchBrush", "CreateHatchBrush", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
int hdc=GetDC(0);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Pen2, Object_Brush1, Object_Brush2;
char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={100, 150, 350, 165, 100, 150, 350, 165} // координаты
//int coord[8]={200, 300, 700, 330, 200, 300, 700, 330} // координаты
int color[4]={3329330, 0, 9470064, 65539} // цвета
int rect[4]={0, 1, 2, 3}
for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
textout(0, 0, 0, format(i/5*2), 1);
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
Select_Pen1 = SelectObject(hdc, Object_Pen1);
Select_Brush1 = SelectObject(hdc, Object_Brush1);
Rectangle(hdc, 100, 200, 100, 100);
GradientFill(hdc, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V); // рисование
sleep(10);
}
ReleaseDC(0, hdc);
function fill_structure(char #Vertex, int #pos, int #c)
{
for(int i=0; i<2; i++)
{
codhex(pos[i*4], #Vertex[i*32]);
codhex(pos[i*4+1], #Vertex[i*32+4]);
codhex(rvalue(c[i*2]) * 256, #Vertex[i*32+8]);
codhex(gvalue(c[i*2]) * 256, #Vertex[i*32+10]);
codhex(bvalue(c[i*2]) * 256, #Vertex[i*32+12]);
codhex(pos[i*4+2], #Vertex[i*32+16]);
codhex(pos[i*4+3], #Vertex[i*32+20]);
codhex(rvalue(c[i*2+1]) * 256, #Vertex[i*32+24]);
codhex(gvalue(c[i*2+1]) * 256, #Vertex[i*32+26]);
codhex(bvalue(c[i*2+1]) * 256, #Vertex[i*32+28]);
}
}
loop()
{
sleep(100);
}
(Добавление)
Или вот побольше кодКод (Отобразить)CODE:#define GRADIENT_FILL_RECT_H 0
#define GRADIENT_FILL_RECT_V 1
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateMenu", "CreateMenu", "User32.dll" );
external(INT, "CreatePopupMenu", "CreatePopupMenu", "User32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
external(INT, "CreateMutex", "CreateMutexA", "Kernel32.dll");
external(INT, "CloseHandle", "CloseHandle", "Kernel32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateUpDownControl", "CreateUpDownControl", "Comctl32.dll");
external(INT, "CheckMenuItem", "CheckMenuItem", "User32.dll");
external(INT, "ClipCursor", "ClipCursor", "User32.dll");
external(INT, "CreateHatchBrush", "CreateHatchBrush", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
#definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";
int hdc=GetDC(0);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Pen2, Object_Brush1, Object_Brush2;
int Object_HatchBrush1;
char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={100, 150, 350, 165, 100, 150, 350, 165} // координаты
//int coord[8]={200, 300, 700, 330, 200, 300, 700, 330} // координаты
int color[4]={3329330, 0, 9470064, 65539} // цвета
int rect[4]={0, 1, 2, 3}
Object_Pen1 = CreatePen(PS_DASH, 1, 6908265);
Object_Brush1 = CreateSolidBrush(15790320);
for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
textout(0, 0, 0, format(i/5*2), 1);
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
Select_Pen1 = SelectObject(hdc, Object_Pen1);
Select_Brush1 = SelectObject(hdc, Object_Brush1);
Rectangle(hdc, 100, 100, 100, 100);
GradientFill(hdc, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V); // рисование
sleep(10);
}
ReleaseDC(0, hdc);
function fill_structure(char #Vertex, int #pos, int #c)
{
for(int i=0; i<2; i++)
{
codhex(pos[i*4], #Vertex[i*32]);
codhex(pos[i*4+1], #Vertex[i*32+4]);
codhex(rvalue(c[i*2]) * 256, #Vertex[i*32+8]);
codhex(gvalue(c[i*2]) * 256, #Vertex[i*32+10]);
codhex(bvalue(c[i*2]) * 256, #Vertex[i*32+12]);
codhex(pos[i*4+2], #Vertex[i*32+16]);
codhex(pos[i*4+3], #Vertex[i*32+20]);
codhex(rvalue(c[i*2+1]) * 256, #Vertex[i*32+24]);
codhex(gvalue(c[i*2+1]) * 256, #Vertex[i*32+26]);
codhex(bvalue(c[i*2+1]) * 256, #Vertex[i*32+28]);
}
}
loop()
{
sleep(100);
} |
|
|
Zireael |
Отправлено: 16 Августа, 2019 - 11:07:45
|
Эксперт
Покинул форум
Сообщений всего: 4395
Дата рег-ции: Нояб. 2017
Репутация: 580
|
Цитата: Или вот побольше код
Надо ещё больше, вдруг заработает.
Цитата: Rectangle(hdc, 100, 100, 100, 100);
Левый верхний угол в координатах 100 100 и правый нижний в 100 100. Что должно нарисовать? |
|
|
Zireael |
Отправлено: 16 Августа, 2019 - 11:45:13
|
Эксперт
Покинул форум
Сообщений всего: 4395
Дата рег-ции: Нояб. 2017
Репутация: 580
|
code (Отобразить)CODE:#define GRADIENT_FILL_RECT_H 0
#define GRADIENT_FILL_RECT_V 1
#define PS_DASH 1
#define SRCCOPY 13369376
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "DeleteDC", "DeleteDC", "Gdi32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "BitBlt", "BitBlt", "Gdi32.dll" );
int coord_rectangle[4]={300, 100, 300, 130} // левый верхний угол прямоугольника и его размеры
int hdc, DC, bitmapDC;
hdc=GetDC(0);
DC=CreateCompatibleDC(hdc);
bitmapDC=CreateCompatibleBitmap(hdc, coord_rectangle[2], coord_rectangle[3]);
SelectObject(DC, bitmapDC);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Brush1;
char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={20, 60, 280, 75, 20, 60, 280, 75} // координаты линии
int color[4]={3329330, 0, 9470064, 65539} // цвета
int rect[4]={0, 1, 2, 3}
Object_Pen1 = CreatePen(PS_DASH, 1, 6908265);
Object_Brush1 = CreateSolidBrush(15790320);
for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
int percent=i/(coord[2]-coord[0])*100;
textout(0, 0, 0, format(percent), 0);
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
Select_Pen1 = SelectObject(DC, Object_Pen1);
Select_Brush1 = SelectObject(DC, Object_Brush1);
Rectangle(DC, 0, 0, coord_rectangle[2], coord_rectangle[3]);
GradientFill(DC, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V); // рисование
looptime(10)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
}
SelectObject(DC, Select_Pen1);
SelectObject(DC, Select_Brush1);
DeleteDC(DC);
DeleteObject(bitmapDC);
ReleaseDC(0, hdc);
function fill_structure(char #Vertex, int #pos, int #c)
{
for(int i=0; i<2; i++)
{
codhex(pos[i*4], #Vertex[i*32]);
codhex(pos[i*4+1], #Vertex[i*32+4]);
codhex(rvalue(c[i*2]) * 256, #Vertex[i*32+8]);
codhex(gvalue(c[i*2]) * 256, #Vertex[i*32+10]);
codhex(bvalue(c[i*2]) * 256, #Vertex[i*32+12]);
codhex(pos[i*4+2], #Vertex[i*32+16]);
codhex(pos[i*4+3], #Vertex[i*32+20]);
codhex(rvalue(c[i*2+1]) * 256, #Vertex[i*32+24]);
codhex(gvalue(c[i*2+1]) * 256, #Vertex[i*32+26]);
codhex(bvalue(c[i*2+1]) * 256, #Vertex[i*32+28]);
}
} |
|
|
007wan |
Отправлено: 16 Августа, 2019 - 11:59:02
|
Эксперт
Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017
Репутация: -2
|
Вау, спасибо - большое)
(Добавление)
Zireael пишет: code (Отобразить)CODE:#define GRADIENT_FILL_RECT_H 0
#define GRADIENT_FILL_RECT_V 1
#define PS_DASH 1
#define SRCCOPY 13369376
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "DeleteDC", "DeleteDC", "Gdi32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "BitBlt", "BitBlt", "Gdi32.dll" );
int coord_rectangle[4]={300, 100, 300, 130} // левый верхний угол прямоугольника и его размеры
int hdc, DC, bitmapDC;
hdc=GetDC(0);
DC=CreateCompatibleDC(hdc);
bitmapDC=CreateCompatibleBitmap(hdc, coord_rectangle[2], coord_rectangle[3]);
SelectObject(DC, bitmapDC);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Brush1;
char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={20, 60, 280, 75, 20, 60, 280, 75} // координаты линии
int color[4]={3329330, 0, 9470064, 65539} // цвета
int rect[4]={0, 1, 2, 3}
Object_Pen1 = CreatePen(PS_DASH, 1, 6908265);
Object_Brush1 = CreateSolidBrush(15790320);
for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
int percent=i/(coord[2]-coord[0])*100;
textout(0, 0, 0, format(percent), 0);
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
Select_Pen1 = SelectObject(DC, Object_Pen1);
Select_Brush1 = SelectObject(DC, Object_Brush1);
Rectangle(DC, 0, 0, coord_rectangle[2], coord_rectangle[3]);
GradientFill(DC, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V); // рисование
looptime(10)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
}
SelectObject(DC, Select_Pen1);
SelectObject(DC, Select_Brush1);
DeleteDC(DC);
DeleteObject(bitmapDC);
ReleaseDC(0, hdc);
function fill_structure(char #Vertex, int #pos, int #c)
{
for(int i=0; i<2; i++)
{
codhex(pos[i*4], #Vertex[i*32]);
codhex(pos[i*4+1], #Vertex[i*32+4]);
codhex(rvalue(c[i*2]) * 256, #Vertex[i*32+8]);
codhex(gvalue(c[i*2]) * 256, #Vertex[i*32+10]);
codhex(bvalue(c[i*2]) * 256, #Vertex[i*32+12]);
codhex(pos[i*4+2], #Vertex[i*32+16]);
codhex(pos[i*4+3], #Vertex[i*32+20]);
codhex(rvalue(c[i*2+1]) * 256, #Vertex[i*32+24]);
codhex(gvalue(c[i*2+1]) * 256, #Vertex[i*32+26]);
codhex(bvalue(c[i*2+1]) * 256, #Vertex[i*32+28]);
}
}
А как туда добавить текст в эту область прямоугольника и что бы тоже не мигал?
(Добавление)
Всё сделал |
|
|
Zireael |
Отправлено: 16 Августа, 2019 - 12:28:43
|
Эксперт
Покинул форум
Сообщений всего: 4395
Дата рег-ции: Нояб. 2017
Репутация: 580
|
code (Отобразить)CODE:#define GRADIENT_FILL_RECT_H 0
#define GRADIENT_FILL_RECT_V 1
#define PS_DASH 1
#define SRCCOPY 13369376
#define RUSSIAN_CHARSET 204
#define OUT_DEFAULT_PRECIS 0
#define CLEARTYPE_QUALITY 5
#define FF_DONTCARE 0
#define CLIP_DEFAULT_PRECIS 0
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "DeleteDC", "DeleteDC", "Gdi32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "BitBlt", "BitBlt", "Gdi32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
external(INT, "TextOut", "TextOutA", "Gdi32.dll" );
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll" );
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll" );
char text[99];
int font = CreateFont(24, 0, 0, 0, 700, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
int coord_rectangle[4]={300, 100, 300, 130} // левый верхний угол прямоугольника и его размеры
int hdc, DC, bitmapDC;
hdc=GetDC(0);
DC=CreateCompatibleDC(hdc);
bitmapDC=CreateCompatibleBitmap(hdc, coord_rectangle[2], coord_rectangle[3]);
SelectObject(DC, bitmapDC);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Brush1;
char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={20, 60, 280, 75, 20, 60, 280, 75} // координаты линии
int color[4]={3329330, 0, 9470064, 65539} // цвета
int rect[4]={0, 1, 2, 3}
Object_Pen1 = CreatePen(PS_DASH, 1, 6908265);
Object_Brush1 = CreateSolidBrush(15790320);
for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
int percent=i/(coord[2]-coord[0])*100;
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
Select_Pen1 = SelectObject(DC, Object_Pen1);
Select_Brush1 = SelectObject(DC, Object_Brush1);
Rectangle(DC, 0, 0, coord_rectangle[2], coord_rectangle[3]);
GradientFill(DC, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V); // рисование
strcpy(#text[0], format(percent));
text_out(DC, 130, 20, font, 255, #text[0], size(#text[0])); // 130 20 - координаты, 255 - цвем
looptime(20)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
}
SelectObject(DC, Select_Pen1);
SelectObject(DC, Select_Brush1);
DeleteDC(DC);
DeleteObject(bitmapDC);
ReleaseDC(0, hdc);
update(-1);
function text_out(int HDC, int X, int Y, int FONT, int COLOR, char #array, int size_array)
{
int old_font=SelectObject (HDC, FONT);
SetBkMode(HDC, 0);
SetTextColor(HDC, COLOR);
TextOut(HDC, X, Y, address(#array[0]), size_array);
SelectObject (HDC, old_font);
}
function fill_structure(char #Vertex, int #pos, int #c)
{
for(int i=0; i<2; i++)
{
codhex(pos[i*4], #Vertex[i*32]);
codhex(pos[i*4+1], #Vertex[i*32+4]);
codhex(rvalue(c[i*2]) * 256, #Vertex[i*32+8]);
codhex(gvalue(c[i*2]) * 256, #Vertex[i*32+10]);
codhex(bvalue(c[i*2]) * 256, #Vertex[i*32+12]);
codhex(pos[i*4+2], #Vertex[i*32+16]);
codhex(pos[i*4+3], #Vertex[i*32+20]);
codhex(rvalue(c[i*2+1]) * 256, #Vertex[i*32+24]);
codhex(gvalue(c[i*2+1]) * 256, #Vertex[i*32+26]);
codhex(bvalue(c[i*2+1]) * 256, #Vertex[i*32+28]);
}
} |
|
|
007wan |
Отправлено: 16 Августа, 2019 - 12:54:58
|
Эксперт
Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017
Репутация: -2
|
Или можно было по проще:
Код (Отобразить)CODE:#define GRADIENT_FILL_RECT_H 0
#define GRADIENT_FILL_RECT_V 1
#define PS_DASH 1
#define SRCCOPY 13369376
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "DeleteDC", "DeleteDC", "Gdi32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "BitBlt", "BitBlt", "Gdi32.dll" );
external(INT, "TextOut", "TextOutA", "Gdi32.dll" );
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll" );
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll" );
int coord_rectangle[4]={300, 100, 300, 130} // левый верхний угол прямоугольника и его размеры
#definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";
int hdc, DC, bitmapDC;
hdc=GetDC(0);
DC=CreateCompatibleDC(hdc);
bitmapDC=CreateCompatibleBitmap(hdc, coord_rectangle[2], coord_rectangle[3]);
SelectObject(DC, bitmapDC);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Brush1;
char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={20, 55, 280, 65, 20, 55, 280, 65} // координаты линии
int color[4]={3329330, 0, 9470064, 65539} // цвета
int rect[4]={0, 1, 2, 3}
Object_Pen1 = CreatePen(PS_SOLID, 1, 6908265);
Object_Brush1 = CreateSolidBrush(15790320);
for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
int percent=i/(coord[2]-coord[0])*100;
textout(0, 0, 0, format(percent), 0);
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
Select_Pen1 = SelectObject(DC, Object_Pen1);
Select_Brush1 = SelectObject(DC, Object_Brush1);
Rectangle(DC, 0, 0, coord_rectangle[2], coord_rectangle[3]);
SetTextColor(DC, 255);
SetBkMode(DC, 1);
TextOut(DC, 100, 10, "Текст", 5);
GradientFill(DC, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V); // рисование
looptime(10)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
}
SelectObject(DC, Select_Pen1);
SelectObject(DC, Select_Brush1);
DeleteDC(DC);
DeleteObject(bitmapDC);
ReleaseDC(0, hdc);
function fill_structure(char #Vertex, int #pos, int #c)
{
for(int i=0; i<2; i++)
{
codhex(pos[i*4], #Vertex[i*32]);
codhex(pos[i*4+1], #Vertex[i*32+4]);
codhex(rvalue(c[i*2]) * 256, #Vertex[i*32+8]);
codhex(gvalue(c[i*2]) * 256, #Vertex[i*32+10]);
codhex(bvalue(c[i*2]) * 256, #Vertex[i*32+12]);
codhex(pos[i*4+2], #Vertex[i*32+16]);
codhex(pos[i*4+3], #Vertex[i*32+20]);
codhex(rvalue(c[i*2+1]) * 256, #Vertex[i*32+24]);
codhex(gvalue(c[i*2+1]) * 256, #Vertex[i*32+26]);
codhex(bvalue(c[i*2+1]) * 256, #Vertex[i*32+28]);
}
}
loop()
{
sleep(10);
}
(Добавление)
Zireael пишет: int old_font=SelectObject (HDC, FONT); зачем это? если можно
вместо этого |
|
|
Zireael |
Отправлено: 16 Августа, 2019 - 13:17:20
|
Эксперт
Покинул форум
Сообщений всего: 4395
Дата рег-ции: Нояб. 2017
Репутация: 580
|
Цитата: int old_font=SelectObject (HDC, FONT);
зачем это?
FONT - это шрифт.
Чуть исправил в TextOut string надо передавать.
code (Отобразить)CODE:#define GRADIENT_FILL_RECT_H 0
#define GRADIENT_FILL_RECT_V 1
#define PS_SOLID 0
#define SRCCOPY 13369376
#define RUSSIAN_CHARSET 204
#define OUT_DEFAULT_PRECIS 0
#define CLEARTYPE_QUALITY 5
#define FF_DONTCARE 0
#define CLIP_DEFAULT_PRECIS 0
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "DeleteDC", "DeleteDC", "Gdi32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "BitBlt", "BitBlt", "Gdi32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
external(INT, "TextOut", "TextOutA", "Gdi32.dll" );
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll" );
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll" );
int font = CreateFont(36, 0, 0, 0, 700, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
int coord_rectangle[4]={300, 100, 300, 130} // левый верхний угол прямоугольника и его размеры
int hdc, DC, bitmapDC;
hdc=GetDC(0);
DC=CreateCompatibleDC(hdc);
bitmapDC=CreateCompatibleBitmap(hdc, coord_rectangle[2], coord_rectangle[3]);
SelectObject(DC, bitmapDC);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Brush1;
char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={20, 60, 280, 75, 20, 60, 280, 75} // координаты линии
int color[4]={3329330, 0, 9470064, 65539} // цвета
int rect[4]={0, 1, 2, 3}
Object_Pen1 = CreatePen(PS_SOLID, 1, 6908265);
Object_Brush1 = CreateSolidBrush(15790320);
for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
int percent=i/(coord[2]-coord[0])*100;
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
Select_Pen1 = SelectObject(DC, Object_Pen1);
Select_Brush1 = SelectObject(DC, Object_Brush1);
Rectangle(DC, 0, 0, coord_rectangle[2], coord_rectangle[3]);
GradientFill(DC, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V); // рисование
text_out(DC, 130, 20, font, 255, format(percent)); // 130 20 - координаты, 255 - цвем
looptime(20)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
}
SelectObject(DC, Select_Pen1);
SelectObject(DC, Select_Brush1);
DeleteDC(DC);
DeleteObject(bitmapDC);
ReleaseDC(0, hdc);
update(-1);
function text_out(int HDC, int X, int Y, int FONT, int COLOR, string s)
{
int old_font=SelectObject (HDC, FONT);
SetBkMode(HDC, 0);
SetTextColor(HDC, COLOR);
TextOut(HDC, X, Y, s, size(s));
SelectObject (HDC, old_font);
}
function fill_structure(char #Vertex, int #pos, int #c)
{
for(int i=0; i<2; i++)
{
codhex(pos[i*4], #Vertex[i*32]);
codhex(pos[i*4+1], #Vertex[i*32+4]);
codhex(rvalue(c[i*2]) * 256, #Vertex[i*32+8]);
codhex(gvalue(c[i*2]) * 256, #Vertex[i*32+10]);
codhex(bvalue(c[i*2]) * 256, #Vertex[i*32+12]);
codhex(pos[i*4+2], #Vertex[i*32+16]);
codhex(pos[i*4+3], #Vertex[i*32+20]);
codhex(rvalue(c[i*2+1]) * 256, #Vertex[i*32+24]);
codhex(gvalue(c[i*2+1]) * 256, #Vertex[i*32+26]);
codhex(bvalue(c[i*2+1]) * 256, #Vertex[i*32+28]);
}
} |
|
|
|