[WinApi, C++] Własny format pliku


(Autologo) #1

Witam

Nie wiem jak zrobić własny format pliku, bawienie się w rejestrze to wiem itp. ale nie wiem jak dokładniem. Myśle że ktoś fachowy poleci mi jakiś kurs o tym.

Pozdrawiam, Kamzar.


(Fiołek) #2

Ależ stworzenie własnego formatu sprowadza się do dwóch kroków:

  1. Napisać specyfikacje.

  2. Zaimplementować loader.

Żadnego bawienia w rejestrze :wink:

Jeśli chcesz przypisać domyślny program do danego rozszerzenia to wtedy musisz dodać rozszerzenie jako klucz do HKCR lub HKCU\Software\Classes. Następnie w wartość domyślną klucza .[ext]\shell\open\command wpisać ścieżkę do programu. Nazwa pliku jest jako "%1".

Piszę z głowy, więc nie jestem pewien czy czegoś nie pomyliłem.


(Autologo) #3

Hmmm... może nie jest to za bardzo precyzyjna odpowiedź ale poszukam reszty na google.

Mam tylko jeden taki problem z paskiem narzędzi (ToolBar'em)

To tak. Mam problem z przezroczystością bitmapy (Gdy dam w bitmapie domyśny kolor Windows'a to jest przezroczysta ale nie każdy ma takis sam domyśny klolor).

Tworze liste bitmap potem dodaje do listy bitmap bitmape odrazu ta funkcja tworzy maske ale maska nie działa (Tak jakby działa bo wyświetla się na czarno).

Jeszcze taki mały problem. Ten kawałek kodu jest z jednego kursu więc na ToolBarze powinna się zmieniać bitmapa jak najade na ToolBar, ale się nie zmienia. A tu kod:

himlDef = ImageList_Create (20, 20, ILC_COLOR24 | ILC_MASK, 1, 1);

himlHot = ImageList_Create (20, 20, ILC_COLOR24 | ILC_MASK, 1, 1);


ImageList_AddMasked (himlDef, hbmDef, RGB(255,0,255));

ImageList_AddMasked (himlHot, hbmHot, RGB(255,0,255));


SendMessage (hToolBar, TB_SETIMAGELIST, 0, (LPARAM)himlDef);

SendMessage (hToolBar, TB_SETHOTIMAGELIST, 0, (LPARAM)himlHot);

Przykład:

Surowa bitmapa

tooltn.png

W programie

nowyobrazmapabitowahb.png

Surowa bitmapa

toolw.png

W programie

nowyobrazmapabitowa2d.png

Pozdrawiam.