Skocz do zawartości

Omega

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Wszystko napisane przez Omega

  1. CompactDraw lub RealDrawPro? A Adobe Ilustrator czy Corel Draw to nie wystarczy znać, żeby wiedzieć co to jest grafika wektorowa
  2. Omega

    taki sam

    Ja zrobiłem coś takiego i działa bez zarzutu: program Run; uses Windows,Messages; {$R RES.RES} var Okno:Hwnd; FUNCTION Go2(DlgWin:hWnd;DlgMessage : UINT; DlgWParam : WPARAM; DlgLParam : LPARAM ) : BOOL; STDCALL; BEGIN Result:=False; If DlgMessage=WM_COMMAND then Begin CASE LOWORD( DlgWParam ) OF 2:EndDialog(DlgWin,LOWORD(DlgWParam)); 102:SendMessage(Okno,LB_ADDSTRING,0,LONGINT(pchar('sdss'))); End; End; End; FUNCTION Go(DlgWin:hWnd;DlgMessage : UINT; DlgWParam : WPARAM; DlgLParam : LPARAM ) : BOOL; STDCALL; BEGIN Result:=False; If DlgMessage=WM_INITDIALOG then Begin okno:=GetDlgItem(DlgWin,101); end; If DlgMessage=WM_COMMAND then Begin CASE LOWORD( DlgWParam ) OF 2:EndDialog(DlgWin,LOWORD(DlgWParam)); 102:DialogBox(Hinstance,'DIALOG_2',DlgWin,@Go2); End; End; End; begin DialogBox(Hinstance,'DIALOG_1',0,@Go); end. A zasoby wyglądają tak: DIALOG_1 DIALOG 6, 15, 334, 189 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX CAPTION "DIALOG_1" FONT 8, "MS Sans Serif" LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL { CONTROL "", 101, "LISTBOX", LBS_STANDARD | WS_CHILD | WS_VISIBLE, 13, 20, 295, 111 CONTROL "OK", 102, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 132, 60, 14 } DIALOG_2 DIALOG 6, 15, 161, 127 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "DIALOG_2" FONT 8, "MS Sans Serif" LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL { CONTROL "OK", 102, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 62, 48, 60, 14 }
  3. Potrafiłbym zrobić programowo blending (płynne przejście jednego obrazka w drugi, lub inaczej - zanikanie jednego obrazka na drugim). Jeżeli chodzi o grafikę to wszystko praktycznie sprowadza się do rozkodowania (czytaj rozpakowania) z danego formatu pliku do bitmapy i operowaniu na nim za pomocą funkcji API, lub dodatkowych, wymyślonych przez siebie (jak w przypadku tego blendingu).
  4. Bardzo wielkie dzieki za to, że zostałem przyjęty do grupy. Wspólnie rzeczywiście można stworzyć coś ekstra. CZekam z niecierpliwością na jakiś konkretny pomysł. W tej chwili trochę pracuje nad stroną internetową (grafika, w tym flash), więc nie mogę intelektualnie wypowiedzieć się nad jakimś świetnym, nowym pomysłem. Ale z chęcią pomogę swoją wiedzą i pracą w czymś nowym. Wspólnymi siłami rzeczywiście można zrobić coś extra. Jeszcze raz wielkie dzięki :)
  5. Skromnie chciałbym powiedzieć, że też, jakby można było, mógłbym się przyłączyć do jakiejś większej pracy. Ale ja pisze w delphi lub asemblerze.
  6. Omega

    TAK

    Dziwne to co piszesz. Spróbuj edytować okienko w programie do zasobow, ale w trybie tekstowym. Sprawdz jakie wlasciwosci ma okno glowne. Moze jest tam jakis dziwny wpis, czy byc moze ma jakas przypisana klase? Musisz sam sprawdzic, bo mi jest trudno cokolwiek powiedziec jak nie mam tych zasobow.
  7. Omega

    Problem z forma

    Okno dialogowe z zasobów?
  8. Omega

    Kopiowanie folderów

    W API do przenoszenia, kopiowania, zmiany nazwy lub usuwania katalogow z cala zawartoscia sluzy fukcja SHFileOperation z odpowiednio wypelniona struktura SHFILEOPSTRUCT. Do tworzenia sluzy funkcja CreateDirectory lub CreateDirectoryEx
  9. Omega

    Progress Bar i Listbox

    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
  10. Omega

    Kolumny w ListView

    W pierwszej podpowiedzi Nicona to chyba on nie kapnol sie o co ci dokladnie chodzi, bo podal strukture do doania nowej kolumny. a ListView_SetItem sluzy do zmiany czesci lub calych atrybutow etykiety. Nierozumie Nicona, czemu uwaza, zew to co napisalem to jest zle. Przecierz wlasnie to sluzy do tego czego szukasz. Jedno tylko makro i wszystko. A madrze sie tak bo wlasnie robie program wykorzystujacy listview ze stylem LVS_REPORT.
  11. Omega

    Kolumny w ListView

    Bo do nastepnej (lub jeszcze nastepnej) inaczej sie wstawia: ListView_SetItemText(UchwytLV,ktorywiersz,ktorakolumna,tekst) A wiec gdy wywolujesz dla pierwszej kolumny ListView_insertitem to dla tego wiersza i jego np. 3 kolumny musisz dodac ListView_SetItemText(hListView,0,3,pchar('Jakis tam tekst'));
  12. Omega

    Explorator

    Ale radzil bym calego drzewa katalogow nie robic od razu. Profesionalnie robi sie tak, ze najpierw sie ukazuje katalogi glowne na dysku. Jesli ktos kliknie na dany katalog aby go rozwinac dopiero wtedy odczytujemy katalogi tegoz katalogu (bez zaglebiania sie dalej). Jest to spowodowane tym, ze jak masz duzo podkatalogow to bedziesz musial dlugo czekac az treeview zczyta wszystkie katalogi. A w dodatku jesli chcesz tam wstawic ikonki folderow to juz morderstwo. Na marginesie w listview robi sie tez tak, ze wczytuje sie poczatkowo tylko tyle katalogow, zeby byly one widoczne.
  13. Omega

    .net

    Dla mnie jest to troche dziwna ankieta dotyczaca kompilatora. Porownanie kompilatora Delphi a innych nie ma sensu, bo przecierz jest to inny jezyk programowania.
  14. Omega

    InitCommonControls

    Potrzebna jest aby mogly dzialac kontrolki, ktore dzialaja w systemie od win95. Takie jak np. ListView. A wogole to zobacz https://winapi.org/main.php?dzial=lekcja&art=36
  15. Omega

    Explorator

    Jezeli chodzi o TreeView to opis jak wpisywac dane masz na stronie głównej tego portalu, gdzie sa opisane kolejno lekcje roznych kontrolek(w tym przypadku lekcja Tree-View autorstwa salwadore). Jesli chodzi o ListBox to radzil bym Ci wykorzystac ListView, który tez ma tam swoj opis (ListBox oczywiscie tez). Dlaczego, a no dlatego, ze jezeli urzyjesz jednak ListBox i bedziesz chcial zeby w nim byly widoczne ikony plików, to bedziesz mu musial nadac styl LBS_OWNERDRAWFIXED lub LBS_OWNERDRAWVARIABLE i obsluzyc raz komunikat WM_MEASUREITEM i za kazdym razem odmalowania WM_DRAWITEM. Nie wiem czy chcesz w swojej pracy uzyc cienkiego okienka, ktore bedzie dzielilo te dwa okna i za pomoca niego bedzie mozna proporcjonowac dwa okienka wzgledem siebie. Jesli tak, to po utowrzeniu nowego okna, ktory bedzie reprezentowal ten pasek, musisz w nim obslurzyc komunikat WM_LBUTTONDOWN i WM_LBUTTONUP. Gdy okno wybada ze w myszce jest wcisniety lewy klawisz bedziesz musial dodac funkcje SetCapture dla tego okna i zwolnic ja przy podniesieniu klawisza (ReleaseCapture). Oczywiscie pozostaje ci obsluzyc komunikat odpowiadajacy za ruch myszki, aby dyspropprcionowac wspomniane okna i przesowac okienko je dzielace. Jezeli chodzi o sprawdzanie ilosci dyskow dostepnych na komputerze (aby je dodac do treeview) to wykorzystaj funkcje GetDriveType, a przeszukujac katalogi masz dostepna funkcje FindFirstFile, FindNextFile i FindClose.
  16. gotowiec w delphi zciagniety z internetu: uses ShlObj, ActiveX, ComObj, Registry; procedure TForm1.Button1Click(Sender: TObject); var MyObject:IUnknown; MySLink:IShellLink; MyPFile:IPersistFile; FileName:String; Directory:String; WFileName:WideString; MyReg:TRegIniFile; begin MyObject:=CreateComObject(CLSID_ShellLink); MySLink:=MyObject as IShellLink; MyPFile:=MyObject as IPersistFile; FileName:='NOTEPAD.EXE'; with MySLink do begin SetArguments('C:\AUTOEXEC.BAT'); SetPath(PChar(FileName)); SetWorkingDirectory(PChar(ExtractFilePath(FileName))); end; MyReg := TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer'); // Poniższe dodaje skrót do desktopu Directory := MyReg.ReadString('Shell Folders','Desktop',''); // A to do menu Start // Directory := MyReg.ReadString('Shell Folders','Start Menu','')+ // '\Whoa!';// CreateDir(Directory); WFileName := Directory+'\FooBar.lnk'; MyPFile.Save(PWChar(WFileName),False); MyReg.Free; end;
  17. Omega

    skanowanie procesów

    No w sumie mozna, ale jak program ma okno
  18. Omega

    Ikony a Menu

    menu musi miec styl MF_OWNERDRAW i odrysowanie musisz obslurzyc w WM_DRAWITEM, ale w tym przypadku na poczatku tez musisz obslurzyc WM_MEASUREITEM. Trzeba na pocza tku podac szerokosc i wysokosc kazdego podmenu bo inaczej ci wywali dlugosc na caly ekran
  19. Omega

    skanowanie procesów

    https://www.binboy.org/forum/viewtopic.php?p=36819&highlight=#36819
  20. Omega

    Zasoby

    Właśnie przypadkowo znalazłem w pliku pomocy przykład jak wydłubać z zasobów ikone za pomocą wczesniej omawianych fukcji. Coprawda jest to pokazane jak wydłubac ja z zewnetrznej biblioteki, ale chyba bedziesz wiedzial jak to zmienic. Oto calosc: HICON hIcon1; // icon handle HINSTANCE hExe; // handle to loaded .EXE file HRSRC hResource; // handle for FindResource HRSRC hMem; // handle for LoadResource BYTE *lpResource; // address of resource data int nID; // ID of resource that best fits current screen HDC hdc; // handle of display context // Load the file from which to copy the icon. hExe = LoadLibrary("myapp.exe"); // Find the icon directory whose identifier is 440. hResource = FindResource(hExe, MAKEINTRESOURCE(440), RT_GROUP_ICON); // Load and lock the icon directory. hMem = LoadResource(hExe, hResource); lpResource = LockResource(hMem); // Get the identifier of the icon that is most appropriate // for the video display. nID = LookupIconIdFromDirectoryEx((PBYTE) lpResource, TRUE, CXICON, CYICON, LR_DEFAULTCOLOR); // Find the bits for the nID icon. hResource = FindResource(hExe, MAKEINTRESOURCE(nID), MAKEINTRESOURCE(RT_ICON)); // Load and lock the icon. hMem = LoadResource(hExe, hResource); lpResource = LockResource(hMem); // Create a handle to the icon. hIcon1 = CreateIconFromResourceEx((PBYTE) lpResource, SizeofResource(hExe, hResource), TRUE, 0x00030000, CXICON, CYICON, LR_DEFAULTCOLOR); // Draw the icon in the client area. DrawIcon(hdc, 10, 20, hIcon1);
  21. Omega

    Zasoby

    Z ikonami to lepiej stosowac standardowe funkcje (LoadIcon czy LoadIconEx). Bo jak sie domyslam to nie wiesz jak sa zapisywane ikony w zasobach. Aby wyciagnac je z zasobów FindResource musisz najpierw wyciągnąć grupe ikon RT_GROUP_ICON i zniej dowiadujesz sie jak poszczegolne ikony sie nazywaja (ich nazwy to tylko cyfry) - dla danej grupy.
  22. Omega

    taki sam

    Raczej ES_NUMBER
  23. Omega

    Icona na butonie

    Jaki problem? Twaorzysz button ze stylem BS_OWNERDRAW i wkomunikacie okna WM_DRAWITEM odrysuj button i na nim ikone - stosownie do akcji w danym momencie, której informacje mozesz wydobyc z ww. komunikatu (lparam zawiera znana strukture dla tego kom.)
×
×
  • Utwórz nowe...