Ich hab Probleme mit C++ beim updaten von einem Layered Fenster.
Die Funktion UpdateLayeredWindow wird nämlich obwohl windows.h included ist nicht gefunden:
Code
D:\Progen\C++\Meine\Dev-C++\Projekte\main.cpp In function `int WinMain(HINSTANCE__*, HINSTANCE__*, CHAR*, int)':
86 D:\Progen\C++\Meine\Dev-C++\Projekte\main.cpp `UpdateLayeredWindow' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
D:\Progen\C++\Meine\Dev-C++\Projekte\Makefile.win [Build Error] [main.o] Error 1
Mein Code:
Spoiler anzeigen
Code
#include <windows.h>
// Declare Windows procedure
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
// Make the class name into a global variable
char szClassName[ ] = "WindowsApp";
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd; // This is the handle for our window
MSG messages; // Here messages to the application are saved
WNDCLASSEX wincl; // Data structure for the windowclass
// The Window structure
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; // This function is called by windows
wincl.style = CS_DBLCLKS; // Catch double-clicks
wincl.cbSize = sizeof (WNDCLASSEX);
// Use default icon and mouse-pointer
wincl.hIcon = LoadIcon (NULL, IDI_WINLOGO);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; // No menu
wincl.cbClsExtra = 0; // No extra bytes after the window class
wincl.cbWndExtra = 0; // structure or the window instance
//Use Windows's default color as the background of the window
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
// Register the window class, and if it fails quit the program
if (!RegisterClassEx (&wincl))
return 0;
int x=0,y=0,w=100,h=100;
//The class is registered, let's create the program
hwnd = CreateWindowEx (
WS_EX_LAYERED, // Extended possibilites for variation
szClassName, // Classname
"Windows App", // Title Text
WS_SYSMENU, // default window
x, // Windows decides the position
y, // where the window ends up on the screen
w, // The programs width
h, // and height in pixels
HWND_DESKTOP, // The window is a child-window to desktop
NULL, // No menu
hThisInstance, // Program Instance handler
NULL //No Window Creation data
);
if (!hwnd) MessageBox(NULL,"Fehler","Kein Fenster",MB_OK|MB_ICONERROR);
// Make the window visible on the screen
ShowWindow (hwnd, nFunsterStil);
// ShowWindow( hwnd, SW_HIDE ); // unsichtbar //hier
HDC dc=GetDC(hwnd);
HDC cdc=CreateCompatibleDC(dc);
POINT p;
p.x=x;
p.y=y;
BLENDFUNCTION blend;
blend.SourceConstantAlpha=255;
blend.AlphaFormat=1;
HBITMAP bmp;
bmp=CreateCompatibleBitmap(cdc,w,h);
SelectObject(cdc,bmp);
for (int xx=0; xx<=100; xx++)
{
for (int yy=0; yy<=100; yy++)
{
SetPixel(cdc,xx,yy,0xFF00FF00);
}
}
SIZE sz={100,100};
BOOL k=UpdateLayeredWindow(hwnd,dc,NULL,&sz,cdc,&p,0,&blend,2);
if (!k) MessageBox(NULL,"UpdateLayeredWindow","Fehler",MB_OK);
DeleteObject(bmp);
DeleteDC(cdc);
ReleaseDC(hwnd,dc);
// Run the message loop. It will run until GetMessage() returns 0
while (GetMessage (&messages, NULL, 0, 0))
{
// Translate virtual-key messages into character messages
TranslateMessage(&messages);
// Send message to WindowProcedure
DispatchMessage(&messages);
}
// The program return-value is 0 - The value that PostQuitMessage() gave
return messages.wParam;
}
// This function is called by the Windows function DispatchMessage()
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) // handle the messages
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default: // for messages that we don't deal with
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
Alles anzeigen
Hoffe ihr könnt mir helfen.
PS:
@mods
Wenn das hier nicht Offtopic sondern Hilfestellungen pls verschieben