Einfaches Bild darstellen
-
steht nich in der FAQ wie man bilder läd oder irre ich da?
-
404 - NOT FOUND.
ich hab geguckt. da finde ich nix.
kann mir jemand helfen.
*bettel*
thx.
-
-
thx thx dafür.
aberr das erscheint mir komig.
wollte ich nicht einfach ein Bild TRANSPARENT in das LayeredWindow BLITTEN?ach kommt leute! helft mir
thx.
-
WS_POPUP?
WS_OVER... -> WS_EX_TOPMOST|WS_POPUP (im Aufruf von CreateWindowEx())
-
Ich denke eine andere Möglichkeit wäre besser:
man braucht kein fenster/wm_paint ect...
man braucht nur GetHDC(0)/GetDesktopWindow().
Dann kann man in der WInmain:while (1) { }
aber wie lautet de Code, um ein Bild anzuzeigen.
Und wie kann ich das Bild in eine Resource der ExE stecken? (VC++2005E)thx thx!!
-
Ob das ohne Fenster allerdings 'besser' ist, ist wie immer Geschmackssache, ich sehe das nicht so.
Script-Styler schrieb:
aber wie lautet de Code, um ein Bild anzuzeigen.
Und wie kann ich das Bild in eine Resource der ExE stecken? (VC++2005E)Wie der Code lautet? Ist ja wohl n Scherz, dachte Du wolltest das Programm schreiben...: Du musst das Bild ins Programm laden (LoadImage/LoadBitmap) es in einen Speicherkontext einsetzen (SelectObject) und anschließend auf den Gerätekontext blitten (BitBlt). Vergiss das Aufräumen nicht :p .
Da die VC++ 2005 Express Edition keinen Resourcen Editor hat, brauchst Du einen Externen, siehe dazu im 1. Thread dieses Forums.
-
thx thx!!!!
aber was ist daran falsch:
ich hab nur die windows.h includiert.{ HDC dc = GetDC(0); HDC dcMem = CreateCompatibleDC(dc); RECT rect; GetClientRect(GetDesktopWindow(),&rect); HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "crate.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); HBITMAP hBitmapOld = (HBITMAP)SelectObject(dcMem,hBitmap); BITMAP bitmap; GetObject(hBitmap,sizeof(bitmap),&bitmap); DWORD start = GetTickCount(); DWORD now = start; while ((now - start <= ms) && (now >= start)) { BitBlt(dc, 5, 5, bitmap.bmWidth, bitmap.bmHeight, dcMem, 0, 0, RCCOPY); Beep(880,1); now = GetTickCount(); } DeleteObject(hBitmap); DeleteObject(dcMem); InvalidateRect(0, NULL, TRUE); UpdateWindow(GetDesktopWindow()); return 0; }
So, jetzt macht er bei dem letzten parameter von BitBlt halt.
warum?
thx.
ps: wie verwende ich die resourcen?
-
thx thx!!!!
aber was ist daran falsch:
ich hab nur die windows.h includiert.{ HDC dc = GetDC(0); HDC dcMem = CreateCompatibleDC(dc); RECT rect; GetClientRect(GetDesktopWindow(),&rect); HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "crate.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); HBITMAP hBitmapOld = (HBITMAP)SelectObject(dcMem,hBitmap); BITMAP bitmap; GetObject(hBitmap,sizeof(bitmap),&bitmap); DWORD start = GetTickCount(); DWORD now = start; while ((now - start <= ms) && (now >= start)) { BitBlt(dc, 5, 5, bitmap.bmWidth, bitmap.bmHeight, dcMem, 0, 0, RCCOPY); Beep(880,1); now = GetTickCount(); } DeleteObject(hBitmap); DeleteObject(dcMem); InvalidateRect(0, NULL, TRUE); UpdateWindow(GetDesktopWindow()); return 0; }
So, jetzt macht er bei dem letzten parameter von BitBlt halt.
warum?
thx.
ps: wie verwende ich die resourcen?
-
RCCOPY gibts nicht, SRCCOPY
Bild aus Resource laden: Siehe LoadImage() oder LoadBitmap() Doku!
Möglicherweise auch interessant: http://www.winprog.org/tutorial/resources.html
-
so jetzt gehts!
aber wie bekomme ich den Hintergrund (weiß) transparent?{ HDC dc = GetDC(0); HDC dcMem = CreateCompatibleDC(dc); RECT rect; GetClientRect(GetDesktopWindow(),&rect); HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "crate.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); HBITMAP hBitmapOld = (HBITMAP)SelectObject(dcMem,hBitmap); BITMAP bitmap; GetObject(hBitmap,sizeof(bitmap),&bitmap); DWORD start = GetTickCount(); DWORD now = start; while ((now - start <= ms) && (now >= start)) { BitBlt(dc, (rect.right-rect.left-bitmap.bmWidth)/2, (rect.bottom-rect.top-bitmap.bmHeight)/2, bitmap.bmWidth, bitmap.bmHeight, dcMem, 0, 0, SRCCOPY); Beep(880,1); now = GetTickCount(); } DeleteObject(dcMem); DeleteObject(hBitmap); InvalidateRect(0, NULL, TRUE); UpdateWindow(GetDesktopWindow()); return 0; }
-
-
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__TransparentBlt@44" in Funktion ""public: int __thiscall CAction::DisplayImage(int)" (?DisplayImage@CAction@@QAEHH@Z)".
was ist da los??
-
sry code vergessen.
{ HDC dc = GetDC(0); HDC dcMem = CreateCompatibleDC(dc); RECT rect; GetClientRect(GetDesktopWindow(),&rect); HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "crate.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); HBITMAP hBitmapOld = (HBITMAP)SelectObject(dcMem,hBitmap); BITMAP bitmap; GetObject(hBitmap,sizeof(bitmap),&bitmap); DWORD start = GetTickCount(); DWORD now = start; while ((now - start <= ms) && (now >= start)) { /* BitBlt(dc, (rect.right-rect.left-bitmap.bmWidth)/2, (rect.bottom-rect.top-bitmap.bmHeight)/2, bitmap.bmWidth, bitmap.bmHeight, dcMem, 0, 0, SRCCOPY); */ TransparentBlt(dc, (rect.right-rect.left-bitmap.bmWidth)/2, (rect.bottom-rect.top-bitmap.bmHeight)/2, bitmap.bmWidth, bitmap.bmHeight, dcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, RGB(255,255,255)); Beep(880,1); now = GetTickCount(); } DeleteObject(dcMem); DeleteObject(hBitmap); InvalidateRect(0, NULL, TRUE); UpdateWindow(GetDesktopWindow()); return 0; }
-
Probier mal "GdiTransparentBlt (...)".
-
wie geht nicht.
"GdiTransparentBlt": Bezeichner wurde nicht gefunden.
thx.
-
TransparentBlt
Requirements
Windows NT/2000/XP: Included in Windows 2000 and later.
Windows 95/98/Me: Included in Windows 98 and later.
Header: Declared in Wingdi.h; include Windows.h.
Library: Use Msimg32.lib.Tipp: Schau dir den letzten Punkt der Anforderungen an.
-
na und ?
was muss ich denn mit der Libery machen?
danke.
-
Dem Linker bekanntmachen. Hast ja ein "error LNK2019". Eventuell so :
#pragma comment(lib, "Msimg32.lib")
Das ist allerdings kein WinAPI-Problem.
-
was soll ich tun?
muss ich die libery hinzufügen?