Can anyone shed light on what MS has changed about them
example this code generates a ton of weird errors
#include <windows.h> class CIGECORE { public: LPSTR sAppTitle; int iPosX; int iPosY; int iWidth; int iHeight; }; |
#include <windows.h> class CIGECORE { public: LPSTR sAppTitle; int iPosX; int iPosY; int iWidth; int iHeight; }; |
Using Classes and Structs
Siupo
Windows.cpp
#pragma lib("user32.lib")
#define WIN32_LEAN_AND_MEAN // DO NOT USE MFC
#include <windows.h>
#include <windowsx.h>
#include "IGE.h"
#include "main.h"
#define WINDOWSCLASS "WINCLASS1" // DECLARE WINCLASS CONSTANT
CIGECORE IGECORE;
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
// EVENT HANDELER/////////////////////////////////////////////////////////////
{
PAINTSTRUCT ps;
HDC hdc;
switch(msg)
{
case WM_CREATE:
{
// WINDOW CREATION CODE
return(0);
}break;
case WM_PAINT:
{
hdc = BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps);
return(0);
}break;
case WM_DESTROY:
{
PostQuitMessage(0);
return(0);
}break;
default:break;
}
return(DefWindowProc(hwnd,msg,wparam,lparam));
}
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance,
LPSTR lpcmdline, int ncmdshow)
// WIN MAIN /////////////////////////////////////////////////////////////
{
WNDCLASSEX winclass;
HWND hwnd;
MSG msg;
winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_HREDRAW;
winclass.lpfnWndProc = WindowProc;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hinstance;
winclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WINDOWSCLASS;
winclass.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
if(!RegisterClassEx(&winclass)){
return(0);
}
if(!(hwnd = CreateWindowEx(NULL,WINDOWSCLASS,IGECORE.sAppTitle,WS_OVERLAPPEDWINDOW | WS_VISIBLE,
IGECORE.iPosX,IGECORE.iPosY,IGECORE.iWidth,IGECORE.iHeight,NULL,NULL,hinstance,NULL)))
{
return(0);
}
while(TRUE)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if(msg.message == WM_QUIT)
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
IGERUNTIME();
}
}
------ Build started: Project: Insane Game Engine, Configuration: Debug Win32 ------
Compiling...
Windows.cpp
.\Windows.cpp(7) : warning C4068: unknown pragma
c:\documents and settings\owner\my documents\visual studio\projects\insane game engine\insane game engine\windows.cpp(93) : warning C4715: 'WinMain' : not all control paths return a value
Linking...
Windows.obj : error LNK2019: unresolved external symbol __imp__PostQuitMessage@4 referenced in function "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" ( WindowProc@@YGJPAUHWND__@@IIJ@Z)
Windows.obj : error LNK2019: unresolved external symbol __imp__EndPaint@8 referenced in function "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" ( WindowProc@@YGJPAUHWND__@@IIJ@Z)
Windows.obj : error LNK2019: unresolved external symbol __imp__BeginPaint@8 referenced in function "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" ( WindowProc@@YGJPAUHWND__@@IIJ@Z)
Windows.obj : error LNK2019: unresolved external symbol __imp__DefWindowProcA@16 referenced in function "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" ( WindowProc@@YGJPAUHWND__@@IIJ@Z)
Windows.obj : error LNK2019: unresolved external symbol __imp__DispatchMessageA@4 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__TranslateMessage@4 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__PeekMessageA@20 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__CreateWindowExA@48 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__RegisterClassExA@4 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__GetStockObject@4 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__LoadCursorA@8 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__LoadIconA@8 referenced in function _WinMain@16
C:\Documents and Settings\Owner\My Documents\Visual Studio\Projects\Insane Game Engine\Debug\Insane Game Engine.exe : fatal error LNK1120: 12 unresolved externals
Build log was saved at "file://c:\Documents and Settings\Owner\My Documents\Visual Studio\Projects\Insane Game Engine\Insane Game Engine\Debug\BuildLog.htm"
Insane Game Engine - 13 error(s), 2 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Christian Nordbakk
I tried the sample you provided and it compiled with no errors. What kind of errors you are seeing
Thanks,
Ayman Shoukry
VC++ Team
Phreddy
Anyway, made those changes.
Now I got 12 linker errors :x
------ Build started: Project: Insane Game Engine, Configuration: Debug Win32 ------
Compiling...
Windows.cpp
c:\documents and settings\owner\my documents\visual studio\projects\insane game engine\insane game engine\windows.cpp(91) : warning C4715: 'WinMain' : not all control paths return a value
Linking...
Windows.obj : error LNK2005: "void __cdecl IGERUNTIME(void)" ( IGERUNTIME@@YAXXZ) already defined in main.obj
Windows.obj : error LNK2019: unresolved external symbol __imp__PostQuitMessage@4 referenced in function "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" ( WindowProc@@YGJPAUHWND__@@IIJ@Z)
Windows.obj : error LNK2019: unresolved external symbol __imp__EndPaint@8 referenced in function "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" ( WindowProc@@YGJPAUHWND__@@IIJ@Z)
Windows.obj : error LNK2019: unresolved external symbol __imp__BeginPaint@8 referenced in function "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" ( WindowProc@@YGJPAUHWND__@@IIJ@Z)
Windows.obj : error LNK2019: unresolved external symbol __imp__DefWindowProcA@16 referenced in function "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" ( WindowProc@@YGJPAUHWND__@@IIJ@Z)
Windows.obj : error LNK2019: unresolved external symbol __imp__DispatchMessageA@4 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__TranslateMessage@4 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__PeekMessageA@20 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__CreateWindowExA@48 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__RegisterClassExA@4 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__GetStockObject@4 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__LoadCursorA@8 referenced in function _WinMain@16
Windows.obj : error LNK2019: unresolved external symbol __imp__LoadIconA@8 referenced in function _WinMain@16
C:\Documents and Settings\Owner\My Documents\Visual Studio\Projects\Insane Game Engine\Debug\Insane Game Engine.exe : fatal error LNK1120: 12 unresolved externals
Build log was saved at "file://c:\Documents and Settings\Owner\My Documents\Visual Studio\Projects\Insane Game Engine\Insane Game Engine\Debug\BuildLog.htm"
Insane Game Engine - 14 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Krishna Tangriala
Windows.cpp this is the windows code, I basically need all the functions and classes in the headers to be able to be used in Windows.cpp.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <windowsx.h>
#include "IGE.h"
#include "main.cpp"
#define WINDOWSCLASS "WINCLASS1"
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
PAINTSTRUCT ps;
HDC hdc;
switch(msg)
{
case: WM_CREATE
{
CIGECORE IGECORE;
return(0);
}break;
case:WM_PAINT
{
hdc = BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps);
return(0);
}break;
case WMDESTROY
{
PostQuitMessage(0);
return(0);
}break;
default:break;
}
return(DefWindowProc(hwnd,msg.wparam,lparam));
}
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance,
LPSTR lpcmdline, int ncmdshow)
{
WNDCLASSEX winclass;
HWND hwnd;
MSG msg;
winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_HREDRAW;
winclass.lpfnWndProc = WindowProc;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hinstance;
winclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WINDOWSCLASS;
winclass.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
if(!RegisterClassEx(&winclass)){
return(0);
}
if(!(hwnd = CreateWindowEx(NULL,WINDOWSCLASS,IGECORE.sAppTitle,WS_OVERLAPPEDWINDOW | WS_VISIBLE,
IGECORE.iPosX,IGECORE.iPosY,IGECORE.iWidth,IGECORE.iHeight,NULL,NULL,hinstance,NULL)))
{
return(0);
}
while(TRUE)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if(msg.message == WM_QUIT)
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
IGERUNTIME();
}
}
Here is IGE.h this contains the CIGECORE class.
class CIGECORE
{
public:
LPSTR sAppTitle;
int iPosX;
int iPosY;
int iWidth;
int iHeight;
};
Here is main.cpp this contains the function that executes the game code. All the code the user types with be put into main.cpp into the function IGERUNTIME.
void IGERUNTIME(){
}
------ Build started: Project: Insane Game Engine, Configuration: Debug Win32 ------
Compiling...
Windows.cpp
.\Windows.cpp(24) : error C2059: syntax error : ':'
.\Windows.cpp(25) : error C2143: syntax error : missing ';' before '{'
.\Windows.cpp(30) : error C2059: syntax error : ':'
.\Windows.cpp(31) : error C2143: syntax error : missing ';' before '{'
.\Windows.cpp(37) : error C2065: 'WMDESTROY' : undeclared identifier
.\Windows.cpp(37) : error C2143: syntax error : missing ':' before '{'
.\Windows.cpp(37) : error C2051: case expression not constant
.\Windows.cpp(43) : error C2228: left of '.wparam' must have class/struct/union
type is 'UINT'
.\Windows.cpp(43) : error C2660: 'DefWindowProcA' : function does not take 3 arguments
.\Windows.cpp(71) : error C2065: 'IGECORE' : undeclared identifier
.\Windows.cpp(71) : error C2228: left of '.sAppTitle' must have class/struct/union
type is ''unknown-type''
.\Windows.cpp(72) : error C2228: left of '.iPosX' must have class/struct/union
type is ''unknown-type''
.\Windows.cpp(72) : error C2228: left of '.iPosY' must have class/struct/union
type is ''unknown-type''
.\Windows.cpp(72) : error C2228: left of '.iWidth' must have class/struct/union
type is ''unknown-type''
.\Windows.cpp(72) : error C2228: left of '.iHeight' must have class/struct/union
type is ''unknown-type''
main.cpp
Generating Code...
Build log was saved at "file://c:\Documents and Settings\Owner\My Documents\Visual Studio\Projects\Insane Game Engine\Insane Game Engine\Debug\BuildLog.htm"
Insane Game Engine - 15 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Jules Decontieur
windows.cpp
#define WIN32_LEAN_AND_MEAN // DO NOT USE MFC
#include <windows.h> // WINDOWS HEADER FILES
#include <windowsx.h> // EXTRA DEFINES MACROS ETC
#include "IGE.h"
#include "IGE2D.h"
#include "IGE3D.h"
#include "IGENETWORK.h"
#include "IGEPHYSICS.h"
#include "main.cpp"
#define WINDOWSCLASS "WINCLASS1" // DECLARE WINCLASS CONSTANT
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
// EVENT HANDELER/////////////////////////////////////////////////////////////
{
PAINTSTRUCT ps;
HDC hdc;
switch(msg)
{
case: WM_CREATE:
{
// WINDOW CREATION CODE
CIGECORE IGECORE;
CIGE2D IGE2D;
CIGE3D IGE3D;
CIGENETWORK IGENETWORK;
CIGEPHYSICS IGEPHYSICS;
return(0);
}break;
case:WM_PAINT
{
hdc = BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps);
return(0);
}break;
case WMDESTROY
{
PostQuitMessage(0);
return(0);
}break;
default:break;
}
return(DefWindowProc(hwnd,msg.wparam,lparam));
}
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance,
LPSTR lpcmdline, int ncmdshow)
// WIN MAIN /////////////////////////////////////////////////////////////
{
WNDCLASSEX winclass;
HWND hwnd;
MSG msg;
winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_HREDRAW;
winclass.lpfnWndProc = WindowProc;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hinstance;
winclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WINDOWSCLASS;
winclass.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
if(!RegisterClassEx(&winclass)){
return(0);
}
if(!(hwnd = CreateWindowEx(NULL,WINDOWSCLASS,IGECORE.sAppTitle,WS_OVERLAPPEDWINDOW | WS_VISIBLE,
IGECORE.iPosX,IGECORE.iPosY,IGECORE.iWidth,IGECORE.iHeight,NULL,NULL,hinstance,NULL)))
{
return(0);
}
while(TRUE)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if(msg.message == WM_QUIT)
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
IGERUNTIME();
}
}
zshahin
case: WM_CREATE
For a case statement, the : comes at the end, not the middle
case WMDESTROY
it's WM_DESTROY
IGECORE.iPosX,IGECORE.iPosY,IGECORE.iWidth,IGECORE.iHeight
case WM_CREATE:
{
// WINDOW CREATION CODECIGECORE IGECORE;
return(0);}
break;The {} define a scope. Your CIGECORE instance exists for but a moment. I also don't see anywhere that you initialise it's values. It certainly does not exist when you're trying to use it.
return(DefWindowProc(hwnd,msg.wparam,lparam));
msg.wparam should be msg, wparam.
In other words, Microsoft have made no changes to how structs and classes work, but your code is completely riddled with errors.
Robin Davies
kezhu
cgarfer
Now only these 2.
Compiling...
Windows.cpp
c:\documents and settings\owner\my documents\visual studio\projects\insane game engine\insane game engine\windows.cpp(91) : warning C4715: 'WinMain' : not all control paths return a value
Linking...
Windows.obj : error LNK2019: unresolved external symbol __imp__GetStockObject@4 referenced in function _WinMain@16
C:\Documents and Settings\Owner\My Documents\Visual Studio\Projects\Insane Game Engine\Debug\Insane Game Engine.exe : fatal error LNK1120: 1 unresolved externals
Build log was saved at "file://c:\Documents and Settings\Owner\My Documents\Visual Studio\Projects\Insane Game Engine\Insane Game Engine\Debug\BuildLog.htm"
Insane Game Engine - 2 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
SmSm241
void
IGERUNTIME();and add #include "main.h" at the top of main.cpp. Then change your #include in windows.cpp to be main.h.
Mr Parker
A struct is just a class whose members default to public access ( for a class, it's private ). I doubt very much that Microsoft have changed anything to do with classes and structs.
A .NET class and a .NET struct is a very different beast, and if you're using C++/CLI, you may have to do some reading there, but in straight C++, the difference is trivial.
Niel-O
Nico1947
c:\documents and settings\owner\my documents\visual studio\projects\insane game engine\insane game engine\IGE.h(11) : error C2143: syntax error : missing ';' before '<class-head>'
c:\documents and settings\owner\my documents\visual studio\projects\insane game engine\insane game engine\IGE.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\documents and settings\owner\my documents\visual studio\projects\insane game engine\insane game engine\IGE.h(11) : error C2011: 'CIGECORE' : 'class' type redefinition
c:\documents and settings\owner\my documents\visual studio\projects\insane game engine\insane game engine\IGE.h(11) : see declaration of 'CIGECORE'
c:\documents and settings\owner\my documents\visual studio\projects\insane game engine\insane game engine\IGE.h(18) : fatal error C1903: unable to recover from previous error(s); stopping compilation
main.cpp
c:\documents and settings\owner\my documents\visual studio\projects\insane game engine\insane game engine\IGE.h(11) : error C2143: syntax error : missing ';' before '<class-head>'
c:\documents and settings\owner\my documents\visual studio\projects\insane game engine\insane game engine\IGE.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
I started a blank project.
namlow
Why does windows.cpp #include main.cpp