Форум: "WinAPI";
Текущий архив: 2006.02.05;
Скачать: [xml.tar.bz2];
Внизкак можно использовать функцию 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.02.05;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.017 c