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

Вниз

как можно использовать функцию DlgDirList без применения визуальн   Найти похожие ветки 

 
sergey1 ©   (2005-11-19 02:22) [0]

я извиняюсь как можно использовать функцию DlgDirList без применения визуальных компонентов


 
Джо ©   (2005-11-19 02:23) [1]

А что это за функция такая?


 
sergey1 ©   (2005-11-19 02:28) [2]

я так понял что она записывает все файлы и каталоги текущего диска в ListBox (тоже созданный при помощи WINDOWS API)


 
Джо ©   (2005-11-19 02:28) [3]


> [1] Джо ©   (19.11.05 02:23)
> А что это за функция такая?

Упс, нашел :)


 
Джо ©   (2005-11-19 02:29) [4]

Так проблема в том, как создать диалоговое окно с окном LISTBOX? Или в чем-то другом?


 
sergey1 ©   (2005-11-19 02:35) [5]

нет, ListBox я создал на основной форме теперь не могу сооброзить как заставить функцию DlgDirList работать


 
Джо ©   (2005-11-19 02:38) [6]


>  [5] sergey1 ©   (19.11.05 02:35)
> нет, ListBox я создал на основной форме

Тут, наверное, какое-то недоразумение. В сабже указано "без применения визуальных компонентов", конференция WinAPI, опять же. Так причем здесь какие-то формы?
Я честно не понимаю.


 
Джо ©   (2005-11-19 02:46) [7]

Предположу, что все-таки, визуальнык компоненты все-же используеются, а вопрос только в том, как использовать функцию.
Если это так, то вот пример заполнения ЛистБокса именами директорий в текущей директории:

procedure TForm1.Button1Click(Sender: TObject);
begin
 DlgDirList (Handle,nil,GetDlgCtrlID (ListBox1.Handle),0,
   DDL_DIRECTORY);
end;

Или это не то?


 
sergey1 ©   (2005-11-19 03:01) [8]

приведу пример для лучшего понимания

program programma;

uses
 windows,messages;

const idlistbox=10;
      main=9;
      idb_1=1;
var   wc : TWndClassEx;//Переменная шаблона класса окна

MainWnd : HWND;       //Описатель главного окна
WndButton:hwnd;
WndListbox:hwnd;

   Mesg : TMsg;       //Переменная для цикла сбора сообщений

{  Далее следует оконная процедура главного окна. }

//*************************************************************************
function WindowProc(wnd:HWND; Msg : Integer; Wparam:Wparam; Lparam:Lparam):
Lresult;
stdcall;
var
ndx,id:word;
p:Pchar;
Begin
{Далее происходит цикл обработки сообщений}
 case msg of
wm_close ://Сообщение посылаемое при уничтожении окна
 Begin
  postquitmessage(0); exit;

  Result:=0;
  End;

 wm_command:
case hiWord(wParam) of
        idb_1 : begin

   ???    DlgDirList(WndListbox,"C:\\*.*",
        idlistbox,idlistbox,ddl_drives );
          end;

 end
 else Result:=DefWindowProc(wnd,msg,wparam,lparam);
end;
      End;
{***********************************************************************}

{Переменные xPos,yPos,nWidth,nHeight в принципе не нужны, однако я их завел}
var xPos,yPos,nWidth,nHeight : Integer;

begin
{  Далее идет заполнение шаблона класса окна  }
wc.cbSize:=sizeof(wc);
wc.style:=cs_hredraw or cs_vredraw;
wc.lpfnWndProc:=@WindowProc;
wc.cbClsExtra:=0;
wc.cbWndExtra:=0;
wc.hInstance:=HInstance;
wc.hIcon:=LoadIcon(0,idi_application);
wc.hCursor:=LoadCursor(0,idc_arrow);
wc.hbrBackground:=COLOR_BTNFACE+1;
wc.lpszMenuName:=nil;
wc.lpszClassName:="WinMin : Main";

RegisterClassEx(wc);//Регистрация нового класса в системе

{  Заполнение переменных xPos,yPos,nWidth,nHeight}
xPos:=100;
yPos:=150;
nWidth:=400;
nHeight:=250;

{  Создание главного окна}
MainWnd:=CreateWindowEx(
0,                  //флаги расширенных стилей
"WinMin : Main",    //имя класса окна, данное при заполнении структуры wc
"Win Min",          //заголовок окна
ws_overlappedwindow,//флаги стилей окна
{подробнее о стилях см. после текста программы}
xPos,               //горизонтальная позиция окна
yPos,               //вертикальная позиция окна
nWidth,             //ширина окна
nHeight,            //высота окна
0,                  //описатель родительского окна (parent) или окна-владельца (owner)
0,                  //описатель меню окна (меню нет, нет и описателя)
Hinstance,          //описатель приложения
nil                 //address of window-creation data
);


WndButton:=CreateWindowEx(0,"button","Кнопка",
BS_pushbutton or bs_bottom or WS_VISIBLE or WS_CHILD,//стиль кнопки
200, 150, 75, 25,
mainWnd, 0, hInstance, nil );



WndListbox:=CreateWindowEx(WS_EX_CLIENTEDGE,"listbox","",
lbs_notify or ws_visible or ws_child or ws_border,//стиль списка
10, 10, 100, 250, //координаты по x и y, ширина, высота
mainWnd, 0, hInstance, nil );//

SetFocus(wndlistbox);

ShowWindow(MainWnd,CmdShow);//Отображаем окно

//Цикл обработки сообщений

While GetMessage(Mesg,0,0,0) do
begin
 TranslateMessage(Mesg);
 DispatchMessage(Mesg);
end;

end.



 
gdaujk ©   (2005-11-19 06:20) [9]

Создание:

WndListbox:=CreateWindowEx(WS_EX_CLIENTEDGE,"listbox","",
                 lbs_notify or ws_visible or ws_child or ws_border,//стиль списка
                 10, 10, 100, 250, //координаты по x и y, ширина, высота
                 mainWnd, idlistbox,       //ListBox identifier
                 hInstance, nil );


При создании кнопки тоже укажи  identifier - idb.

Вызов DlgDirList:

DlgDirList(WndListbox,"C:\\*.*", idlistbox,0 {or identifier of static control}
              ,ddl_drives );


PS: не советовал бы при таком уровне знаний производить какие-либо манипуляции с драйверами...


 
gdaujk ©   (2005-11-19 06:22) [10]

Не гарантирую что вышенаписанное будет работать, сам не пробовал...


 
begin...end ©   (2005-11-19 08:57) [11]

> gdaujk ©   (19.11.05 06:20) [9]

> DlgDirList(WndListbox,"C:\\*.*", ...

Строка lpPathSpec не должна быть константой. Она не только in-параметр, но и out (см. MSDN).


 
gdaujk ©   (2005-11-19 10:52) [12]

begin...end ©   (19.11.05 08:57) [11]

Так точно.


 
sergey1 ©   (2005-11-22 00:54) [13]

PS: не советовал бы при таком уровне знаний производить какие-либо манипуляции с драйверами...

ну а что делать если задали курсовую , а источников никаких нет , только направление задали. Вперед и с песней в интернет. Мало того, нужно сделать файловый менеджер, во как, не хило ? да.



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

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

Наверх




Память: 0.5 MB
Время: 0.027 c
15-1137401942
Rentgen
2006-01-16 11:59
2006.02.05
поле с прокруткой как в MoveMaker ???


9-1124630358
Sphinx
2005-08-21 17:19
2006.02.05
Получить данные из VB Mesh-а


6-1130674624
WebSQLNeeder
2005-10-30 15:17
2006.02.05
Как выключить прокси в примере использования прокси в TWebBrowser


2-1137705603
Змей
2006-01-20 00:20
2006.02.05
русские или английские буквы в строке?


3-1134114728
ligor
2005-12-09 10:52
2006.02.05
FastReport 2.5