Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.08;
Скачать: CL | DM;

Вниз

TreeView на WinAPI   Найти похожие ветки 

 
DmitryS   (2004-06-28 09:08) [0]

Уважаемые знатоки WinAPI. Подскажите как нарисовать TreeView используя WinAPI ? Все что я нашел по этому вопросу для C++, на Delphi работать не хочет. Желательно небольшой пример.
Заранее благодарен.


 
GrayWolf   (2004-06-28 09:35) [1]

TreeView:=CreateWindow("SysTreeView32",...)
Работает 100%. Или уточни вопрос...


 
SammIk ©   (2004-06-28 09:37) [2]

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


 
SammIk ©   (2004-06-28 09:38) [3]

Удалено модератором
Примечание: Создание пустых сообщений


 
MBo ©   (2004-06-28 09:45) [4]

http://www.codeguru.com/Cpp/controls/treeview/


 
DmitryS   (2004-06-28 10:19) [5]

Прошу прощения за мою дремучесть.

Согласно инструкции, которые я нашел, 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 - опять же все для С++, а я в нем ни бум-бум.


 
Cobalt ©   (2004-06-28 11:31) [6]

Удалено модератором


 
DmitryS   (2004-06-28 11:44) [7]

С 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.

Вопрос ? Почему не видно дерево.


 
Враль   (2004-06-28 11:48) [8]

Перед созданием дерева нелишне вызвать InitCommonControls


 
DmitryS   (2004-06-28 12:07) [9]

Ура-а-а (прошу прощения за эмоции).

Всем огромное спасибо.

P.S. Cамое обидное, что примера на Дельфи + WinAPI с деревом я так и не нашел. Может у кого ссылка есть.


 
DmitryS   (2004-06-30 09:56) [10]

Такое впечатление, что никому деревья не нужны. Облазил весь инет, а примера на Дельфи + WinAPI с деревом так и не встретил. Может это запрещенная тема ? :(


 
Игорь Шевченко ©   (2004-06-30 10:16) [11]

DmitryS   (30.06.04 09:56)


> Может это запрещенная тема ?


А в исходники Comctrls.pas смотреть коран не велит ?


 
DmitryS   (2004-06-30 10:34) [12]

Удалено модератором
Примечание: Offtopic



Страницы: 1 вся ветка

Текущий архив: 2004.08.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.158 c
14-1090626329
anonim
2004-07-24 03:45
2004.08.08
Комерческий журнал хочет включить мою программу на CD


14-1090306595
zuk
2004-07-20 10:56
2004.08.08
Горячие клавиши в винде.


14-1090412512
syte_ser78
2004-07-21 16:21
2004.08.08
Господа, кто юзал Lite-On LTR-5232527L


1-1090933083
KIR
2004-07-27 16:58
2004.08.08
Народ, как заптхивать/доставать картинки из dll


1-1090685928
fess
2004-07-24 20:18
2004.08.08
Оператор for