007wan |
Отправлено: 12 Сентября, 2019 - 15:08:59
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: #definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";
Ну да, у всех ведь есть этот файл.
Скачать Constants.txt [Яндекс Диск](Отредактировано автором: 12 Сентября, 2019 - 15:18:33) |
|
|
007wan |
Отправлено: 12 Сентября, 2019 - 15:26:48
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: while(window("Основной" ) == 0)
{
sleep(10);
}
else
{
//Window_Adjust();
//Window_Topmost();
}
else может быть в if, но не в while. Ок. Чисто теоретически - убрал. Проблема исчезла? Ползунок не мигает?
(Добавление)
Ошибка: Мигание ползунка.
1)миганиеКод (Отобразить)CODE://C
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "CreateMenu", "CreateMenu", "User32.dll");
//A
external(INT, "AppendMenu", "AppendMenuA", "User32.dll");
//S
external(INT, "SetMenuInfo", "SetMenuInfo", "User32.dll");
external(INT, "SetMenu", "SetMenu", "User32.dll" );
//-----------------------------------------------------------------------------------------------------------------------------------------------------
#definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";
int Image_x[99], Image_y[99];
int Display_Color, Display_Width, Display_Height;
int MENUINFO[7] = {28, MIM_STYLE, 0, 0, 0, 0, 0};
int HMENU, HMENU1, HMENU2, HMENU3, HMENU4, SelectMenu;
win MainWindow, SecondaryWindow;
int Object_Scrollbar1;
int Srollbar1_Min = 0, Srollbar1_Max = 100, Srollbar1_Pos = 0, Up_Controls, Down_Controls;
//-----------------------------------------------------------------------------------------------------------------------------------------------------
getdisplay(Display_Color, Display_Width, Display_Height);
createdialog(0);
createdialog(1);
showdialog(0, "Основной", Display_Width/2-450, Display_Height/2-400, 700, 400, 4, 1);
setwindowparam(MainWindow);
//-----------------------------------------------------------------------------------------------------------------------------------------------------
while(window("Основной") == 0)
{
sleep(10);
}
else
{
//Window_Adjust();
//Window_Topmost();
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
loop()
{
sleep(10);
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
function getmessage(0, WM_CREATE)
{
MainWindow = formatiw(gethwnd(0));
HMENU = CreateMenu();
AppendMenu(HMENU, MF_POPUP, 1, "Настройки" );
AppendMenu(HMENU, MF_POPUP, 211, "Обновить" );
AppendMenu(HMENU, MF_POPUP, 111, "О программе" );
SetMenuInfo(HMENU, address(#MENUINFO[0]));
SetMenu(gethwnd(0), HMENU);
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
function getmessage(0, WM_COMMAND)
{
if(loword(message.wparam) == 1)
{
MainWindow = window("Основной");
showdialog(1, "Настройки", MainWindow.left+100, MainWindow.top+100, 525, 500, 4, 1);
setwindowparam(SecondaryWindow);
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
function getmessage(1, WM_CREATE)
{
Object_Scrollbar1 = CreateWindow(0, "SCROLLBAR", 0, WS_VISIBLE | WS_CHILD | SBS_VERT, 10, 10, 20, 200, gethwnd(1), 0, 0, 0);
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
2)НетуКод (Отобразить)CODE:
//C
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "CreateMenu", "CreateMenu", "User32.dll");
//A
external(INT, "AppendMenu", "AppendMenuA", "User32.dll");
//S
external(INT, "SetMenuInfo", "SetMenuInfo", "User32.dll");
external(INT, "SetMenu", "SetMenu", "User32.dll" );
//-----------------------------------------------------------------------------------------------------------------------------------------------------
#definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";
int Image_x[99], Image_y[99];
int Display_Color, Display_Width, Display_Height;
int MENUINFO[7] = {28, MIM_STYLE, 0, 0, 0, 0, 0};
int HMENU, HMENU1, HMENU2, HMENU3, HMENU4, SelectMenu;
win MainWindow, SecondaryWindow;
int Object_Scrollbar1;
int Srollbar1_Min = 0, Srollbar1_Max = 100, Srollbar1_Pos = 0, Up_Controls, Down_Controls;
//-----------------------------------------------------------------------------------------------------------------------------------------------------
getdisplay(Display_Color, Display_Width, Display_Height);
createdialog(0);
showdialog(0, "Основной", Display_Width/2-450, Display_Height/2-400, 700, 400, 4, 1);
setwindowparam(MainWindow);
//-----------------------------------------------------------------------------------------------------------------------------------------------------
while(window("Основной") == 0)
{
sleep(10);
}
else
{
//Window_Adjust();
//Window_Topmost();
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
loop()
{
sleep(10);
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
function getmessage(0, WM_CREATE)
{
MainWindow = formatiw(gethwnd(0));
/*
HMENU = CreateMenu();
AppendMenu(HMENU, MF_POPUP, 1, "Настройки" );
AppendMenu(HMENU, MF_POPUP, 211, "Обновить" );
AppendMenu(HMENU, MF_POPUP, 111, "О программе" );
SetMenuInfo(HMENU, address(#MENUINFO[0]));
SetMenu(gethwnd(0), HMENU);
*/
Object_Scrollbar1 = CreateWindow(0, "SCROLLBAR", 0, WS_VISIBLE | WS_CHILD | SBS_VERT, 10, 10, 20, 200, gethwnd(0), 0, 0, 0);
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
function getmessage(0, WM_COMMAND)
{
if(loword(message.wparam) == 1)
{
MainWindow = window("Основной");
showdialog(0, "Настройки", MainWindow.left+100, MainWindow.top+100, 525, 500, 4, 1);
setwindowparam(SecondaryWindow);
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------------------------------
Мигание из-за того, что добавлено меню панельное. Как исправить хрен знает, а без него, как без руки)
(Добавление)
Точнее когда выводу в другой диалог
(Добавление)
А хотя не, не то... короче что-то с менюшками, созданием диалогов как-то так. |
|
|
Zireael |
Отправлено: 13 Сентября, 2019 - 01:28:36
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: else может быть в if, но не в while.
Ок. Чисто теоретически - убрал. Проблема исчезла? Ползунок не мигает?
Я не говорил что это решит вопрос с миганием, просто указал на синтаксическую ошибку.
По поводу мигания, надо фокус убрать с ползунка.
Цитата: external(INT, "SetFocus", "SetFocus", "User32.dll" ); // в начало
showdialog(1, "Настройки", MainWindow.left+100, MainWindow.top+100, 525, 500, 4, 1);
SetFocus(0); |
|
|
007wan |
Отправлено: 13 Сентября, 2019 - 13:06:57
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
И что мне каждый раз снимать фокус при запуске? раньше не приходилось...
(Добавление)
Nikanr , Zireael , Помогло - Помогло, но лучше не ставить креатедиалог перед шоу, потому что по откртии меню он всегда будет создавать диалог, и запускать - не к чему.
(Добавление)
Почему тогда на этом примере не надо сбрасывать фокус?Код (Отобразить)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 |
Отправлено: 13 Сентября, 2019 - 14:59:42
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Тогда еще один есть. В этом же примере, если добавить к ползунку стиль SBS_VERT(вертикальный ползунок), то если наждимать вверх, то ползунок дойдет до верха и перепрыгнет резко вниз. Только что нашел
(Добавление)
Во функция, который я использовалCODE:[code]function getmessage(1, WM_VSCROLL)
{
if (message.lparam == Object_Scrollbar1)
{
if (Scrollbar1_Pos > 100 || Scrollbar1_Pos < 0)
{
Scrollbar1_Pos = 100;
}
if (Scrollbar1_Pos < 0)
{
Scrollbar1_Pos = 0;
}
//===========
if (message.wparam == 1 || message.wparam == SB_LINEDOWN)
{
Scrollbar1_Pos = Scrollbar1_Pos + 1;
SetScrollPos(Object_Scrollbar1, 2, Scrollbar1_Pos, 1);
}
//===========
if (message.wparam == 0 || message.wparam == SB_LINEUP)
{
Scrollbar1_Pos = Scrollbar1_Pos - 1;
SetScrollPos(Object_Scrollbar1, 2, Scrollbar1_Pos, 1);
}
//===========
if (loword(message.wparam) == SB_THUMBTRACK)
{
}
}
} [/code]
(Добавление)
Надеюсь, после армии всё исправят и даже новое добавят)) |
|
|
|