Skocz do zawartości

Omega

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Wszystko napisane przez Omega

  1. Omega

    Wyciągnąć z resów

    https://devstart.pl/temat/4780-zasoby/
  2. Omega

    Wyciągnąć z resów

    Programowo, czy za pomoca jakiegos programu ci wystarczy?
  3. Omega

    A & W

    Pewnie masz racje, tylko mi chodzilo w tym przypadku o delphi. W kodach zdodlowych MessageBox jest przypisany bezposrednio do MessageBoxA. I wlasnie w delphi sie stosuje AnsiChar na AnsiString i na odwrot WideChar jako WideString. A przyznam szczerze nie wiedzialem tak naprawde do czego praktycznie sluzy te WideChar. Funkcje do knwersji zankow to: MultiByteToWideChar i WideCharToMultiByte
  4. Omega

    A & W

    A i W Oznacza typ znakow. I tak A to AnsiChar a W to WideChar. Ten pierwszy to standardowy typ znakow jaki znasz, czyli np. MARIUSZ. Zas drugi to dodatkowo do kazdego znaku dodawane jest zero, czyli: M0A0R0I0U0S0Z0. Taki sposob zapisu stosowany jest np. w nazewnictwie zasobow. Sa odpowiednie funkcje API, ktore moga formatowac naprzemiennie lancuch znakow. I teraz co do MessageBox, ta funkcja to to samo co MessageBoxA, ale nie to co MessageBoxW. W tej drugiej musial bys przekonwertowac odpowiedni lancoch Ansi do WideChar. Najczesciej w programowaniu uzywa sie AnsiChar. Ale zobacz w strukture pliku wordowskiego (*.doc). Wszystkie teksty zapisywane sa jako WideChar. Praktycznie wszystkie funkcje API, ktore w paramtrach potrzebuja lancucha znakow maja styl wyboru funckcji ( z koncowka A lub W).
  5. look at this: https://www.codeguru.com/Cpp/controls/buttonctrl/article.php/c5165 Tego typu captiny trzeba samemu odrysowywac, np. w komunikacie WM_NCPAINT. Ale nie tylko, bo i w czasie kiedy nie jest aktywny caption, dopiero jest itd. Tak wlasnie nalezy tez tworzyc gradienty na captionach, chyba, ze sa one ustawione systemowo.
  6. Omega

    Edit

    No to subclassuj ta kontrolke i blokuj odpowiednie klawisze (napewno backspace) oraz kontroluj w funkcji subclassingu myszke.
  7. Omega

    Ważne pytania

    1. W oknie dialogowym ustaw dodatkowy przycisk (ten ktory ma sie pokazywac) jako niewidoczny i gdy ktos wcisnie z okna (z CreateWindowEx) przycisk wyslij komunikat do dialogboxa (SendMessage lub PostMessage) z komunikatem wymyslonym przez ciebie. A w komunikacie utworz funkcje pokazujaca tan button. 2. Musisz to chyba zrobic w sposob taki, ze przydzielasz poprostu dynamicznie kawalek pamieci dla zmiennej dla danej osoby w postaci zwroconego uchwytu. Z tym, ze przecowywany uchwyt by byl np. w rekordzie wspolnie z nazwa zmiennej, ktora by byla wlasnie identyfikatorem.
  8. Jeszcze raz napisze. GetCurrentDirectory nie musi zwracac katalogu, w ktorym akorat uruchomiles swoj program!!!!!!!
  9. Omega

    Regedit i inne...

    Kazda funkcja dotyczaca rejestru jesli poprawnie wykonala zwraca stala ERROR_SUCCESS.
  10. GetModuleFileName A tak na marginesie zanim zadasz pytanie to poszukaj. Juz na taki temat odpwiadalem.
  11. Nie loadlibrary, tylko zainicjowac przy ladowaniu biblioteki poprzez DLLEntryPoint i komunikacie DLL_PROCESS_ATTACH przydzielamy pamiec na zmienne globalne, poprzez CreateFileMaping z pierwsza wartoscia FFFFFFFFh
  12. Omega

    Blad

    To smutne. Krol umarł - niech zyje krol. :(
  13. Oto przykład jak się stosuje globalnego hooka. W tym przypadku dla myszki, ale bardzo prosto jest to zamienic dla klawiatury - powiem wiecej, klawiature latwiej sie obsluguje. Ale niestety calosc jest w delphi. https://4programmers.net/view_faq.php?id=510
  14. Omega

    Podmiana katalogu

    Sam kiedys mialem ten problem z odswiezeniem ikon. Zadalem pytanie na forum, ale tez nikt nie wiedzial. I do tej pory nie wiem jak to zrobic, a imalem sie roznych sposobow, np: SendMessage(HWND_BROADCAST ,WM_SETTINGCHANGE,SPI_SETNONCLIENTMETRICS,NULL); Ale w Win98 nie dziala. A napewno jest na to sposob bo sam system sobie z tym radzi i WinRAR, kiedy w programie przypiszemy, ktore ikony ma otwierac, a ktore nie.
  15. Omega

    INITCOMMONCONTROLSEX

    U mnie bez inicjowania specjalnych kontrolek i tak sie tworza przez CreateWindowEx, ale już gorzej jest jak probujesz tak utworzyc kontrolke na oknie dialogowym (DialogBox).
  16. Nie spotkałem się z taką funkcją, która by sprawdziła różnice dat. W takim przypadku nie masz wyjscia, tylko sam zaprojektowac taki algorytm, lub poszukac w necie - byc moze sa jakies biblioteki udostepnione, ktore maja taka funkcje.
  17. Omega

    minimalne rozmiary okna

    Temat juz byl, bo juz sie nad nim rozwodzilem: https://devstart.pl/temat/4742-zmiana-rozmiaru-okna/
  18. Omega

    minimalne rozmiary okna

    Ustalic czy ustawic? Jezeli ustalic to ustal na dany rozmiar i juz. Tak naprawde to dokladnie chyba nie sprecyzowales pytania.
  19. Omega

    MFC & antyvirs

    1. Luknij na procedure GetFileVersionInfo 5. Co do tej odpowiedzi Nicona to bym się troche kłucił. Podane procedury tylko zliczaja okna uruchomione w systemie, a przecierz niektore programy dzialaja w tle i nie maja okienek, zwlaszcza np. jakies trojany. W tym wypadku w windowsie nie opartym na NT wykorzystal bym funkcje CreateToolhelp32Snapshot i do tego Process32First i Process32Next. Funkcje zwracaja wszystkie informacje o uruchamianych procesach ze scierzkami dostepu. Jezeli chodzi o system NT to wykorzystuje sie biblioteke...No wlasnie, nie pamietm, ale z powyzszych funkcji nie skorzystasz. Mam gdzies opis ich w knigach, ale niestety pozyczylem znajomemu. 4. Aby najszybciej sprawdzic zawartosci plikow to najlepiej jest wykorzystac odwzorowanie pamieciowe pliku (CreateFileMapping). Dodane (01.04.04): Wiem, ze dzis prima - aprilis ale nie bede oszukiwal :D . Chcialem dopisac cos do pkt. 5. Otorz w windows opartym na NT wykorzystuje sie biblioteke PSAPI, ktora zostala juz wspomniana. Bo zniej mozna wykorzystac funkcje EnumProcesses. I jesli bys chcial swoj program wykorzystac na wielu platformach, to najlepiej by bylo powyzsze funkcje do zliczania procesow sprobowac zaladowac dynamicznie.
  20. Aby dowiedzieć się czegoś o procesorze dobrze jest użyć komendy CPUID w asemblerze (486). Jerzeli zas chodzi o pamięć do sprawdzenia jej stanu służy funkcja GlobalMemoryStatus, która zwraca nam informacje w odpowiednim rekordzie (MEMORYSTATUS).
  21. InvaidateRect(Okno,nil,false);
  22. 1. Aby cos wogole rysowac po kontekscie, wczesniej musi byc do niego przypisana mapa (SelectObject()). Ona ma wyznaczona wysokosc i szerokosc obrazka i tylko wzgledem tych rozmiarow bedzie widoczne jakiekolwiek rysowanie. Aby zapisac ta mape do pliku nie pobiera sie nic z tego kontekstu tylko bezposrednio z uchwytu tej mapy. A wykonuje sie to za pomoca funkcji GetObject(HBitmap, sizeof(DibSection), DibSection). Z tych informacji mozna juz zainicjowac BitmapInfoHeader, rozmiar mapy DIB itd. I z tych informacji (oczywiscie trzeba tez zainicjowac BITMAPFILEHEADER) mozna juz zapisac mape. Funkcja GetDIBits zwraca nam dane mapy. 2. Nie ma takiego komunikatu. Ale chyba jezeli znasz rozmiar klienta (GetClientRect) to chyba bedziesz wiedzial czy rysujesz poza obszar. 3. Nie odrysowuj nigdzie indziej jak w komunikacie WM_PAINT, poprzez BeginPaint i EndPaint.
  23. Omega

    Ale Lam!

    Co cool? Cieszysz sie ze ci wywalil blad. Sprobuj debugowac, albo chociarz zobacz w ktorym momencie wywala ci blad? Wszystko zalezne jest tez od wersji kompilatora. Ja uzywam D 6 i to co przedstawilem wczesniej sprawdzilem - zero bledow i COOL!!!
  24. Omega

    Ale Lam!

    Jako pchar mozna uzysc zwyklej tablicy (jak wspomnial Piasiu) i zawsze wszystko bedzie gralo TIP-TOP (Pierwsza liczba tablicy musi byc 0), np: var P:array[0..512]of char; --- GetWindowText(Okno,P,SizeOf(P)); MessageBox(okno,P,'nic',MB_OK); --- Ale jesli mimo wszystko uparles sie na typ tylko pchar to musisz zrobic tak: var P:pchar; ---- getMem(P,512); GetWindowText(Okno,P,512); //tutaj w zyciu nie stosuj sizeof(P), jak poprzednio, bo p jest wskaznikiem MessageBox(okno,P,'nic',MB_OK); freemem(P,512); ---
  25. Omega

    taki sam

    Piasiu ma racje, hPrevInstance mogl byc tylko wykorzystany w win 3.1X. bo od win 95 to dupa.
×
×
  • Utwórz nowe...