Game Career Guide Forums

Game Career Guide Forums (http://www.gamecareerguide.com/forums/index.php)
-   Programming (http://www.gamecareerguide.com/forums/forumdisplay.php?f=7)
-   -   Win32 Help (http://www.gamecareerguide.com/forums/showthread.php?t=5512)

Rybo5000 11-06-2011 01:37 AM

Win32 Help
 
My problem is that the colour of each window is supposed to be different but they're all white. Not sure what problem is, any help would be great!

:)

Quote:

#include <windows.h>
// Store handles to the main window and application
// instance globally.
HWND ghMainWnd = 0;
HWND ghSecWnd = 0;
HWND ghThdWnd = 0;
HINSTANCE ghAppInst = 0;
// Step 1: Define and implement the window procedure.
LRESULT CALLBACK
WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch( msg )
{
// Handle left mouse button click message.
case WM_LBUTTONDOWN:
if(hWnd == ghMainWnd)
{
MessageBox(0, "You clicked the main window.", "Msg", MB_OK);
return 0;
}
if(hWnd == ghSecWnd)
{
MessageBox(0, "You clicked the secondary window.", "Msg", MB_OK);
return 0;
}
if(hWnd == ghThdWnd)
{
MessageBox(0, "You clicked the third window.", "Msg", MB_OK);
return 0;
}
// Handle key down message.
case WM_KEYDOWN:
if( wParam == VK_ESCAPE )
//Excersise 14.6.1
if(MessageBox(0,"Are you sure?","Exit",MB_YESNO) == IDYES)
{
DestroyWindow(ghMainWnd);
return 0;
}
break;
// Handle destroy window message.
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}

// Forward any other messages we didn't handle to the
// default window procedure.
return DefWindowProc(hWnd, msg, wParam, lParam);
}

// WinMain: Entry point for a Windows application.
int WINAPI
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR cmdLine, int showCmd)
{
//14.6.5
HBRUSH blueBrush = CreateSolidBrush(RGB(0,0,255));
HBRUSH randBrush = CreateSolidBrush(RGB(5,100,200));
//End 14.6.5

// Save handle to application instance.
ghAppInst = hInstance;
// Step 2: Fill out a WNDCLASS instance.
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = ghAppInst;
wc.hIcon = ::LoadIcon(0, IDI_APPLICATION);
wc.hCursor = ::LoadCursor(0, IDC_ARROW);
wc.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = 0;
wc.lpszClassName = "MyWndClassName";
WNDCLASS wc2 = wc;
WNDCLASS wc3 = wc;
wc2.hbrBackground = blueBrush;
wc3.hbrBackground = randBrush;
// Step 3: Register the WNDCLASS instance with Windows.
RegisterClass( &wc );
RegisterClass( &wc2);
RegisterClass( &wc3);
// Step 4: Create the window, and save handle in global
// window handle variable ghMainWnd.
//Exercise 14.6.2 and 14.6.3
ghMainWnd = ::CreateWindow("MyWndClassName", "MyWindow", WS_OVERLAPPEDWINDOW|WS_VSCROLL|WS_HSCROLL, 0, 0, 300, 300, 0, 0, ghAppInst, 0);
ghSecWnd = ::CreateWindow("MyWndClassName", "MyWindow2", WS_OVERLAPPEDWINDOW|WS_VSCROLL|WS_HSCROLL, 300, 0, 300, 300, 0, 0, ghAppInst, 0);
ghThdWnd = ::CreateWindow("MyWndClassName", "MyWindow3", WS_OVERLAPPEDWINDOW|WS_VSCROLL|WS_HSCROLL, 0, 300, 300, 300, 0, 0, ghAppInst, 0);
if(ghMainWnd == 0)
{
::MessageBox(0, "CreateWindow1 - Failed", 0, 0);
return false;
}
if(ghSecWnd == 0)
{
::MessageBox(0, "CreateWindow2 - Failed", 0, 0);
return false;
}
if(ghThdWnd == 0)
{
::MessageBox(0, "CreateWindow3 - Failed", 0, 0);
return false;
}

// Step 5: Show and update the window.
ShowWindow(ghMainWnd, showCmd);
ShowWindow(ghSecWnd, showCmd);
ShowWindow(ghThdWnd, showCmd);
UpdateWindow(ghMainWnd);
UpdateWindow(ghSecWnd);
UpdateWindow(ghThdWnd);
// Step 6: Enter the message loop and don't quit until
// a WM_QUIT message is received.
MSG msg;
ZeroMemory(&msg, sizeof(MSG));
while( GetMessage(&msg, 0, 0, 0) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

// Return exit code back to operating system.
return (int)msg.wParam;
}

gamez 11-12-2011 10:56 AM

Re: Win32 Help
 
you have to give each WNDCLASS a different name and use it when you create a window.

wc.lpszClassName = "MyWndClassName";
wc2.lpszClassName = "MyWndClassName2";

ghMainWnd = ::CreateWindow("MyWndClassName", "MyWindow", WS_OVERLAPPEDWINDOW|WS_VSCROLL|WS_HSCROLL, 0, 0, 300, 300, 0, 0, ghAppInst, 0);
ghSecWnd = ::CreateWindow("MyWndClassName2", "MyWindow2", WS_OVERLAPPEDWINDOW|WS_VSCROLL|WS_HSCROLL, 300, 0, 300, 300, 0, 0, ghAppInst, 0);


All times are GMT -8. The time now is 12:38 AM.

Powered by vBulletin® Version 3.6.9
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.