Gennemsigtigt vindue (Alpha)

Tags:    c++

<< < 123 > >>
Hejsa.

nogen der kan sige mig hvorfor jeg får disse fejl:

error C2065: 'WS_EX_LAYERED' : undeclared identifier
error C2065: 'SetLayeredWindowAttributes' : undeclared identifier
error C2065: 'LWA_Alpha' : undeclared identifier

her er min kode:

<pre>
// Custom Window.cpp : Defines the entry point for the application.
//
#define _WIN32_WINNT 0x0500
#include "stdafx.h"

#include <windows.h>


LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_PAINT:

break;
case WM_KILLFOCUS:
break;

case WM_COMMAND:

break;

case WM_CLOSE:

DestroyWindow(hwnd);
break;

case WM_DESTROY:

PostQuitMessage(0);
break;

default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;


wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = "MSN DeskTop";
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "Window Registration Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}




hwnd = CreateWindowEx(
WS_EX_CONTROLPARENT,
"MSN Desktop", //Angiver vores klasse navn
"MSN Desktop", //Titlen på vores vindue
WS_POPUP, //Angiver at det er et normalt vindue vi vil lave (dette er en sammentrækning af en masse styles)
0, //Vælg en standard x poisition til vinduet
0, //Vælg en standard y poisition til vinduet
250, //Bredden på vinduet
500, //Højden på vinduet
NULL, //Vi har ingen ejer af vinduet
NULL, //Ingen menu
hInstance, //Handleren til .exe filen
NULL);



/* HRGN hRegion = CreateRoundRectRgn(0,0, 220,260,15,15);
SetWindowRgn(hwnd, hRegion, true);
SetLayeredWindowAttributes(hwnd, 0, 170, LWA_Alpha);
*/

SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_ASYNCWINDOWPOS);
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_CAPTION);
LONG OldState = GetWindowLong(hwnd, GWL_EXSTYLE);
LONG NewState = OldState | WS_EX_LAYERED | WS_EX_TRANSPARENT | WS_EX_TOOLWINDOW;
SetWindowLong(hwnd, GWL_EXSTYLE, NewState);
SetLayeredWindowAttributes(hwnd, 0, 0, LWA_Alpha);

UpdateWindow(hwnd);
ShowWindow(hwnd, nCmdShow);
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
//DeleteObject(hRegion);
return Msg.wParam;
}




</pre>

- SpeC|DK - #SpeC.DK @ Q-NET



26 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
I project settings -> C++ -> "Precompiled headers" sætter du mærke i "not using precompiled headers".

Hmm nu får jeg en masse fejl i windows.h og winuser.h :( tror ikke det er det rigtigt SDK jeg har fundet :( har du evt. et like til hvor jeg kan hente det rigtige ?
- SpeC|DK - #SpeC.DK @ Q-NET



Jeg er ikke sikker på at det kan bringes til at virke :-(

På denne side kan man downloade SDK:
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en

Men der står:
"Development Tools. To build the C/C++ samples, you must have a C/C++ compiler. If you are using Microsoft Visual C/C++®, run it at least once before installing the SDK. This will ensure that the environment variables are correctly configured. To build the Visual Basic samples, you must have Microsoft Visual Basic®. This SDK does not support working with Microsoft Visual C/C++®, 6.0 as support for VC 6.0 has ended. The last SDK that will work with VC 6.0 is the February 2003 Edition, you can order a CD on the fulfillment site."



Jeg er ikke sikker på at det kan bringes til at virke :-(

På denne side kan man downloade SDK:
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en

Men der står:
"Development Tools. To build the C/C++ samples, you must have a C/C++ compiler. If you are using Microsoft Visual C/C++®, run it at least once before installing the SDK. This will ensure that the environment variables are correctly configured. To build the Visual Basic samples, you must have Microsoft Visual Basic®. This SDK does not support working with Microsoft Visual C/C++®, 6.0 as support for VC 6.0 has ended. The last SDK that will work with VC 6.0 is the February 2003 Edition, you can order a CD on the fulfillment site."

det er den fil jeg har downloaded og installeret, men det virker altså ikke med visual c++ 6.0 ?
- SpeC|DK - #SpeC.DK @ Q-NET



Tilsyneladende ikke :-(



Du kan prøve at putte disse linier ind efter #include <windows.h>

WINUSERAPI
BOOL
WINAPI
SetLayeredWindowAttributes(
HWND hwnd,
COLORREF crKey,
BYTE bAlpha,
DWORD dwFlags);

#define LWA_COLORKEY 0x00000001
#define LWA_ALPHA 0x00000002

#define WS_EX_LAYERED 0x00080000

Og så linke med User32.lib fra SDK'et

Du skal så bruge "de gamle" header-filer.



Du kan prøve at putte disse linier ind efter #include <windows.h>

WINUSERAPI
BOOL
WINAPI
SetLayeredWindowAttributes(
HWND hwnd,
COLORREF crKey,
BYTE bAlpha,
DWORD dwFlags);

#define LWA_COLORKEY 0x00000001
#define LWA_ALPHA 0x00000002

#define WS_EX_LAYERED 0x00080000

Og så linke med User32.lib fra SDK'et

Du skal så bruge "de gamle" header-filer.

nu får jeg den her fejl: rror LNK2001: unresolved external symbol "__declspec(dllimport) int __stdcall SetLayeredWindowAttributes(struct HWND__ *,unsigned long,unsigned char,unsigned long)" (__imp_?SetLayeredWindowAttributes@@YGHPAUHWND__@@KEK@Z)

- SpeC|DK - #SpeC.DK @ Q-NET



Har du linket med user32.lib fra sdk'et?

Du kan evt prøve at overskrive (efter backup) den originale.



Har du linket med user32.lib fra sdk'et?

Du kan evt prøve at overskrive (efter backup) den originale.

Ja jeg har linket til
"C:\\Programmer\\Microsoft Platform SDK\\Lib\\User32.Lib" SpeC|DK - #SpeC.DK @ Q-NET



Prøv at sætte X i Project -> Settings -> Link -> Ignore all default libraries og så specificere alle lib's.



Prøv at sætte X i Project -> Settings -> Link -> Ignore all default libraries og så specificere alle lib's.

specificere alle lib's? hvilke lib's ?
- SpeC|DK - #SpeC.DK @ Q-NET



<< < 123 > >>
t