Skocz do zawartości

Omega

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Wszystko napisane przez Omega

  1. Omega

    "Martwe" okno

    EnableWindow(UchwytOkna, false); hFont = GetStockObject(DEFAULT_GUI_FONT);
  2. Omega

    Powalony ReadFile

    Pewne jest, ze samo sie to nie robi. Musial bys rzucic kodem zeby cokolwiek okreslic (gdzie np. popelniles blad).
  3. Omega

    ListBox i columns

    No jest - ogolnie to ja znam bardzo dobrze. A dodatkowo w delphi (VCL) jest jedna tak skonstruowana, ze wyswietla pliki i katalogi (jak w explorerze). Jest tez ta dla treeview. Ale wlasnie mi zalezalo na prostocie i chcialem skorzystac z listbox. Ale i tak skorzystam wykorzystujac styl LBS_OWNERDRAWFIXED.
  4. Omega

    ListBox i columns

    Tak. Szukalem, szukalem, mialem na mysli to co napisales i rzeczywiscie. Chodzi o to, ze listbox z tym stylem to poprostu listbox, ktory wogole nie ma paska przewijania pionowego (nawet jak dodasz odpowiedni styl - WS_VSCROLL, to i tak jest to ignorowane). I teraz jak dodajesz tekst do kolejnej linii, to gdy przejdzie on poza wysokosc listboxa to tekst przeskakuje do kolumny obok. Z tego wynika, ze jezeli chcemy zrobic listboxa z wileoma kolumnami, ktore normalnie maja pasek pionowego przewijania, to nie mozemy dodac stylu LBS_MULTICOLUMN tylko najlepiej LBS_OWNERDRAWFIXED i samemu poprzez uzywanie komunikatu WM_DRAWITEM rysowac pierwsza kolumne i druga sztucznie zaaranzowac jako pewna odleglosc (stala w kazdym wierszu) od lewej strony. That's all.
  5. Omega

    ListBox i columns

    Jezeli dodamy do kontrolki Listbox styl LBS_MULTICOLUMN, to jak dodać do kolejnej kolumny dane?
  6. Omega

    Blad

    Rozmiem, ze skonczy sie juz projekt noname?
  7. Nie tworz okna glownego ze stylem WS_VSCROLL tylko: 1. utworz oddzielna klase paska SCROLLBAR i ja obsluz. 2. utworz drugie okno ze stylem child i WS_VSCROLL, zeby okno glowne bylo jego rodzicem. Oczywiscie w 1 i 2 warjancie odpowiednio rozplanuj polozenie tych komponentow.
  8. Omega

    Tray - uciekinier

    Jezeli "off corse" dla tego, ze zaimplementowales to znaczy ze gdzies indziej musiales cos spie..(schrzanic) bo nigdy nie bylo problemu implementujac ta flage.
  9. Omega

    Tray - uciekinier

    A do uCallbackMessage dodales swoj komunikat?
  10. Omega

    PChary i Ikony

    1. Dziwne, ale u mnie (delphi 7) dziala. Ale sprobuj tak: var s:string; P:PChar; begin P:=GetCommandLine; s:='Mariusz'; s:=s+P+'\'; end. 2. Zobacz funkcje DrawIconEx
  11. Omega

    Zmiana Czcionki

    Na marginesie: WM_SETFONT stosuj tylko jezeli chcesz zmienic standardowo przypisana czcionke do kontrolki, a nie do zmiany czcionki dla kontekstu, np: SendMessage(Button,WM_SETFONT,GetStockObject(DEFAULT_GUI_FONT ),0);
  12. Omega

    Zmiana Czcionki

    Bo senmessage z WM_SETFONT jako wparam (trzecia opcja, po WM_SETFONT) musi miec uchwyt utworzonej czcionki.
  13. kolko pod katem 45 stopni? znaczy zeby wygladalo jak przestrzennie obrocone o ten kat, czy tylko ma byc widoczny kawalek - 45 st. Program sie blokuje bo nie obsluguje zdarzen w petli: while (GetMessage (msg, 0, 0, 0)) do ; begin TranslateMessage (msg) ; DispatchMessage (msg) ; end; Nie potrzebnie dodales srednik po do. Zrob pierwsza linie while tak: while (GetMessage (msg, 0, 0, 0)) do
  14. Omega

    Komponenty jak VCL

    Super, kazdy chyba..itd, itd, itd. Moze i rozumiesz, ale teorie. Ja robiłem nie raz cos takiego i nigdy nie mialem klopotu. Znasz taka stalą jak WS_CLIPCHILDREN?
  15. Omega

    Komponenty jak VCL

    Górny Ale jezeli chcesz robic przyciski samemu je odmalowujac to nie lepiej utworzyc przycisk "BUTTON" ze stylem BS_OWNERDRAW i obsluzyc to w komunikacie WM_DRAWITEM?
  16. Omega

    Komponenty jak VCL

    A nie wydaje sie wam, ze systemowe kontrolki to nie sa zwyklymi okienkami, ktore mimo wszystko i tak musza obslugiwac komunikaty jak np. WM_PAINT? Zobaczcie, ze ta pozycja w CreateWindow dotyczy klasy, ktora wczesniej jest zadeklarowana poprzez RegisterClass. I tak samo robi system, tylko rejestruje po starcie systemu. Tylko ze w bibliotekach systemowych dll ze wspoldzielonymi danymi.
  17. Omega

    Komponenty jak VCL

    Smieszny tekst. Ale tak naprawde to nie wiem czy ty sie pytasz o to rzeczywiscie czy tylko robisz sobie jaja?
  18. Omega

    Problem z TabControl

    Pinolec ma racje. W takim przypadku najlepiej zastosowac subclassing, bo do okienka glownego przesylany jest tylko komunikat WM_NOTIFY wysylany tylko z TabControl, ktore (komunikaty z tab) odpowiadaja np. za zmaine zakladki. Na marginesie jak sie tworzy taka kontrolke, to najczesciej na niej umieszcza sie okienka dialogowe z zasobow, stworzone z funkcji CreateDialog, czyli okienka niemodalne. I w takim przypadku kazde okienko ma swoja funkcje obslugi. Do tego trzeba pamietac aby w petli komunikatow okna glownego zastosowac funkcje IsDialogMessage i okienka dialogowe praktycznie nie maja stylu, aby nie bylo widac na nich obramowan a bron boze captiona.
  19. Omega

    WM_TIMER

    Tez jest dobre. Zauwaz ze jak konczy sie okres kozystania dla WinRARa i trzeba go zarejestrowac to pokazuje sie po starcia znane okienko. I ono jkest zrobione na sposob taki wlasnie jak zrobiles. Uruchamia sie zegar (SetTimer) i po pewnym czasie uruchamia sie te okienko. Podczas debugowania winrara zrwocilem wlasnie na to uwage. Ale tez trzeba zwrocic na to uwage, ze sa czasami takie momenty ze okienko pokazuje sie dosyc wolno i funkcja zegara juz wyswietli okienko. Dlatego jak ja kiedys robilem taki program z tym okienkiem to wlasnie zrobilem tak jak opisalem (w WM_PAINT). Wtedy jestes pewien ze okienko sie pokaze po pojawieniu sie twojego okna.
  20. Omega

    No właśnie...

    Czemu niektorym sie wydaje, ze na forum siedza ludzie, ktorzy maja tylko po lat nascie i ze ich wiedza jest skromna (Nicon, to naprawde nic osobistego tylko te teksty tego studenciny...). Takie myslenie jest slepe i pokazuje prawde o autorze takich watkow. Ja mam 26 lat i wcale nie konczylem studiow informatycznych (ale nic straconego), a w swoim zyciu nie jednemu studencinie juz pomagalem rozwiazac problemy informatyczno - matematyczne. Smiesza mnie teksty typu "uklon w kierunku matematyki", ktore z gory swiadcza o tym, ze autor nie zna sie jeszcze na ludziach a zgory zaklada, ze to malolaci i w informatyce jeszcze pepkuja. Jestes czlowieku jeszcze mlodym studentem, ktoremu sie wydaje, ze zezarl wszystkie rozumy a w rzeczywistosci nie jedna osoba z tego forum jescze by Ci pomogla. P.S. Panowie konczmy wrescie Nasz projekt, bo trzeba zaczac cos nowego.
  21. Pewnie ze tak jest najłatwiej. Ale ja chcialem pokazac jak okienko dialogowe ma sie pokazac kiedy glowne okno jest juz widoczne, bo gdy zrobimy to w WM_CREATE to one jeszcze nie bedzie widoczne. W takim prazypadku to nawet nie trzeba tego robic w WM_CREATE tylko bezposrednio po CreateWindowEx, wykorzystujac zwrocony uchwyt z tej funkcji.
  22. Omega

    Autostart

    W delphi wygladalo by to tak. Wszystkie funkcje tutaj uzyte sa tylko funkcjami api, dlatego mozna dosyc latwo je przeksztalcic na kod w c++. program f; uses windows; var key:HKEY; P:array[0..512]of char; begin GetModuleFileName(0,P,SizeOf(P)); //GetModuleFileName zwraca nazwe naszego programu. Standardowa funkcja WinAPI If RegOpenKeyEx(HKEY_CURRENT_USER,'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 0, KEY_ALL_ACCESS, Key)=ERROR_SUCCESS then begin If RegSetValueEx(Key,'moj_program',0,REG_SZ,@P,SizeOf(P))=ERROR_SUCCESS then ; //Tutaj mozesz pociągną kod w momencie kiedy udalo sie dodac wartosc do run w rejestrze RegCloseKey(Key); End; end.
  23. Omega

    Blad

    Czy można by bylo sie dowiedziec, czy nasz projekt juz sie zakonczyl? Jakos ani widu ani slychu o nim?
  24. Jak wywołuje się modalne okienko dialogowe to chyba nie trzeba tłumaczyć (luknij na funkcje DialogBox). Aby zas je wywolac po pokazaniu sie twojego glownego okna to najlepiej zrobic tak: zrobic zmienna globalna typu bool i w komunikacie, czy przed utworzeniem okna przypisz jej zmienna false w komunikacie WM_PAINT lub WM_SHOWWINDOW(tutaj musisz sprawdzic czy okienko sie pokazuje czy ukrywa - specyfikacja tego komunikatu) sprawdz czy zmienna ma false i jesli tak to zmien ja na true (aby tylko raz ten krotki algorytm w komunikacie WM_PAINT mogl sie wywolac) i poprzez PostMessage (nie sendmessage, aby windows obsluzyl standardowa kolejke komunikatow) wywolaj jakis niestandardowy komunikat (wymyslony przez ciebie), w ktorym zaladujesz okienko dialogowe.
×
×
  • Utwórz nowe...