007wan |
Отправлено: 10 Сентября, 2019 - 15:24:57
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
[quote=ivantu]Вот видео урок:
(для просмотра ссылки Вам необходимо авторизоваться) /quote]1)Дальше не ставится, доходит до конца инсталлера и закрывается сама.
2)Нету не работают драйвера звука)))
(Добавление)
При создании большой палец(квадрат) мигает, почему?
CODE:Object_Srollbar1 = CreateWindow(0, "SCROLLBAR", 0, WS_CHILD | WS_VISIBLE | SBS_VERT, 480, 10, 20, 440, gethwnd(1), 0, 0, 0);
SetScrollRange(Object_Srollbar1, 2, Srollbar1_Min, Srollbar1_Max, 1);
SetScrollPos(Object_Srollbar1, 2, Srollbar1_Pos, 1);
Всё объявлено и работает, но мигает почему-то
(Добавление)
Короче у меня ошибка код 1. Из-за того, что я повернул скроллер(контрол). Можно пожалуйста код скроллера перевернутого рабочего, может это у меня ошибка, а то я не вижу.тут всё работает, а перевернутый нет (Отобразить)CODE:external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "SetScrollRange", "SetScrollRange", "User32.dll" );
external(INT, "SetScrollPos", "SetScrollPos", "User32.dll" );
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll" );
int b1, b2, s1, hText, hwnd;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
while(window("Диалог")==0)sleep(10);
win w=window("Диалог");
int min=0, max=300, pos=195;
SetScrollRange(s1,2,min,max,1);
SetScrollPos(s1,2,pos,1);
Изменить();
loop()sleep(1);
function Изменить()
{
SetWindowText(hText, format(pos));
//messagebox (pos);
w.height=pos;
movewindow(w);
}
function getmessage(0, WM_HSCROLL)
{
if (message.lparam==s1)
{
if (message.wparam==1 || message.wparam==3)//SB_LINERIGHT
{
pos=pos+10;
if (pos>max)pos=max;
SetScrollPos(s1,2,pos,1);
Изменить();
return;
}
if (message.wparam==0 || message.wparam==2)//SB_LINELEFT
{
pos=pos-10;
if (pos<min)pos=min;
SetScrollPos(s1,2,pos,1);
Изменить();
return;
}
///////////
if (loword(message.wparam)==5)//Зажали и двигаем
{
pos=pos-(pos-hiword(message.wparam));
if (pos>max)pos=max;
if (pos<min)pos=min;
SetScrollPos(s1,2,pos,1);
Изменить();
}
}
}
//
function getmessage(0, WM_CREATE)//Создание кнопок
{
hwnd = gethwnd(0);
s1=CreateWindow(0, "scrollbar", 0, 1342177280, 10, 10, 200, 20, hwnd, 0, 0, 0);
hText = CreateWindow(0, "STATIC", "",1342177280, 10, 30, 100, 15, hwnd, 0, 0, 0);
} |
|
|
007wan |
Отправлено: 11 Сентября, 2019 - 15:36:43
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Что за ошибки: Цитата: Ошибка создания контролов в goto код 1 Цитата: Ошибка создания контролов код 1 ????????????
В каких случаях они появляются?
(Добавление)
Причем она повляется только тогда, когда я добавляю CODE:function getmessage(1, WM_VSCROLL)
{} Не важно: Пустой или полной. А если ее нету, то всё работает. Так же: После ошибки контролы всеравно создаются и работает эта функция, но не нравится частое сообщение об ошибке. SCROLLBAR создан как надо: без ошибок.
(Добавление)
Странно, что этот код без ошибки работает.Код (Отобразить)CODE:external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "SetScrollRange", "SetScrollRange", "User32.dll" );
external(INT, "SetScrollPos", "SetScrollPos", "User32.dll" );
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll" );
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define SBS_VERT 1
int b1, b2, s1, hText, hwnd;
createdialog(1);
showdialog(1, "Диалог",100, 100, 300, 300, 1, 1);
while(window("Диалог")==0)sleep(10);
win w=window("Диалог");
int min=0, max=300, pos=195;
SetScrollRange(s1,2,min,max,1);
SetScrollPos(s1,2,pos,1);
SetWindowText(hText, format(pos));
loop()sleep(1);
function getmessage(1, WM_VSCROLL)
{
if (message.lparam==s1)
{
if (message.wparam==1 || message.wparam==3)
{
pos=pos+10;
if (pos>max)pos=max;
SetScrollPos(s1,2,pos,1);
SetWindowText(hText, format(pos));
return;
}
if (message.wparam==0 || message.wparam==2)
{
pos=pos-10;
if (pos<min)pos=min;
SetScrollPos(s1,2,pos,1);
SetWindowText(hText, format(pos));
return;
}
///////////
if (loword(message.wparam)==5)
{
pos=pos-(pos-hiword(message.wparam));
if (pos>max)pos=max;
if (pos<min)pos=min;
SetScrollPos(s1,2,pos,1);
SetWindowText(hText, format(pos));
}
}
}
//
function getmessage(1, WM_CREATE)
{
s1 = CreateWindow(0, "SCROLLBAR", 0, WS_VISIBLE | WS_CHILD | SBS_VERT, 10, 10, 20, 200, gethwnd(1), 0, 0, 0);
hText = CreateWindow(0, "STATIC", "", WS_VISIBLE | WS_CHILD | SBS_VERT, 50, 10, 100, 15, gethwnd(1), 0, 0, 0);
}
(Добавление)
Я не знаю. Почему-то создается, но с ошибкой. Код 1.
МОжет там русские символы...? Просто ничего в голову не приходит. Всё просмотрел и ничего не нашел.CODE:int s1 = CreateWindow(0, "SCROLLBAR", 0, WS_CHILD | WS_VISIBLE | SBS_VERT, 10, 10, 100, 100, gethwnd(0), 0, 0, 0); (Отредактировано автором: 11 Сентября, 2019 - 15:37:13) |
|
|
ivantu |
Отправлено: 11 Сентября, 2019 - 16:13:51
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Попробуйте сначала объявить переменную
А потом
CODE:s1 = CreateWindow(0, "SCROLLBAR", 0, WS_CHILD | WS_VISIBLE | SBS_VERT, 10, 10, 100, 100, gethwnd(0), 0, 0, 0);
но это не точно... |
|
|
007wan |
Отправлено: 11 Сентября, 2019 - 16:21:22
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
ivantu пишет: Попробуйте сначала объявить переменную
А потом
CODE:s1 = CreateWindow(0, "SCROLLBAR", 0, WS_CHILD | WS_VISIBLE | SBS_VERT, 10, 10, 100, 100, gethwnd(0), 0, 0, 0);
но это не точно...
Да ну...Я так и делал, дажеCODE:int s1 = CreateWindow(0, "SCROLLBAR", 0, WS_CHILD | WS_VISIBLE | SBS_VERT, 10, 10, 100, 100, gethwnd(0), 0, 0, 0);
Нашел ошибку, походу конфликтует с WM_HOTKEY, я ее убираю и ошибки больше нету, но зато остается мигание ползунка.
1)Когда окно активно, то мигает ползунок
2)Когда окно неактивно ползунок не мигает
(Остается в нормальном состоянии)
(Добавление)
Хочу добавить, что при прокручивании ползунка или использования кнопнок верх или вниз, то он не мигает.
(Добавление)
Короче завтра перестрою код на новый лист фрагментами и буду смотреть как и чего и почему не работает. Сначала создам пустые диалоги, потом постепенно буду добавлять новое. |
|
|
007wan |
Отправлено: 12 Сентября, 2019 - 15:16:33
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
В каких случаях возникает ошибка:
Цитата: Ошибка создания контролов в goto код 1
и
Цитата: Ошибка создания контролов код 1 ?
Из чего возникает? Почему ошибка создания контролов?
(Добавление)
Жаль так нельзя:CODE:gethwnd(1).topclient
(Добавление)
Да короче хрен его знает! У меня код большой, а при добавлении контрола SCROLLBAR через CREATEWINDOW он начинает мигать! А при добавлении функции обработчика WM_ То выдает ошибку код 1 создания контрола. Капец! Из-за чего не такая ошибка - хрен знает! Код громадный и искать в чем конфликт с этим контролов, что искать иголку в стоге сена, потому что это может быть сраная кнопка или листбокс не дает, но я всё закомменировал целый день и выявлял и просто НИЧЕГО! вЫдрал весь код и НИЧЕГО. Говорить, что мешаются директивы external слишком смешно или же переменные. Я даже копировал диалог с одной страницы рабочего скроллера и перевернул его что бы все как надо было, но ошибки так и не нашел, потому что вставлял по фукции каждый раз и после 2-3 функции таккая дичь, кто его знает может совокупность 2-или более функции провоцируют на 1 ошибку. просто дичь. Уже не хочу даж перепроверять, сильно раздражает реально.
Значит завтра попробую добавлять по функции по разному и отключать другие элементы в ней. |
|
|
007wan |
Отправлено: 14 Сентября, 2019 - 12:28:46
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Всего 2 вопроса:
1)Как сделать через fopen принцип "если открыл файл, то записать это в переменную 1, если не открыл, то записать в переменную 0". Причем файлов может быть несколько. По умолчанию флаг для всех файлов в переменной всегда 0. Сначала открыл первый файла, если открыл пишет 1, если нет, то 0, причем файлы должен проверять не на существование, а на сумму пикселей(изображение) или как-то цифрами, что бы изображение было то, которое нужно и не изменено. Изображений всего 10. Потом в конце выводит какие не открыли или не совпадают с оригиналом, которые в переменной равны 0.
(Добавление)
2)Есть код. код работает целиком, только свои изображения нужно загрузить и файлыКод (Отобразить)CODE:function Set_Loading()
{
char BLENDFUNCTION[4] = {0, 0, 20, 0}
int ftn = codhexi(#BLENDFUNCTION[0], 4);
int Display_Color, Display_Width, Display_Height;
getdisplay(Display_Color, Display_Width, Display_Height);
int font = CreateFont(14, 0, 0, 0, 100, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
int coord_rectangle[4] = {Display_Width/2-160, Display_Height/2-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;
string temp_fold = tempfolder();
string path_fold = pathfolder();
char TRIVERTEX[64];
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};
int num = 33;//100 процентов делим на 3 изображения
Object_Pen1 = CreatePen(PS_INSIDEFRAME, 2, 6908265);
Object_Brush1 = CreateSolidBrush(16777215);
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;
for(int s=0; s<2; s++)
{
codhex(coord[s*4], #TRIVERTEX[s*32]);
codhex(coord[s*4+1], #TRIVERTEX[s*32+4]);
codhex(rvalue(color[s*2]) * 256, #TRIVERTEX[s*32+8]);
codhex(gvalue(color[s*2]) * 256, #TRIVERTEX[s*32+10]);
codhex(bvalue(color[s*2]) * 256, #TRIVERTEX[s*32+12]);
codhex(coord[s*4+2], #TRIVERTEX[s*32+16]);
codhex(coord[s*4+3], #TRIVERTEX[s*32+20]);
codhex(rvalue(color[s*2+1]) * 256, #TRIVERTEX[s*32+24]);
codhex(gvalue(color[s*2+1]) * 256, #TRIVERTEX[s*32+26]);
codhex(bvalue(color[s*2+1]) * 256, #TRIVERTEX[s*32+28]);
}
for (int g=percent; g>=num; g++)
{
string Text_Loading = "Unpack: C:\...\Temp\Image_"+format(percent/33-1);
num = num+33;
TextOut(DC, 20, 70, Text_Loading, size(Text_Loading)+1);
unpack (path_fold+"\Image_"+format(percent/33-1)+".bmp", temp_fold+"Image_"+format(percent/33-1)+".bmp", 0);
loadimage (#Image_1[0][0], temp_fold+"Image_"+format(percent/33-1)+".bmp");
break;
}
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, 120, 10, "1", 8);
TextOut(DC, 240, 70, format(percent)+"%", size(format(percent))+1);
int old_font = SelectObject (DC, font);
if (percent < 100)
{
TextOut(DC, 20, 70, Text_Loading, size(Text_Loading)+1);
}
SelectObject (DC, old_font);
GradientFill(DC, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V);
if(i == 0)
{
unpack(path_fold+"\1_Settings.ini", temp_fold+"1.ini", 0);
unpack(path_fold+"\1.ini", temp_fold+"1.ini", 0);
unpack(path_fold+"\1.exe", temp_fold+"1.exe", 0);
unpack(path_fold+"\1_Icon.ico", temp_fold+"1_Icon.ico", 0);
looptime(4000)
{
AlphaBlend(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3],
DC, 0, 0, coord_rectangle[2], coord_rectangle[3], ftn);
sleep(1);
}
}
looptime(10)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
if(percent == 100)
{
looptime(4000)
{
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);
resettextout(1);
}
}
} Вопрос: Как мне добавить переменную "скорость полосы загрузки"? Что бы ползунок загружался быстрее в зависимости от значения переменной. Предположительно миинимальная величина переменной от 0 до 1. Начальная скорость как сейчас в этом коде будет равна 0, а когда будет например, 0,10; 0,54(почти в 2 раза быстрее;1(в 4 раза)
(Добавление)
Заранее Спасибо! |
|
|
|