Kibor |
Отправлено: 23 Февраля, 2019 - 01:01:41
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Zireael пишет: Костыль, но в общем работает.
Подсказка в edit
Без таймера (Отобразить)CODE:
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define RUSSIAN_CHARSET 204
#define OUT_DEFAULT_PRECIS 0
#define CLEARTYPE_QUALITY 5
#define FF_DONTCARE 0
#define CLIP_DEFAULT_PRECIS 0
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
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" );
external(INT, "GetFocus", "GetFocus", "User32.dll" );
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll" );
int edit1, edit2, hdc1, hdc2, font1;
char c1[99], c2[99], temp[99];
strcpy(#c1[0], "Логин");
strcpy(#c2[0], "Пароль");
createdialog(0);
showdialog(0, "Диалог", 100, 100, 300, 200, 1, 1);
loop()sleep(1);
function getmessage(0, WM_CREATE)
{
edit1=CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 10, 100, 21, gethwnd(0), 0, 0, 0);
edit2=CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 40, 100, 21, gethwnd(0), 0, 0, 0);
font1=CreateFont(18, 0, 0, 0, 300, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
hdc1=GetDC(edit1);
hdc2=GetDC(edit2);
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam == edit1){update(formatiw(edit1)); return; }
if(message.lparam == edit2){update(formatiw(edit2)); return; }
}
function getmessage(0, WM_CTLCOLOREDIT)
{
if(GetFocus() != edit1)
{
if(GetWindowText(edit1, address(#temp[0]), sizearray(temp))==0)
{
SelectObject (hdc1, font1);
SetBkMode(hdc1, 0);
SetTextColor(hdc1, rgb(200, 200, 200)); // цвет подсказки
TextOut(hdc1, 5, 1, address(#c1[0]), size(format(#c1[0])));
}
}
if(GetFocus() != edit2)
{
if(GetWindowText(edit2, address(#temp[0]), sizearray(temp))==0)
{
SelectObject (hdc2, font1);
SetBkMode(hdc2, 0);
SetTextColor(hdc2, rgb(200, 200, 200));
TextOut(hdc2, 5, 1, address(#c2[0]), size(format(#c2[0])));
}
}
}
Красный фон текста, синий текст (Отобразить)CODE:
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define RUSSIAN_CHARSET 204
#define OUT_DEFAULT_PRECIS 0
#define CLEARTYPE_QUALITY 5
#define FF_DONTCARE 0
#define CLIP_DEFAULT_PRECIS 0
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
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, "SetBkColor", "SetBkColor", "Gdi32.dll" );
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll" );
external(INT, "GetFocus", "GetFocus", "User32.dll" );
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll" );
external(INT, "InvalidateRect", "InvalidateRect", "User32.dll" );
int edit1, edit2, hdc1, hdc2, font1;
char c1[99], c2[99], temp[99];
strcpy(#c1[0], "Логин");
strcpy(#c2[0], "Пароль");
int t1=0, t2=0;
createdialog(0);
showdialog(0, "Диалог", 100, 100, 300, 200, 1, 1);
loop()sleep(1);
function getmessage(0, WM_CREATE)
{
edit1=CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 10, 100, 21, gethwnd(0), 0, 0, 0);
edit2=CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 40, 100, 21, gethwnd(0), 0, 0, 0);
font1=CreateFont(18, 0, 0, 0, 300, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
hdc1=GetDC(edit1);
hdc2=GetDC(edit2);
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam == edit1){update(formatiw(edit1)); return; }
if(message.lparam == edit2){update(formatiw(edit2)); return; }
}
function getmessage(0, WM_CTLCOLOREDIT)
{
if(GetFocus() != edit1)
{
if(GetWindowText(edit1, address(#temp[0]), sizearray(temp))==0)
{
SelectObject (hdc1, font1);
//Красный фон текста синий текст
SetBkColor(hdc1, rgb(255, 0, 0));
SetTextColor(hdc1, rgb(0, 255, 0)); // цвет подсказки
TextOut(hdc1, 5, 1, address(#c1[0]), size(format(#c1[0])));
t1=1;
}
}
else {if (t1==1){t1=0; InvalidateRect(edit1, 0, 1);}}
if(GetFocus() != edit2)
{
if(GetWindowText(edit2, address(#temp[0]), sizearray(temp))==0)
{
SelectObject (hdc2, font1);
//Красный фон текста синий текст
SetBkColor(hdc2, rgb(255, 0, 0));
SetTextColor(hdc2, rgb(0, 255, 0)); // цвет подсказки
TextOut(hdc2, 5, 1, address(#c2[0]), size(format(#c2[0])));
t2=1;
}
}
else {if (t2==1){t2=0; InvalidateRect(edit2, 0, 1);}}
}
|
|
|
007wan |
Отправлено: 26 Февраля, 2019 - 16:07:41
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
CODE:external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "EnableWindow", "EnableWindow", "User32.dll" );
external(INT, "SetWindowTextA", "SetWindowTextA", "User32.dll" );
external(INT, "CreateMenu", "CreateMenu", "User32.dll" );
external(INT, "CreatePopupMenu", "CreatePopupMenu", "User32.dll" );
external(INT, "AppendMenu", "AppendMenuA", "User32.dll" );
external(INT, "SetMenuInfo", "SetMenuInfo", "User32.dll" );
external(INT, "SetMenu", "SetMenu", "User32.dll" );
external(INT, "TrackPopupMenu", "TrackPopupMenu", "User32.dll" );
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" );
external(INT, "InvalidateRect", "InvalidateRect", "user32.dll");
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
int Display_Сolor, Display_Width, Display_Height;
int MenuInfo[7] = {28, 16, 134217728, 0, 0, 0, 0};
int Menu1, Menu2, Menu3;
Menu1 = CreateMenu();
AppendMenu(Menu1, 16, Menu3, "1" );
AppendMenu(Menu1, 16, Menu3, "2" );
AppendMenu(Menu1, 16, Menu3, "3" );
AppendMenu(Menu1, 16, Menu3, "4" );
int Radiobox1 = CreateWindow(0, "BUTTON", "1", 9+1342177280, 10, 10, 150, 20, formatwi(w), 0, 0, 0);
int Radiobox2 = CreateWindow(0, "BUTTON", "2", 9+1342177280, 10, 30, 200, 20, formatwi(w), 0, 0, 0);
int Radiobox3 = CreateWindow(0, "BUTTON", "3", 9+1342177280, 10, 50, 200, 20, formatwi(w), 0, 0, 0);
int Checkbox1 = CreateWindow(0, "BUTTON", "4", 3+1342177280, 10, 70, 250, 20, formatwi(w), 0, 0, 0);
int Checkbox2 = CreateWindow(0, "BUTTON", "5", 3+1342177280, 140, 90, 250, 20, formatwi(w), 0, 0, 0);
int Button1 = CreateWindow(0, "BUTTON", "6", 1342177280, 160, 10, 120, 20, formatwi(w), 0, 0, 0);
int Button2 = CreateWindow(0, "BUTTON", "7", 1342177280, 10, 90, 120, 20, formatwi(w), 0, 0, 0);
EnableWindow(Radiobox1, 0);
EnableWindow(Radiobox2, 0);
EnableWindow(Radiobox3, 0);
EnableWindow(Checkbox1, 0);
EnableWindow(Button1, 1);
EnableWindow(Button2, 0);
getdisplay(Display_Color, Display_Width, Display_Height);
createdialog(0);
showdialog(0, "Диалог", Display_Width/2-400, Display_Height/2-300, 750, 600, 1, 0);
win w = window ("Диалог");
//-----------------------------------------------------------------------
while(window ("Диалог")==0)
{
sleep(1);
}
//-----------------------------------------------------------------------
loop()
{
sleep(10);
}
//-----------------------------------------------------------------------
function getmessage(0, WM_CREATE)
{
int HWND = gethwnd(0);
SetMenuInfo(Menu1, address(#MenuInfo[0]));
SetMenu(HWND, Menu1);
}
//-----------------------------------------------------------------------
function getmessage(0, WM_COMMAND)
{
if (message.lparam == Button1)
{
win w1 = window (-1, "MozillaWindowClass", -1);
}
}
/////////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------
Да, что опять не так? Почему не работает, хотя 5 секундл назад работал и ошибок не вижу, опять что-то накрылось у вас там, я просто в ярости. |
|
|
Kibor |
Отправлено: 26 Февраля, 2019 - 16:11:37
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
007wan пишет: не работает
Очень плохо.
007wan пишет: 5 секундл назад работал
007wan пишет: опять что-то накрылось у вас там, я просто в ярости
Обновление было за эти 5 сек? Нет. Ищите проблему. |
|
|
007wan |
Отправлено: 26 Февраля, 2019 - 16:13:46
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Окно вообще не показывает
(Добавление)
Kibor пишет: 007wan пишет: не работает
Очень плохо.
007wan пишет: 5 секундл назад работал
007wan пишет: опять что-то накрылось у вас там, я просто в ярости
Обновление было за эти 5 сек? Нет. Ищите проблему.
Д а я кажется догадываюсь почему, но очень сложно будет найти проблему. Проблема в том, что некоторые строки именно связанные с этой темой, при переставлении каких-то элементов, они не объявляют друг друга и в результате не показывает кнопки или окно, а я помню, что от перестановки переменных сумма не меняется, и программа ваша их не видит так, как это ен ошибка |
|
|
007wan |
Отправлено: 26 Февраля, 2019 - 16:25:41
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Kibor пишет: 007wan пишет: Д а я кажется догадываюсь почему, но очень сложно будет найти проблему. Проблема в том, что некоторые строки именно связанные с этой темой, при переставлении каких-то элементов, они не объявляют друг друга и в результате не показывает кнопки или окно, а я помню, что от перестановки переменных сумма не меняется, и программа ваша их не видит так, как это ен ошибка
Ага..
Покажите где в строках с этого сайта в
int Display_ Сolor
C русское? И почему?
Это была помощь в обнаружение проблемы.....
Поменял с русской на англ, но разницы я не увидел и ошибки не выдало... и опять таки не работает...
(Добавление)
А не, всё, забыл в int ...C поменять
(Добавление)
Спасибо, но как вы поняли? |
|
|
Kibor |
Отправлено: 26 Февраля, 2019 - 16:30:44
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
007wan пишет: Поменял с русской на англ, но разницы я не увидел и ошибки не выдало... и опять таки не работает...
Работает, работает.
Обсуждение как правильно заменить один символ на другой перенесите в новую-другую тему. Тут ошибки в коде не обсуждаются.
(Добавление)
И еще помощь в упреждение вопроса: "почему не создаются кнопки?"
Все CreateWindow создают что либо на уже созданном диалоге.
У вас они что то где то хотят создать до того, как создан сам диалог и получен указатель на него.
Перенесите
CODE:int Radiobox1 = CreateWindow(0, "BUTTON", "1", 9+1342177280, 10, 10, 150, 20, formatwi(w), 0, 0, 0);
int Radiobox2 = CreateWindow(0, "BUTTON", "2", 9+1342177280, 10, 30, 200, 20, formatwi(w), 0, 0, 0);
int Radiobox3 = CreateWindow(0, "BUTTON", "3", 9+1342177280, 10, 50, 200, 20, formatwi(w), 0, 0, 0);
int Checkbox1 = CreateWindow(0, "BUTTON", "4", 3+1342177280, 10, 70, 250, 20, formatwi(w), 0, 0, 0);
int Checkbox2 = CreateWindow(0, "BUTTON", "5", 3+1342177280, 140, 90, 250, 20, formatwi(w), 0, 0, 0);
int Button1 = CreateWindow(0, "BUTTON", "6", 1342177280, 160, 10, 120, 20, formatwi(w), 0, 0, 0);
int Button2 = CreateWindow(0, "BUTTON", "7", 1342177280, 10, 90, 120, 20, formatwi(w), 0, 0, 0);
под
CODE:while(window ("Диалог")==0)
{
sleep(1);
} |
|
|
Zireael |
Отправлено: 28 Февраля, 2019 - 00:57:53
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как сделать, когда ставишь галочку, то показывает она стоит или нет
code (Отобразить)CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define BS_AUTOCHECKBOX 3
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int b1, flag_check=0;
createdialog(0);
showdialog(0, "Диалог", 100, 100, 300, 300, 1, 1);
enabletimer(0);
loop()sleep(1);
function getmessage(0, WM_CREATE)
{
b1=CreateWindow(0, "BUTTON", "Галка", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 10, 60, 20, gethwnd(0) , 0, 0, 0);
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam == b1)
{
if(flag_check)flag_check=0;
else flag_check=1;
}
}
CREATE_TIMER(0, 200)
{
textbkcolor(255, 65280);
if(flag_check)textout(0, 200, 150, "+++++", 1);
else textout(0, 200, 150, "-----", 1);
} |
|
|
|