Jump to content

Trix

Members
  • Content Count

    0
  • Joined

  • Last visited

    Never

Everything posted by Trix

  1. wsprintf'a to ja znam:) tylko, ze nie znalazlem parametru w stringu formatujacym, ktory by pozwalal na wpisanie np. 64 bitowej liczby ( nie mowiac o 80 bitowej) pozdrawiam
  2. Trix

    bitmapy

    hmm Wydaje się być wszystko w miarę ok. Zrobiłem mały programik, który właściwie jest prawie dokładnie taki sam jak twój ( fragment ładowania i wyświetlania bitmapy) i wszystko działa jak należy. Widać, że wywołujesz te funkcje w procedurze obsługi okna (lParam) - może parametry, które przekazujesz są niewłaściwe? Próbowałeś debugować program? Możesz ewentualnie spróbować załadować jakąś bitmapę, podając bezpośrednio wartości w funkcjach, a nie przekazując je z innych funkcji (np. ścieżkę w LoadImage). Może funkcja GetOpenFileName zwraca 0? Może niepoprawnie zainicjalizowałeś strukturę ofn? pozdrawiam
  3. Trix

    Przysłanianie kontrolek

    Faktycznie - wydaje się to bardziej funkcjonalne niż to przełączanie. Dodatkowo, jeśli dobrze rozumiem wystarczyło, że ukryłeś całe okno i wszystkie kontrolki na nim były równierz ukrywane? Ja ukrywam i pokazuje kontrolki oddzielnie, co jest bardzo niewygodne, zajmuje dużo miejsca w kodzie i wprowadza bałagan...no ale cóż - początkujący jestem i uczę sie dopiero:) pozdrawiam
  4. Trix

    bitmapy

    Pokaż fragment kodu, kóry ładuje bitmapę...
  5. Trix

    bitmapy

    Jeżeli chcesz załadować bitmapę z pliku to trzeba użyć funkcji LoadImage. Wydaje mi się, że nie możesz tego zrobić tak jak pokazałeś ponieważ u Ciebie X jest prawdopdobnie strukturą typu OPENFILENAME, która to przechowuje między innymi nazwę pliku wybranego przez użytkownika więc nie możesz jej tak bezpośrednio przekazać funkcji LoadBitmap. Nazwa pliku wybranego przez użytkownika znajduje się w składowej struktury OPENFILENAME. Jak to wszystko ładnie zrobić jest pokazane w artykule Pinolca: https://winapi.org/index.php?option=content&task=view&id=27&Itemid=28 pozdrawiam
  6. Witam W jaki sposób można zapisać liczbę zmiennoprzecinkową do bufora znakowego w asemberze? Czy istnieje do tego jakaś funkcja WinApi? Wiem, jak zrobić to "ręcznie" ale może jest coś takiego, a ja nie wiem;) pozdrawiam
  7. Trix

    Dialog Units

    Zgodnie z tym textem: https://www.kellygroup.com/glinkj/help/scd/dunits.htm Więc w skrócie: 1 jednostka dialogu w poziomie = 1/4 average character width ( czyli albo szerokosc sredniego znaku, albo srednia szerokosc znaku..) 1 jednostka dialogu w pionie = 1/8 average character height MSDN twierdzi, że łatwiej jest użyc funkcji MapDialogRect, która w jednym ze swoich parametrów zwróci rozmiar okna dialogowego w pikselach. pozdrawiam
  8. Trix

    Przysłanianie kontrolek

    Po kilku dniach użerania się z kontrolkami Tab udało mi się wreszcie rozwiązać ten problem. Rozwiązanie jest jak zwykle banalne... Mój problem odnosi się nie tylko do kontrolki zakładek ale ogólnie do okien ( czyli np. kontrolek zasłoniętych przez inne kontrolki ). Jak wiemy okno ma swoje współrzędne x,y ( lewy górny róg ) oraz szerokość i długość. Jednak aby system wiedział, które okno jest aktualnie widoczne ( jest na wierzchu), wykorzystuje współrzędną z, która określa, jak głeboko znajduje się okno. Do sterowania ( nie bezpośredniego) oknem w wymiarze z służy funkcja SetWindowPos. W moim przypadku pierwsza kontrolka zasłaniała drugą, więc przesłałem tą pierwszą na sam "spód": invoke SetWindowPos, hcMainTab, HWND_BOTTOM, 0, 0,\ 0, 0, SWP_NOMOVE or SWP_NOSIZE I tyle...Prawda, że banalne?
  9. Trix

    Przysłanianie kontrolek

    Witam Mam kolejny "błahy" problem;) Mam dwie kontrolki Tab. Kiedy klikam na jedną z zakładek to pokazuje mi się druga kontrolka Tab, tylko że jest ona przysłonięta przez tą pierwszą...Włączyłem styl WS_EX_TRANSPARENT ale nic nie pomogło. Jak się z tym można uporać?
  10. Rzeczywiście jest skuteczny - nareszcie dziala prawie tak jak powinno. No właśnie - prawie. Pojawił się pewien problem: na oknie dialogowym mam kontrolkę List View, dwa EditBox'y i kilka Static Text'ów. Kiedy uruchamiam program to wszystko jest w porządku - zakładki działają i to co ma znikać, znika, a to co ma się pojawić, pojawia się. Kiedy jednak zmieniam myszką szerokość kolumny na ListView tak, żeby część ostaniej kolumny wychodziła poza obszar widoczny to ten obszar poszerzony przybiera kolor okna dialogowego ( czyli znika część kolumny ). Normalnie powinie sie pokazać poziomy ScrollBar ( mam ten styl włączony ) ale się nie pokazuje, a zamiast niego pojawia się kolor okna dialogowego. Po zmianie zakładki na drugą i powrocie wszystko jest ok ( widać ScrollBar i kolumnę ). Gdy w prgramie zmienię tak, żeby kolumny były na tyle szerokie żeby np. jedna wychodziła poza widoczny obaszar to po uruchomieniu programu również wszystko jest ładnie wyświetlane. Może mam obsłużyć jakiś LVN_.. ?. W poprzedniej wersji programu, jak nie miałem jeszcze zakładek to tego problemu nie było. Wiecie, co może być nie tak?
  11. Właśnie się zorientowałem, że kompletnie źle myślałem:). Wydawało mi się że jak mam kontrolkę Tab i klikam na jej zakładki to każdej zkładce przypożądkowany jest odzielne okno dialogowe, a to przecież tylko kontrolki się pojawiają albo znikają...Chyba musze troche zażyc ruchu:P Poczytałem o PropertySheet i tam faktycznie juz podaje się okna dialogowe - ale w takim przypadku nie będzie chyba mi to potrzebne. Zmarnowałem na to cały dzień:( ps. czemu ten serwis tak wolno chodzi?
  12. Witam, stworzylem trzy okna dialogowe. Jedno z nich jest oknem rodzicem dla pozostalych, w nim tez znajduje sie kontolka Tab. Chce aby po klinkieciu na jedna z dwoch zakladek wyswietlilo sie jedno z okien dialogowych. Narazie mam jedna funkcje obslugi okna ( okna rodzica). Czy musze stworzyc odzielne funkcje obslugi pozostalych dwoch okien dialogowych?
  13. Trix

    Sortowanie elementow ListView

    Witam Mam kontrolke ListView - zawiera ona 4 kolumny ( 1 Item + 3 SubItem'y). Kontrolka ustawiona jest na automatyczne sortowanie elementow. Problem polega na tym, ze gdy dodam nowy element, a jest on "mniejszy" niz poprzedni, to zostanie on przesuniety przed poprzedni element ale jego podelementy zostaja na tym samym miejscu. Reasumujac jak skojarzyc Item z SubItem tak, aby sortowane byly cale wiersze??
  14. Faktycznie! Teraz kiedy to wyjasiles wydaje sie to prawie oczywiste:). Dzieki wielkie! Troche bez sensu jest to ze kompilator wlasnie tak rozwija invoke'a...Z tego co wycztalem z dokumentacji funkcji to proces wywolujacy jest odpowiedzialny za oczyszczenie stosu - zatem trzeba po instrukcji call dodac jeszcze add ESP, 28... Zastanawia mnie tylko jeszcze jedna rzecz: gdy program wrzuca na stos zmienna typu np. WORD to i tak na stos wrzucana jest warotsc DWORD ( ponoc wynika to z tego ze jest to szybsze) - czyli jest jakby wyrownanie do DWORD. Dlaczego wiec nie wrzuca poprawnie tego? Czy moze sie myle? ps. Fajnie ze piszesz w asmie bo ciezko jest sie kogos poradzic, gdy kroluje c++:)
  15. Witam Zdaje sie, ze juz mniej wiecej wiem gdzie siedzi problem - prawdopodobnie jest nim funkcja wsprintf! Po deasemblacji programu zauwazylem ze na stos wrzucany jest tylko pierwszy parametr, a nastepne nie sa juz wrzucane parametry tylko zamiast nich sa instrukcje push 0 . Nie wiem dokladnie co tam sie dzieje bo nie mam czasu tego analizowac ale z ta funkcja wsprintf sa same problemy...Moj problem rozwiazalem srednio fajnie ale wazne ze dziala - zamiast wrzucac wszystko do wsprintf dopisuje poprostu do bufora kolejne przekonwertowane liczby. Wyglada to tak: invoke FileTimeToLocalFileTime, ADDR FoundData.ftLastWriteTime, ADDR FTime invoke FileTimeToSystemTime, ADDR FTime, ADDR STime invoke wsprintf, ADDR fsBuf, SADD("%u:"), STime.wHour invoke wsprintf, ADDR temp, SADD("%02u "), STime.wMinute invoke lstrcat, ADDR fsBuf, ADDR temp invoke wsprintf, ADDR temp, SADD("%u-"), STime.wDay invoke lstrcat, ADDR fsBuf, ADDR temp invoke wsprintf, ADDR temp, SADD("%02u-"), STime.wMonth invoke lstrcat, ADDR fsBuf, ADDR temp invoke wsprintf, ADDR temp, SADD("%u"), STime.wYear invoke lstrcat, ADDR fsBuf, ADDR temp Byc moze zle tez tworzylem ciag formatujacy ale probowalem z wieloma typami i nic to nie dawalo wiec watpie. Oczywiscie wsprintf z jednym paramterem dziala poprawnie. pozdrawiam
  16. Witam Moj problem polega na tym ze, gdy po odczycie daty ostatniego wpisu w pliku i jej konwersji na czas systemowy konwertuje ja na ciag znakow funkcja wsprintf to niestety wynikiem sa jakies liczby ktore z pewnoscia nie sa data ani czasem. Oto fragment kodu: invoke FileTimeToSystemTime, ADDR FoundData.ftLastWriteTime, ADDR STime .if eax == 0 invoke MessageBox, NULL, SADD("Blad przy konwersji daty"), SADD("Konwersja daty"), MB_OK .endif invoke wsprintf, ADDR fsBuf, ADDR templateData, STime.wHour, STime.wMinute, STime.wDay, STime.wMonth, STime.wYear Ponizej zmienne wykorzystywane we fragmencie: LOCAL FoundData: WIN32_FIND_DATA LOCAL STime: SYSTEMTIME LOCAL fsBuf[MAX_PATH]: BYTE ; pomocniczy bufor templateData db "%u:%u %u-%u-%u",0 ciag formatujacy Wczesniej w programie struktura FoundData jest oczywiscie wypelniana przez funkcje FindNextFile. W czym moze byc problem?
×
×
  • Create New...