Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » вопрос по external и др

Страниц (17): В начало « ... 2 3 4 5 [6] 7 8 9 10 ... » В конец
 

51. 007wan - 24 Сентября, 2019 - 03:24:28 - перейти к сообщению
 Zireael пишет:
 Цитата:
Как вывести такую кнопку на диалог,рядом с закрыть?

CODE:
#define WS_EX_CONTEXTHELP 1024
#define WS_MINIMIZEBOX 131072
#define GWL_EXSTYLE -20
#define GWL_STYLE -16

external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll" );
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll" );

createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 0);

loop()sleep(100);

function getmessage (0, WM_CREATE)
{
SetWindowLong(gethwnd(0), GWL_STYLE, GetWindowLong(gethwnd(0), GWL_STYLE) + WS_MINIMIZEBOX);
SetWindowLong(gethwnd(0), GWL_EXSTYLE, GetWindowLong(gethwnd(0), GWL_EXSTYLE) - WS_EX_CONTEXTHELP);
}
Каряво выглядит, Текст диалога в правой стороне.
---
Может так нужно было?
Код (Отобразить)
Изменил минус, на плюс))
Кстати, как убрать этот курсор, если его не убрать, то ладно, а можно обработать это сообщение? Может WM_HELP?
(Добавление)
Вот более нормальный вариант. Предыдущие 2 как-то с изъянами:
-можно было изменять размер диалога при растягивании за угол
-Название диалога было в правой стороне.
---
Заменить на:
CODE:
SetWindowLong(gethwnd(1), GWL_STYLE, WS_SYSMENU + WS_CAPTION);//не давать растягивать диалог за края и дать ТОЛЬКО кнопку закрыть.
SetWindowLong(gethwnd(1), GWL_EXSTYLE, GetWindowLong(gethwnd(1), GWL_EXSTYLE) + WS_EX_CONTEXTHELP);//Дём кнопку помощи.

(Добавление)
 007wan пишет:
SetWindowLong(gethwnd(0), GWL_STYLE, GetWindowLong(gethwnd(0), GWL_STYLE) + WS_MINIMIZEBOX);

 Цитата:
Стиль WS_EX_CONTEXTHELP не может использоваться со стилями WS_MAXIMIZEBOX или WS_MINIMIZEBOX.

(Добавление)
Помогите запонить структуру в WM_HELP, что бы получать сообщение при нажатии на кнопку эту
(Добавление)
Не работает
CODE:
function getmessage(1, WM_HELP)
{
messagebox(1);
}
52. Zireael - 24 Сентября, 2019 - 04:13:36 - перейти к сообщению
 Цитата:
запонить структуру в WM_HELP, что бы получать сообщение при нажатии на кнопку эту

Её не заполнить надо, а прочитать.
WM_HELP (Отобразить)
53. 007wan - 24 Сентября, 2019 - 04:18:24 - перейти к сообщению
Zireael , Блин. А в Word при нажатии в каком-то диалоге, сразу открывает помощника, и не нужно никуда потом нажимать(на другой контрол итд)
54. Zireael - 24 Сентября, 2019 - 04:35:54 - перейти к сообщению
CODE:
#define WS_EX_CONTEXTHELP 1024
#define WS_CAPTION 12582912
#define WS_SYSMENU 524288
#define GWL_EXSTYLE -20
#define GWL_STYLE -16
#define SC_CONTEXTHELP 61824
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll" );
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll" );

createdialog(0);
showdialog(0, "Диалог",150, 200, 400, 300, 1, 0);

loop()sleep(100);

function getmessage (0, WM_CREATE)
{
SetWindowLong(gethwnd(0), GWL_STYLE, WS_SYSMENU + WS_CAPTION);
SetWindowLong(gethwnd(0), GWL_EXSTYLE, GetWindowLong(gethwnd(0), GWL_EXSTYLE) + WS_EX_CONTEXTHELP);
}

function getmessage(0, WM_SYSCOMMAND)
{
if(message.wparam==SC_CONTEXTHELP)messagebox("+++"); // если нажат знак вопроса в заголовке
}
55. 007wan - 24 Сентября, 2019 - 04:47:45 - перейти к сообщению
Zireael , То самое)) спасибки)
(Добавление)
А как сделать ThreeView? не нашел нужных констант.
56. Zireael - 24 Сентября, 2019 - 06:27:34 - перейти к сообщению
 Цитата:
не нашел нужных констант.

Какие надо?
57. 007wan - 24 Сентября, 2019 - 06:32:13 - перейти к сообщению
 Zireael пишет:
Какие надо?
Да Всё норм, только структуру не могу заполнить.
CODE:
#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define WS_CHILD 1073741824
#define GWL_HINSTANCE -6
#define TVM_INSERTITEMA 4352

external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll");
external(INT, "SendMessage", "SendMessageA", "User32.dll");

int histance, Three;

createdialog(0);
showdialog(0, "Dialog", 300, 300, 400, 500, 1, 1);

loop()
{
sleep(10);
}

function getmessage(0, WM_CREATE)
{
histance=GetWindowLong(gethwnd(0), GWL_HINSTANCE);

Three=CreateWindow(0, "SysTreeView32", "", WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 10, 310, 100, gethwnd(0), 0, histance, 0, 0);

SendMessage(Three, TVM_INSERTITEMA, 0, "TVINSERTSTRUCTA");//структура
}

(Добавление)
Странно, что WM_SYSCOMMAND message.wparam == SC_CLOSE преобладает над WM_CLOSE
(Добавление)
Что я делаю не так?
Code (Отобразить)
Если сделать так:
Код (Отобразить)
*про директиву не забыл
58. ivantu - 25 Сентября, 2019 - 00:47:54 - перейти к сообщению
Zireael,
Подскажите пожалуйста как в ListView:
- Можно дать текст и фон не всем строчкам, а только одной и в любом порядке?
- Как добавить картинку в любой столбец?
59. Zireael - 25 Сентября, 2019 - 02:54:13 - перейти к сообщению
 Цитата:
- Можно дать текст и фон не всем строчкам, а только одной и в любом порядке?
- Как добавить картинку в любой столбец?

1. Не знаю.
2. ImageList. Не смотрел что там надо, пока некогда.
60. ivantu - 25 Сентября, 2019 - 03:34:55 - перейти к сообщению
как время будет, гляньте пожалуйста
 Zireael пишет:

1 :
CODE:
итемы ListView раскрашивать можно еще через WM_DRAWITEM с флагом LVS_OWNERDRAWFIXED,
там принципы те же, смотреть нужно описание флагов структуры DRAWITEMSTRUST

2 :
Тут много чего но не понятно для меня(для просмотра ссылки Вам необходимо авторизоваться)

Powered by ExBB FM 1.0 Final