Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: LoadImage, SetMenuItemBitmaps, LoadResPicture - work in progress
andrey
Łódź



Typ: neutral
Postów: 295
Zarejestrowany: Mar 2003
LoadImage, SetMenuItemBitmaps, LoadResPicture - work in progress

Problem mam następujący: Przygotowałem sobie obrazki do menu i skompilowłem je do pliku res. Chciałbym je teraz załadować do mojego menu, jednak mam pewne problemy. Pierwszy jest taki, że stworzyłem PopupMenu przy użyciu API i to właśnie do niego chciałbym wstawić bitmapy ale wszystkie przykłady korzystające z funkcji SetMenuItemBitmap na poczatku wyciągaja uchwyt do menu głównego a potem do podmenu. Uchwyt do popupmenu posiadam ale PopupMenu nie posiada chyba żadnego podMenu co z tym fantem zrobić?
Drugi problem polega właśnie na niemożności użycia pliku res. Funkcje LoadImage i SetMenuItemBitmaps nie chca przyjamować argumentu LoadResPicture(1,0) próbowałem już przy użyciu zmiennej bmp ustawionej na Long i dopiero ta zmienna uzyc ale to nadal nie skutkuje. Jednakże gdy ładuje najpierw obrazek do PictureBox (np.: Picture1.Picture = LoadResPicture(1,0) ) a dopiero potem daje Picture1.Picture jako argument (hBitmapUnchecked i hBitmapChecked) to w menu (tym razem stworzonym w MenuEdytorze Visual Basic-a) pojawia sie rysunek. Mam do tego jeszcze jedno pytanie w jaki sposob rysunek załadowany do menu jest powiazany z PictureBox-em bo w trakcie działania programu niemoge wyładować z PictureBox-a obrazka bo w menu zniknie bitmapa.

[Post edytowany dnia 18-05-2004 12:34 przez andrey]


_____________________________________________
http://www.carbondesign.pl/ - rowery poziome, trójkołówce, handbike-i, tuning, akcesoria

09-05-2004 10:25
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
andrey
Łódź



Typ: neutral
Postów: 295
Zarejestrowany: Mar 2003

Przygotowałem sobie odpowiednia funkcję Jeżeli to komuś jeszcze pomoże oto ona:

' sciezka - sciezka do pliku z bitmapa
' nr_poz - do ktorej pozycji menu ma byc wstawiony obrazek
' Calosc można wywolac np w Form_Load i wpisac bmpMenu "Sciezka_do_pliku_bmp", numer_pozycji_menu

Public Function bmpMenu(ByVal sciezka As String, ByVal nr_poz As Integer) As Long
    Dim hbmp As Long
    hbmp = LoadImage(0, sciezka, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or LR_LOADMAP3DCOLORS Or LR_LOADTRANSPARENT)
    bmpMenu = SetMenuItemBitmaps(hMenu, nr_poz, MF_BYPOSITION, hbmp, hbmp)
End Function


Lecz ja nie chce by bitmapy lezaly w folderze chcialbym aby byly w pliku res i w jaki sposob dodać tutaj jeszcze LoadResPicture bo jak probuje je umiescic to nie wysiwetla się żadna bitmapa a nie chciałbym używać PictureBox-a jako swoistego kontenera Co wy na to?


_____________________________________________
http://www.carbondesign.pl/ - rowery poziome, trójkołówce, handbike-i, tuning, akcesoria

10-05-2004 15:42
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
andrey
Łódź



Typ: neutral
Postów: 295
Zarejestrowany: Mar 2003

Nie miałem wyjścia i użyłem PictureBoxa do przechowywania bitmapy z pliku res i problem jest nadal poniewaz do menu ładuje sie tylko ostatni rysunek jaki zaladowałem do PictureBox-a Czy może mi ktoś wytłumaczyć jak ominąć ten swoisty kontener jakim jest PictureBox aby skorzystac z pliku res Ja walcze nadal ale moze macie jakies pomysły?


_____________________________________________
http://www.carbondesign.pl/ - rowery poziome, trójkołówce, handbike-i, tuning, akcesoria

14-05-2004 07:24
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
andrey
Łódź



Typ: neutral
Postów: 295
Zarejestrowany: Mar 2003

Zmieniłem lekko temat bo pamiętam że ktoś proponował umieścić dział work in progress na forum ale na razie go nie ma więc niech ten post będzie zaczynkiem.

Problem jest następujący pragnę by menu mojego programu miało bitmapy nie chce ich jednak trzymać w osobnych plikach postawiłem więc na pliki res lecz z pliku res mam mnostwo kłopotow z załadowaniem ich do menu Oto kodzik:
- stary sposób działa idealnie:

Sub bMenu()
    bmpMenu "D:\Moje Programy\Prace\Menu\pokaz.bmp", 1
    bmpMenu "D:\Moje Programy\Prace\Menu\zwol30.bmp", 3
    bmpMenu "D:\Moje Programy\Prace\Menu\zwol.bmp", 4
    bmpMenu "D:\Moje Programy\Prace\Menu\dzwonek.bmp", 8
    bmpMenu "D:\Moje Programy\Prace\Menu\pomoc.bmp", 12
    bmpMenu "D:\Moje Programy\Prace\Menu\oprog.bmp", 13
  bmpMenu "D:\Moje Programy\Prace\Menu\zamk.bmp", 15
End Sub

Public Function bmpMenu(ByVal sciezka As String, ByVal nr_poz As Integer) As Long
    Dim hbmp As Long
    hbmp = LoadImage(0, sciezka, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or LR_LOADMAP3DCOLORS Or LR_LOADTRANSPARENT)
    bmpMenu = SetMenuItemBitmaps(hMenu, nr_poz, MF_BYPOSITION, hbmp, hbmp)
End Function

-Tak wygląda nowy z plikiem res:

Public Function zresMenu(ByVal nr_res As Integer, ByVal nr_poz As Integer) As Long
    Form1.Picture1.Picture = LoadResPicture(nr_res, 0) ' <<== problem leży chyba tutaj
    zresMenu = SetMenuItemBitmaps(hMenu, nr_poz, MF_BYPOSITION, Form1.Picture1.Picture, Form1.Picture1.Picture)
End Function

Sub dMenu()
  zresMenu 1, 1  ' Otóż wszystko działa w taki sposób że w miejsce gdzie powinny być różne bitmapy z pliku res
  zresMenu 2, 3 ' pojawia się tylko ostatnia załadowana do picturebox'a
  zresMenu 3, 4
  zresMenu 4, 8
  zresMenu 5, 12
  zresMenu 6, 13
  zresMenu 7, 15
End Sub
' Co z tym fantem zrobić spróbujcie coś poradzić jak sam rozwiąze ten problem to napewno zamieszzcę rozwiązanie


_____________________________________________
http://www.carbondesign.pl/ - rowery poziome, trójkołówce, handbike-i, tuning, akcesoria

18-05-2004 12:46
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Andrzejku czy ten problem nadal jest aktualny ?


_____________________________________________
Karolina

23-05-2004 14:13
Pokaż profil karolinavb  Wyślij email do karolinavb   
andrey
Łódź



Typ: neutral
Postów: 295
Zarejestrowany: Mar 2003

Jejku Karolinko nareszcie ktos odpowiedzial Tak problem jest nadal aktualny gdyby nie byl zamiescilbym do niego rozwiazanie ale nie mialem czasu sie wogole tym zajmowac


_____________________________________________
http://www.carbondesign.pl/ - rowery poziome, trójkołówce, handbike-i, tuning, akcesoria

23-05-2004 17:44
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Problem w podanym przez Ciebie przykładzie polega na zastosowaniu 1-dnego obiektu Form1.Picture1.Picture do wszystkich bitmap i te bitmapy pojawiają się po kolei ale znikają ( znika obiekt do którego jest handle), gdy do  Form1.Picture1.Picture  wpiszesz następną bitmapę. Wykorzystuję więc jako kontener nie kontrolki, ani tablicę kontrolek tylko tablicę obiektów:

Dim picBuff() As IPictureDisp

Ponieważ to jest cały przykład, który również zawiera plik RES przykładowy przesyłam Ci go w całości, aczkolwiek nie wiem czy Cię on zachwyci.

P.S.
Popatrz też na stronę http://www.mvps.org/vbvision/grouped_demos.htm
Ten przykład wykorzystałam do odczytania ikon z RES FILE, może należy tą metodę spróbować

hModule =GetModuleHandle("myRes.RES" )

Dla np. ID=104

hIcon = LoadImageBynum(hModule,104, IMAGE_ICON, _
                              ICONSIZELARGE, ICONSIZELARGE, LR_DEFAULTCOLOR)
To jest przykład DrawState Demo.zip (13KB)

[Post edytowany dnia 24-05-2004 08:09 przez karolinavb]


_____________________________________________
Karolina

24-05-2004 00:39
Pokaż profil karolinavb  Wyślij email do karolinavb   
Wszystkich odpowiedzi: 6 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1