Zireael |
Отправлено: 22 Февраля, 2019 - 09:16:23
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Пример как создать меню (Отобразить)CODE:#define MNS_NOTIFYBYPOS 134217728
#define MIM_STYLE 16
#define MF_POPUP 16
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, "CreateWindow", "CreateWindowExA", "User32.dll" );
//Создание меню
int MENUINFO[7]={28, MIM_STYLE, MNS_NOTIFYBYPOS, 0, 0, 0, 0};
int HMENU, HMENU2, HMENU3;
HMENU2=CreatePopupMenu();
AppendMenu(HMENU2, MF_POPUP, 1, "Новый" );
AppendMenu(HMENU2, MF_POPUP, 2, "Открыть" );
AppendMenu(HMENU2, MF_POPUP, 3, "Сохранить" );
AppendMenu(HMENU2, MF_POPUP, 4, "Сохранить как" );
HMENU3=CreatePopupMenu();
AppendMenu(HMENU3, MF_POPUP, 5, "Вырезать" );
AppendMenu(HMENU3, MF_POPUP, 6, "Копировать" );
HMENU=CreateMenu();
AppendMenu(HMENU, MF_POPUP, HMENU2, "Файл" );
AppendMenu(HMENU, MF_POPUP, HMENU3, "Правка" );
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
loop()sleep(1);
function getmessage(0, WM_CREATE)
{
SetMenuInfo(HMENU, address(#MENUINFO[0]));
SetMenu(gethwnd(0), HMENU);
}
function getmessage(0, WM_MENUCOMMAND) //Отлавливаем клик по пункту меню
{
if (message.lparam==HMENU2)//идентификатор меню "Файл"
{
if (message.wparam==0)messagebox ("Новый");
if (message.wparam==1)messagebox ("Открыть");
if (message.wparam==2)messagebox ("Сохранить");
if (message.wparam==3)messagebox ("Сохранить как");
}
if (message.lparam==HMENU3)//идентификатор меню "Правка"
{
if (message.wparam==0)messagebox ("Вырезать");
if (message.wparam==1)messagebox ("Копировать");
}
}
Пример как вывести textout при наведении на кнопку (Отобразить)CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define WM_SETCURSOR 32
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetWindowRect", "GetWindowRect", "User32.dll" );
int button1;
int rect[4];
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 200, 1, 1);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
button1=CreateWindow(0, "BUTTON", "Кнопка", WS_CHILD | WS_VISIBLE, 20, 10, 100, 34, gethwnd(0), 0, 0, 0); // создать кнопку
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam==button1)messagebox("Кнопка была нажата");
}
function getmessage(0, WM_SETCURSOR)
{
if(message.wparam==button1)
{
if(GetWindowRect(button1, address(#rect[0])))
{
textbkcolor(255, 65280);
textout(0, rect[0]+rect[2]-rect[0]+10, rect[1], "Курсор над кнопкой", 1);
}
}
else textout(0, 1920, 0, "0", 1);
}
Цитата: Добавьте для TextEdit опцию "подсказка"
Оно и так есть https://docs.microsoft.com/ru-ru.../em-setcuebanner. Но, в примечаниях про какой-то манифест написано. Что это и как оно работает не понятно. |
|
|
Zireael |
Отправлено: 22 Февраля, 2019 - 10:34:21
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как поменять цвет текста?
CODE:textbkcolor(255, 65280);
В шпионе можно узнать цвет пикселя. |
|
|
007wan |
Отправлено: 22 Февраля, 2019 - 10:35:45
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: Как поменять цвет текста?
CODE:textbkcolor(255, 65280);
В шпионе можно узнать цвет пикселя.
Цвет текста для новых контролов. Вроде как-то псалось "SetText..."
(Добавление)(для просмотра ссылки Вам необходимо авторизоваться) (Добавление)
SetTextColor(Edit1,16777215); Так? |
|
|
Zireael |
Отправлено: 22 Февраля, 2019 - 23:02:25
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Добавьте для TextEdit опцию "подсказка" со значением string.
Костыль, но в общем работает.
Подсказка в 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);
enabletimer(0);
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; }
}
CREATE_TIMER(0, 100)
{
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])));
}
}
} |
|
|
|