Skocz do zawartości

Progress Bar i Listbox


Savant

Recommended Posts

Mam pytanie:
Zrobilem sobie program ktory kopiuje plik do jakiegos wybranego katalogu.
jak zrobic aby progressbar pokazywal jaka czesc pliku sie juz skopiowala?
I jeszcze jedno.
utworzylem sobie listboxa w ktorym mam dyski i katalogi i pliki. jednak nie chce aby wyswietlaly mi sie pliki tylko same dyski i katalogi
robilem to za pomoca LB_DIR ustawiajac flage na DDL_DIRECTORY | DDL_DRIVES ale nie pomoglo :-(

Link do komentarza
Udostępnij na innych stronach

Co do okienka z katalogami i dyskami.

Skompiluj nastepujacy plik zasobow do res :
1536 DIALOG 141, 24, 176, 135
STYLE DS_MODALFRAME | 0x6004L | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Otwórz"
FONT 8, "Helv"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
{
CONTROL "&Nazwa pliku:", 1090, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, -99, 6, 76, 9
CONTROL "", 1152, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_OEMCONVERT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, -99, 16, 90, 12
CONTROL "", 1120, "LISTBOX", LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP, -99, 32, 90, 68
CONTROL "&Foldery:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 6, 96, 9
CONTROL "", 1088, "STATIC", SS_LEFT | SS_NOPREFIX | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 18, 96, 9
CONTROL "", 1121, "LISTBOX", LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 32, 96, 68
CONTROL "&Wy\x9Cwietl pliki typu:", 1089, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, -99, 104, 90, 9
CONTROL "", 1136, "COMBOBOX", CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_TABSTOP, -99, 114, 90, 96
CONTROL "&Dyski:", 1091, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 104, 96, 9
CONTROL "", 1137, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 5, 114, 96, 68
CONTROL "OK", 1, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 114, 6, 50, 14
CONTROL "Anuluj", 2, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 114, 24, 50, 14
CONTROL "Pomo&c", 1038, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 114, 46, 50, 14
CONTROL "&Tylko do odczytu", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 107, 68, 67, 12
}

Jest to standardowe stare okno wyciagniete z systemowych zasobow. Z tym, ze lista plikow zostala zaslonieta.

Nasytepnie wykorzystaj GetOpenFileName, z tym ze w strukture OPENFILENAME dodaj flagi:
OFN_ENABLEHOOK or OFN_ENABLETEMPLATE
i w lpfnHook=DialogHook dodaj obsluge funkcji, ktora miejwiecej powinna
wygladac tak (w delphi):

function DialogHook(Wnd: HWnd; Msg: UINT; WParam: WPARAM; LParam: LPARAM): UINT; stdcall;
begin
  Result := 0;
  case Msg of
    WM_INITDIALOG: ;//tutaj obsluga inicjacji dialogu
    WM_DESTROY: ;  //tutaj obsluga konca dialogu
  end;
end;

oraz lpTemplateName:=MAKEINTRESOURCE(1536) musi wskazywac na ten zasob.
Ten typ okienek wykorzystywaly wczesniejsze programy instalacyjne

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...