Zireael |
Отправлено: 28 Сентября, 2019 - 03:59:16
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
TreeView (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define WS_CHILD 1073741824
#define GWL_HINSTANCE -6
#define TVM_INSERTITEMA 4352
#define TVM_SETITEMA 4365
#define TVI_LAST 65534
#define TVI_ROOT 65536
#define TVIF_TEXT 1
#define TVIF_CHILDREN 64
#define TVS_HASBUTTONS 1
#define TVS_HASLINES 2
#define TVS_LINESATROOT 4
#define TVS_TRACKSELECT 512
#define TVM_SETBKCOLOR 4381
#define TVM_SETTEXTCOLOR 4382
#define TVM_SETLINECOLOR 4392
#define ICC_TREEVIEW_CLASSES 2
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll");
external(INT, "InitCommonControlsEx", "InitCommonControlsEx", "Comctl32.dll");
int INITCOMMONCONTROLSEX[2]={8, ICC_TREEVIEW_CLASSES}
InitCommonControlsEx(address(#INITCOMMONCONTROLSEX[0]));
int hinstance, TreeView;
int MyComp=0, diskC=0, diskD=0, diskE=0;
createdialog(0);
showdialog(0, "Dialog", 300, 300, 400, 500, 1, 1);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
hinstance=GetWindowLong(gethwnd(0), GWL_HINSTANCE);
TreeView=CreateWindow(0, "SysTreeView32", "", TVS_LINESATROOT | TVS_HASBUTTONS | TVS_TRACKSELECT | TVS_HASLINES |
WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 10, 180, 200, gethwnd(0), 0, hinstance, 0);
// функция INSERTITEM добавляет элемент в дерево. Передаётся:
// хендл дерева
// хендл родительского элемента или 0, тогда элемент добаляется в корень
// позиция вставки
// указатель на переменную, в которую запишется хендл добавленного элемента
// элемент имеет дочерние окна 1 или 0
// текст элемента
INSERTITEM(TreeView, 0, TVI_ROOT, #MyComp, 1, "Мой компьютер");
INSERTITEM(TreeView, MyComp, TVI_LAST, #diskC, 1, "Локальный диск (С:)");
INSERTITEM(TreeView, MyComp, TVI_LAST, #diskD, 1, "Новый том (D:)");
INSERTITEM(TreeView, MyComp, TVI_LAST, #diskE, 1, "CD-дисковод (E:)");
int item;
INSERTITEM(TreeView, diskC, TVI_LAST, #item, 0, "Windows");
INSERTITEM(TreeView, diskC, TVI_LAST, #item, 0, "System32");
INSERTITEM(TreeView, diskD, TVI_LAST, #item, 0, "Games");
INSERTITEM(TreeView, diskD, TVI_LAST, #item, 0, "Music");
INSERTITEM(TreeView, diskE, TVI_LAST, #item, 0, "Папка");
sendmessage(TVM_SETBKCOLOR, 0, 10354313, formatiw(TreeView)); // цвет фона
sendmessage(TVM_SETTEXTCOLOR, 0, 255, formatiw(TreeView)); // цвет текста
sendmessage(TVM_SETLINECOLOR, 0, 16000000, formatiw(TreeView)); // цвет линий
}
function INSERTITEM(int handle_tree, int hParent, int hInsertAfter, int #hItem, int cChildren, string s)
{
char text[99];
int TVITEMEXA[15], TVINSERTSTRUCTA[3];
initialarray(#TVITEMEXA[0], 0);
TVITEMEXA[0]=TVIF_TEXT | TVIF_CHILDREN;
TVITEMEXA[4]=address(#text[0]);
TVITEMEXA[8]=cChildren;
TVINSERTSTRUCTA[0]=hParent;
TVINSERTSTRUCTA[1]=hInsertAfter;
TVINSERTSTRUCTA[2]=address(#TVITEMEXA[0]);
hItem=sendmessage(TVM_INSERTITEMA, 0, address(#TVINSERTSTRUCTA[0]), formatiw(handle_tree));
strcpy(#text[0], s);
TVITEMEXA[1]=hItem;
TVITEMEXA[5]=size(s);
sendmessage(TVM_SETITEMA, 0, address(#TVITEMEXA[0]), formatiw(handle_tree));
} |
|
|
007wan |
Отправлено: 28 Сентября, 2019 - 08:25:58
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: TreeView (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define WS_CHILD 1073741824
#define GWL_HINSTANCE -6
#define TVM_INSERTITEMA 4352
#define TVM_SETITEMA 4365
#define TVI_LAST 65534
#define TVI_ROOT 65536
#define TVIF_TEXT 1
#define TVIF_CHILDREN 64
#define TVS_HASBUTTONS 1
#define TVS_HASLINES 2
#define TVS_LINESATROOT 4
#define TVS_TRACKSELECT 512
#define TVM_SETBKCOLOR 4381
#define TVM_SETTEXTCOLOR 4382
#define TVM_SETLINECOLOR 4392
#define ICC_TREEVIEW_CLASSES 2
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll");
external(INT, "InitCommonControlsEx", "InitCommonControlsEx", "Comctl32.dll");
int INITCOMMONCONTROLSEX[2]={8, ICC_TREEVIEW_CLASSES}
InitCommonControlsEx(address(#INITCOMMONCONTROLSEX[0]));
int hinstance, TreeView;
int MyComp=0, diskC=0, diskD=0, diskE=0;
createdialog(0);
showdialog(0, "Dialog", 300, 300, 400, 500, 1, 1);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
hinstance=GetWindowLong(gethwnd(0), GWL_HINSTANCE);
TreeView=CreateWindow(0, "SysTreeView32", "", TVS_LINESATROOT | TVS_HASBUTTONS | TVS_TRACKSELECT | TVS_HASLINES |
WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 10, 180, 200, gethwnd(0), 0, hinstance, 0);
// функция INSERTITEM добавляет элемент в дерево. Передаётся:
// хендл дерева
// хендл родительского элемента или 0, тогда элемент добаляется в корень
// позиция вставки
// указатель на переменную, в которую запишется хендл добавленного элемента
// элемент имеет дочерние окна 1 или 0
// текст элемента
INSERTITEM(TreeView, 0, TVI_ROOT, #MyComp, 1, "Мой компьютер");
INSERTITEM(TreeView, MyComp, TVI_LAST, #diskC, 1, "Локальный диск (С:)");
INSERTITEM(TreeView, MyComp, TVI_LAST, #diskD, 1, "Новый том (D:)");
INSERTITEM(TreeView, MyComp, TVI_LAST, #diskE, 1, "CD-дисковод (E:)");
int item;
INSERTITEM(TreeView, diskC, TVI_LAST, #item, 0, "Windows");
INSERTITEM(TreeView, diskC, TVI_LAST, #item, 0, "System32");
INSERTITEM(TreeView, diskD, TVI_LAST, #item, 0, "Games");
INSERTITEM(TreeView, diskD, TVI_LAST, #item, 0, "Music");
INSERTITEM(TreeView, diskE, TVI_LAST, #item, 0, "Папка");
sendmessage(TVM_SETBKCOLOR, 0, 10354313, formatiw(TreeView)); // цвет фона
sendmessage(TVM_SETTEXTCOLOR, 0, 255, formatiw(TreeView)); // цвет текста
sendmessage(TVM_SETLINECOLOR, 0, 16000000, formatiw(TreeView)); // цвет линий
}
function INSERTITEM(int handle_tree, int hParent, int hInsertAfter, int #hItem, int cChildren, string s)
{
char text[99];
int TVITEMEXA[15], TVINSERTSTRUCTA[3];
initialarray(#TVITEMEXA[0], 0);
TVITEMEXA[0]=TVIF_TEXT | TVIF_CHILDREN;
TVITEMEXA[4]=address(#text[0]);
TVITEMEXA[8]=cChildren;
TVINSERTSTRUCTA[0]=hParent;
TVINSERTSTRUCTA[1]=hInsertAfter;
TVINSERTSTRUCTA[2]=address(#TVITEMEXA[0]);
hItem=sendmessage(TVM_INSERTITEMA, 0, address(#TVINSERTSTRUCTA[0]), formatiw(handle_tree));
strcpy(#text[0], s);
TVITEMEXA[1]=hItem;
TVITEMEXA[5]=size(s);
sendmessage(TVM_SETITEMA, 0, address(#TVITEMEXA[0]), formatiw(handle_tree));
} Вау, спасибо, спасибо, спасибо!!!))
(Добавление)
Вау, сколько констант новых для изучения, даже не знаю что хочу)) Но константы интересны всё-таки)
(Добавление)
Это контрол самый классный в плане "не кривости", потому что прогрессбар был кривой в плане линии, расположенной в прямоугольнике, листвив тоже. |
|
|
ivantu |
Отправлено: 28 Сентября, 2019 - 12:00:41
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Zireael пишет: LoadImage и будут свои картинки.
Я пытался в listview, но не получилось...(Отредактировано автором: 28 Сентября, 2019 - 12:01:44) |
|
|
Zireael |
Отправлено: 28 Сентября, 2019 - 12:02:29
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: LoadImage и будут свои картинки.
Я пытался, но не получилось...
CODE:#define LR_LOADFROMFILE 16
#define IMAGE_ICON 1
ImageList_ReplaceIcon(ImageList, -1, LoadImage(0, "C:\111.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE)); |
|
|
|