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));
}
#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));
}