Servus
Bei folgendem Code will sich das Toolbar (oder bei einem ähnlichen, die Statusbar) nicht erstellen lassen:
Wo könnte in diesem Code der Fehler sein, dass
ausgeführt wird?
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: