[WinAPI] Toolbar will sich nicht erstellen lassen?!

HCWD

Erfahrenes Mitglied
Servus

Bei folgendem Code will sich das Toolbar (oder bei einem ähnlichen, die Statusbar) nicht erstellen lassen:

Code:
#include <windows.h>
#include <commctrl.h>
#include "login.h" //Login aus Menü wird implementiert!
#include "res.h"

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

HWND hWnd, login;

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    MSG Msg;
    
    // Für 2 Fenster (Parent und Child) die Struktur
	WNDCLASS WndClass;
	
	WndClass.style = sizeof(WNDCLASS);
	WndClass.cbClsExtra = 0;
	WndClass.cbWndExtra = 0;
	WndClass.lpfnWndProc = WndProc;
	WndClass.hInstance = hInstance;
	WndClass.hbrBackground = (HBRUSH) CreateSolidBrush (RGB ( 128, 128, 128));
	WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	WndClass.lpszMenuName = MAKEINTRESOURCE(IDMAINMENU);
	WndClass.lpszClassName = "WindowClass";

	RegisterClass(&WndClass);

	WndClass.style = CS_DBLCLKS;
	WndClass.lpfnWndProc = LoginProc;
	WndClass.hbrBackground = (HBRUSH) CreateSolidBrush (RGB ( 224, 223, 227));
	WndClass.hCursor = 0;
	WndClass.hIcon = 0;
	WndClass.lpszMenuName = NULL;
	WndClass.lpszClassName = "Login";
	
	RegisterClass(&WndClass);
	
	// Hauptfenster wird erstellt!
    hWnd = CreateWindowEx(0,"WindowClass","GenixX",
		WS_OVERLAPPEDWINDOW,
		((GetSystemMetrics(SM_CXSCREEN)/2)-400),
        ((GetSystemMetrics(SM_CYSCREEN)/2)-300),
        800,600,
        NULL,
        NULL,
		hInstance,
        NULL);

    ShowWindow (hWnd, nCmdShow);
	UpdateWindow (hWnd);

	while (GetMessage(&Msg, NULL, 0, 0))
	{
		TranslateMessage (&Msg);
		DispatchMessage(&Msg);
	}
	return (Msg.wParam);
}

LRESULT CALLBACK WndProc (HWND hWnd, UINT uiMessage, WPARAM wParam,LPARAM lParam)
{
    char string[255];
    
	static HBITMAP hBitmap ; 
	static BITMAP bitmap ; 
	HDC hdc, hdcMem; 
	PAINTSTRUCT ps ;
	char szBuf[255];
	
	switch(uiMessage)
	{    
    case WM_CREATE:
         {
			 HWND hTool;
			
			hBitmap = (HBITMAP) LoadImage((HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE), "logo.bmp", IMAGE_BITMAP, 0, 0, 
			LR_DEFAULTSIZE | LR_LOADFROMFILE | LR_CREATEDIBSECTION);
			GetObject (hBitmap, sizeof (BITMAP), &bitmap) ; 
			
			hTool = CreateWindowEx(0,
				TOOLBARCLASSNAME,
				NULL, 
				WS_CHILD | WS_VISIBLE, 
				0, 0, 0, 0,
				hWnd, 
				(HMENU)100, 
				GetModuleHandle(NULL), 
				NULL);

		if (!hTool)
			MessageBox (NULL, "Tool Bar not created!", NULL, MB_OK );
	
		SendMessage(hTool, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
 		}
		break;
	
	case WM_PAINT:
		hdc = BeginPaint (hWnd, &ps) ; 

		hdcMem = CreateCompatibleDC (hdc) ; 
		SelectObject (hdcMem, hBitmap) ; 

		BitBlt (hdc, 440, 400, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY) ; 

		DeleteDC (hdcMem) ; 
		EndPaint (hWnd, &ps) ;
		break;
	
    case WM_COMMAND:
          switch(LOWORD(wParam))
             {
               case IDM_USER_LOGIN:
                {
					login = CreateWindow("Login",
                                 "Login",
                                 WS_CHILDWINDOW | WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                                 CW_USEDEFAULT,
                                 CW_USEDEFAULT,
                                 260,
                                 180,
                                 hWnd,
                                 NULL,
                                 (HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE), 
                                 NULL);
                }
               break;

               case IDM_CONN_CONNECT:
                 LoadString(GetModuleHandle(NULL),ID_STRING_CONNECT,string,sizeof(string));
                 MessageBox(hWnd,string,"Connect",MB_ICONINFORMATION);
               break;
               
               case IDM_CONN_DISCONNECT:
                 LoadString(GetModuleHandle(NULL),ID_STRING_DISCONNECT,string,sizeof(string));
                 MessageBox(hWnd,string,"Disconnect",MB_ICONINFORMATION);
               break;
               
               case IDM_HELP_ABOUT:
                 LoadString(GetModuleHandle(NULL),ID_STRING_ABOUT,string,sizeof(string));
                 MessageBox(hWnd,string,"Über",MB_ICONINFORMATION);
               break;
               
               case IDM_FILE_QUIT:
                  DestroyWindow(hWnd);
               break;
               }
		  return 0;
         break;
         
    case WM_DESTROY:
		DeleteObject (hBitmap) ;
		PostQuitMessage(0);
		return 0;
		break;
		
	default: 
		return DefWindowProc (hWnd, uiMessage,
			wParam, lParam);
	}
}



Wo könnte in diesem Code der Fehler sein, dass

Code:
if (!hTool)
			MessageBox (NULL, "Tool Bar not created!", NULL, MB_OK );

ausgeführt wird?
 
Zuletzt bearbeitet:
Hi, hast du das Problem mit der Toolbar mittlerweile gelöst, ich interessiere mich nämlich auch dafür.

Ich arbeite mit der aktuellen Version (4.9.9.irgendwas) des Dev-cpp und möchte ausschließlich c++ mit winapi Interface verwenden

Gruß und vielen Dank
 

Neue Beiträge

Zurück