Here is a helper function I wrote that some of you may find useful if you would like your project to show a jpg or similar image file, this function can be called from your program. Just cut/paste it into your program to use it.
It requires that you are running windows XP, with windows installed in C:\Windows. If windows is installed in a different location, adjust the pictureViewerParameters variable to point to the correct location.
#include <iostream>
#include <string>
// the windows.h include file contains the basic win32 function calls
// this includes the functions we need to spawn a picture viewer
#include <windows.h>
using namespace std;
////////////////////////////////////////////////////////////////////////////////
// showPicture Function
//
// the first function parameter takes the full path name of the picture to view
// the second parameter can be true/false and if true will wait until
// the picture view is closed before exiting.
//
// Just copy this function into your project to use it to view pictures
// main() contains a quick example on how to use it
//
void showPicture( string pictureFileName, bool waitUntilViewerClosed = false )
{
// we are going to run a program in a DLL (shimgvw.dll) to view a picture
string pictureViewerProgram = "rundll32.exe";
// build out parameter string
string pictureViewerParameters = "c:\\windows\\System32\\shimgvw.dll,ImageView_Fullscreen";
pictureViewerParameters += " " + pictureFileName;
// fill in the SHELLEXECUTEINFO struct with information about the program to run
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = pictureViewerProgram.c_str();
ShExecInfo.lpParameters = pictureViewerParameters.c_str();
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
// ShellExecuteEx will run our command
ShellExecuteEx(&ShExecInfo);
// We can optionally wait for the program we spawned to finish
if ( waitUntilViewerClosed )
{
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
}
}
//
////////////////////////////////////////////////////////////////////////////////
void main( )
{
// note that the folders are seperated by two \. This is because \ is an
// escape character (e.g. \n or \t) thus \ is represented by \\.
string pictureFileName1 = "C:\\WINDOWS\\Web\\Wallpaper\\Stonehenge.jpg";
string pictureFileName2 = "C:\\WINDOWS\\Web\\Wallpaper\\Red moon desert.jpg";
showPicture( pictureFileName1, true );
showPicture( pictureFileName2, true );
return;
}