![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TreeView на WinAPI
DmitryS © (2004-06-28 09:08:00)Уважаемые знатоки WinAPI. Подскажите как нарисовать TreeView используя WinAPI ? Все что я нашел по этому вопросу для C++, на Delphi работать не хочет. Желательно небольшой пример.
Заранее благодарен.
DmitryS (2004-06-30 10:34:00) [1]Удалено модератором
Примечание: Offtopic
Игорь Шевченко (2004-06-30 10:16:00) [2]DmitryS (30.06.04 09:56)
> Может это запрещенная тема ?
А в исходники Comctrls.pas смотреть коран не велит ?
DmitryS (2004-06-30 09:56:00) [3]Такое впечатление, что никому деревья не нужны. Облазил весь инет, а примера на Дельфи + WinAPI с деревом так и не встретил. Может это запрещенная тема ? :(
DmitryS (2004-06-28 12:07:00) [4]Ура-а-а (прошу прощения за эмоции).
Всем огромное спасибо.
P.S. Cамое обидное, что примера на Дельфи + WinAPI с деревом я так и не нашел. Может у кого ссылка есть.
Враль (2004-06-28 11:48:00) [5]Перед созданием дерева нелишне вызвать InitCommonControls
DmitryS (2004-06-28 11:44:00) [6]С CreatcWindow вроде разобрался сам, оказалось надо прописать в Uses файл Commctrl. Теперь ошибки нету. Но дерево все равно не видно. Вот программа следующее (просьба не смеяться, я начинающий):
program Poba;
uses Windows, Messages, Commctrl;
const
WinName = 'MainWClass';
var
MainF: HWND;
MainMenu: HMENU;
m_treeView: HWND;
AMessage: msg;
function MainWndProc(Window: HWnd; AMessage, WParam,
LParam: Longint): Longint; stdcall; export;
begin
case AMessage of
WM_DESTROY: begin
PostQuitMessage(0);
Exit;
end;
else
Result := DefWindowProc(Window, AMessage, WParam, LParam);
end;
end;
function InitApplication: Boolean;
var
wcx: TWndClass;
begin
wcx.style := CS_HREDRAW or CS_VREDRAW;
wcx.lpfnWndProc := @MainWndProc;
wcx.cbClsExtra := 0;
wcx.cbWndExtra := 0;
wcx.hInstance := hInstance;
wcx.hIcon := LoadIcon(0, IDI_APPLICATION);
wcx.hCursor := LoadCursor(0, IDC_ARROW);
wcx.hbrBackground := COLOR_WINDOW;
wcx.lpszMenuName := nil;
wcx.lpszClassName := PChar(WinName);
Result := RegisterClass(wcx) <> 0;
end;
function InitInstance: HWND;
begin
Result := CreateWindow(
PChar(WinName),
'Small program',
WS_OVERLAPPEDWINDOW,
Integer(CW_USEDEFAULT),
Integer(CW_USEDEFAULT),
Integer(CW_USEDEFAULT),
Integer(CW_USEDEFAULT),
0,
0,
hInstance,
nil);
end;
begin
if (not InitApplication) then begin
MessageBox(0, 'Error1', nil, mb_Ok);
Exit;
end;
MainF := InitInstance;
if (MainF = 0) then begin
MessageBox(0, 'Error2', nil, mb_Ok);
Exit;
end else begin
ShowWindow(MainF, CmdShow);
MainMenu:=CreateMenu();
AppendMenu(MainMenu, mf_String, 1, PChar('menu-1'));
AppendMenu(MainMenu, mf_String, 2, PChar('menu-2'));
AppendMenu(MainMenu, mf_String, 3, PChar('menu-3'));
AppendMenu(MainMenu, mf_String, 4, PChar('menu-4'));
SetMenu(MainF, MainMenu);
m_treeView:=CreateWindow(WC_TREEVIEW,'',
WS_VISIBLE or WS_TABSTOP or WS_CHILD or TVS_HASLINES or TVS_HASBUTTONS or
TVS_LINESATROOT, 10, 10, 100, 100, MainF, 0, hInstance, 0);
UpdateWindow(MainF);
end;
while (GetMessage(AMessage, 0, 0, 0)) do begin
TranslateMessage(AMessage);
DispatchMessage(AMessage);
end;
Halt(AMessage.wParam);
end.
Вопрос ? Почему не видно дерево.
Cobalt (2004-06-28 11:31:00) [7]Удалено модератором
DmitryS (2004-06-28 10:19:00) [8]Прошу прощения за мою дремучесть.
Согласно инструкции, которые я нашел, Tree View создается функцией CreateWindowEx на базе класса окна WC_TREEVIEW :
hwndTree = CreateWindowEx(OL, WC_TREEVIEW, "",
WS_VISIBLE | WS_CHILD | WS_BORDER |
TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT,
0, 0, rc.right - rc.left, rc.bottom - rc.top,
hWnd, (HMENU) IDC_TREEVIEW, hInst, NULL);
либо
hTreeView = CreatcWindow(WC_TREEVIEW,"",
WSJVISIBLE | WS JTABSTOP | WS_CHILD | TVSJIASLINES | TVSJiASBUTTONS | TVS_LINESATROOT, 0, 0. Rcct.right, Rcct.bottom, hWnd, NULL, hlnst, NULL);
Но у меня ругается на WC_TREEVIEW. Я понимаю, что ей чего-то не хватает, может каку библиотеку использовать надо. Но какую я не знаю.
Всем сочувствующим - огромное спасибо.
2MBo - опять же все для С++, а я в нем ни бум-бум.
MBo (2004-06-28 09:45:00) [9]http://www.codeguru.com/Cpp/controls/treeview/
SammIk (2004-06-28 09:38:00) [10]Удалено модератором
Примечание: Создание пустых сообщений
SammIk (2004-06-28 09:37:00) [11]
CreateWindowEx( WS_EX_CLIENTEDGE,'SysListView32', NiL,WS_CHILD or WS_VISIBLE or LVS_REPORT or LVS_SHAREIMAGELISTS,0, 0, 0, 0, hWnd, NiL, hInst, NiL
GrayWolf (2004-06-28 09:35:00) [12]TreeView:=CreateWindow('SysTreeView32',...)
Работает 100%. Или уточни вопрос...