// DEMO3_2.CPP - Loading .WAV resources
// INCLUDES ///////////////////////////////////////////////
#define WIN32_LEAN_AND_MEAN // just say no to MFC
#include <windows.h> // include all the windows headers
#include <windowsx.h> // include useful macros
#include <mmsystem.h> // very important and include WINMM.LIB too!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "DEMO3_2RES.H"
// DEFINES ////////////////////////////////////////////////
// defines for windows
#define WINDOW_CLASS_NAME "WINCLASS1"
// GLOBALS ////////////////////////////////////////////////
HWND main_window_handle = NULL; // globally track main window
HINSTANCE hinstance_app = NULL; // globally track hinstance
// FUNCTIONS //////////////////////////////////////////////
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT msg,
WPARAM wparam,
LPARAM lparam)
{
// this is the main message handler of the system
PAINTSTRUCT ps; // used in WM_PAINT
HDC hdc; // handle to a device context
// what is the message
switch(msg)
{
case WM_CREATE:
{
// do initialization stuff here
// play the create sound once
PlaySound(MAKEINTRESOURCE(SOUND_ID_CREATE), hinstance_app, SND_RESOURCE | SND_SYNC);
// play the music in loop mode
PlaySound(MAKEINTRESOURCE(SOUND_ID_MUSIC), hinstance_app, SND_RESOURCE | SND_ASYNC | SND_LOOP);
// return success
return(0);
} break;
case WM_PAINT:
{
// simply validate the window
hdc = BeginPaint(hwnd,&ps);
// you would do all your painting here
EndPaint(hwnd,&ps);
// return success
return(0);
} break;
case WM_DESTROY:
{
// stop the sounds first
PlaySound(NULL, hinstance_app, SND_PURGE);
// kill the application, this sends a WM_QUIT message
PostQuitMessage(0);
// return success
return(0);
} break;
default:break;
} // end switch
// process any messages that we didn't take care of
return (DefWindowProc(hwnd, msg, wparam, lparam));
} // end WinProc
// WINMAIN ////////////////////////////////////////////////
int WINAPI WinMain( HINSTANCE hinstance,
HINSTANCE hprevinstance,
LPSTR lpcmdline,
int ncmdshow)
{
WNDCLASSEX winclass; // this will hold the class we create
HWND hwnd; // generic window handle
MSG msg; // generic message
// first fill in the window class stucture
winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_DBLCLKS | CS_OWNDC |
CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc = WindowProc;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hinstance;
winclass.hIcon = LoadIcon(hinstance, MAKEINTRESOURCE(ICON_T3DX));
winclass.hCursor = LoadCursor(hinstance, MAKEINTRESOURCE(CURSOR_CROSSHAIR));
winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WINDOW_CLASS_NAME;
winclass.hIconSm = LoadIcon(hinstance, MAKEINTRESOURCE(ICON_T3DX));
// save hinstance in global
hinstance_app = hinstance;
// register the window class
if (!RegisterClassEx(&winclass))
return(0);
// create the window
if (!(hwnd = CreateWindowEx(NULL, // extended style
WINDOW_CLASS_NAME, // class
"Sound Resource Demo", // title
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0,0, // initial x,y
400,400, // initial width, height
NULL, // handle to parent
NULL, // handle to menu
hinstance,// instance of this application
NULL))) // extra creation parms
return(0);
// save main window handle
main_window_handle = hwnd;
// enter main event loop, but this time we use PeekMessage()
// instead of GetMessage() to retrieve messages
while(TRUE)
{
// test if there is a message in queue, if so get it
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
// test if this is a quit
if (msg.message == WM_QUIT)
break;
// translate any accelerator keys
TranslateMessage(&msg);
// send the message to the window proc
DispatchMessage(&msg);
} // end if
// main game processing goes here
// Game_Main(); // or whatever your loop is called
} // end while
// return to Windows like this
return(msg.wParam);
} // end WinMain
///////////////////////////////////////////////////////////
SAMS chapter3_demo2 error
sup,
just getting into how to play sounds on a basic window. I receive this error from the build.
1>------ Build started: Project: chapter3_demo2, Configuration: Debug Win32 ------
1>Linking...
1>demo3_2.obj : error LNK2019: unresolved external symbol __imp__PlaySoundA@12 referenced in function "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z)
1>Debug\chapter3_demo2.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://c:\Documents and Settings\Codes\T3DCHAP03\Copy (2) of 1\Debug\BuildLog.htm"
1>chapter3_demo2 - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
jlewicki,
This is what we call a "link error." It means that your compiler was able to recognize the function named "PlaySound" as a valid function - which means you provided the correct header file, but when it came time to link your application with all the necessary system libraries it was unable to find the actual implementation of that function. Which means you're missing a library. In this case, you're missing "Winmm.lib". Add that to your linkers list of used libraries, and your application should link just fine.
Cheers and good luck!
This is what we call a "link error." It means that your compiler was able to recognize the function named "PlaySound" as a valid function - which means you provided the correct header file, but when it came time to link your application with all the necessary system libraries it was unable to find the actual implementation of that function. Which means you're missing a library. In this case, you're missing "Winmm.lib". Add that to your linkers list of used libraries, and your application should link just fine.
Cheers and good luck!
thanks for the response,
searched windows for the .lib file found 3 versions:
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib\AMD64
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib\IE64
went to Tools->Options->Projects and Solutions->VC++ Directories->libraries and added:
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib
saved and restarted, still no go.
searched windows for the .lib file found 3 versions:
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib\AMD64
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib\IE64
went to Tools->Options->Projects and Solutions->VC++ Directories->libraries and added:
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib
saved and restarted, still no go.
Thats because you did not add the file to link, you told the compiler where to check for libraries, you need to go to project options linker additional dependencies, add the library name there and it will link to it.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement