Hintergrunds Resource



  • Hallo beschäftige mich seit einiger zeit mit winapi und hät da eine frage.
    Immer wenn ich ein eigenen hintergrund für ein window mache scheints nicht zu klappen.

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev,LPSTR lpCmdLine,int nShowCmd)
    {
    	WNDCLASS wc;
    	HWND hWnd;
    	MSG msg;
    
    	HBRUSH m_hBackground;
    
    	HBITMAP hBackground=(HBITMAP)LoadImage(NULL,MAKEINTRESOURCE(IDB_BITMAP1),IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
    	HICON hIcon=(HICON)LoadImage(NULL,MAKEINTRESOURCE(IDI_ICON1),IMAGE_ICON,32,32,LR_LOADFROMFILE);
    
    	m_hBackground=CreatePatternBrush(hBackground);
    
    	wc.cbClsExtra=0;
    	wc.cbWndExtra=0;
    	wc.hbrBackground=m_hBackground;
    	wc.hCursor=LoadCursor(NULL,IDC_ARROW);
    	wc.hIcon=hIcon;
    	wc.hInstance=hInstance;
    	wc.lpfnWndProc=WndProc;
    	wc.lpszClassName=WinName;
    	wc.lpszMenuName=0;
    	wc.style=CS_HREDRAW|CS_VREDRAW;
    
    	RegisterClass(&wc);
    
    	hWnd=CreateWindow(WinName,WinTitel,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,xSize,ySize,NULL,NULL,hInstance,NULL);
    
    	ShowWindow(hWnd,nShowCmd);
    	UpdateWindow(hWnd);
    
    	while(GetMessage(&msg,NULL,0,0))
    	{
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    
    	return TRUE;
    }
    

    Die Resourcen IDI_ICON1 und IDB_BITMAP1 hab ich korrekt in der .rc datei definiert. Das mit dem Icon funktioniert auch aber das mit dem Hintergrund geht nur wenn ich statt MAKEINTRESOURCE einfach den pfad eingebe. Aber ich wills sohaben das beim erstellen alle resourcen als binär in die exe eingebunden werden, sprich das ich keine bitmaps und icons im ordner haben muss.



  • hi,

    Aplon schrieb:

    HBITMAP hBackground = (HBITMAP)LoadImage(NULL,MAKEINTRESOURCE(IDB_BITMAP1),IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);

    hmm das is...emm...totaler quatsch:
    Also entweder so (aus einer Resource laden):

    HBITMAP hBackground = (HBITMAP)LoadImage(hInst,MAKEINTRESOURCE(IDB_BITMAP1),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
    // hInst: bekommste vonner WinMain (1. Param.)
    // IDB_BITMAP1: ID der Bitmap-Resource
    

    oder so (aus einer Datei laden):

    HBITMAP hBackground = (HBITMAP)LoadImage(NULL,TEXT("C:\\demo.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
    // TEXT("C:\\demo.bmp"): Dateipfad, incl. Dateiname; beachte: \\ ist ne Escape-Sequenz für '\'
    

    MfG CodeFinder


Anmelden zum Antworten