Creating flash animation using .hDC emulation in SWF Scout and WinGDI functions in Visual C++
Submitted by eLenka on 22 April, 2011 - 15:23
Using WinGDI functions and .hDC emulation in SWF Scout to draw flash animations using WinGDI functions
This example demonstrates how to use existing WinGDI code to convert it to flash animation using .hDC emulation in SWF Scout
Produced flash movie (HelloWorld_WithhDC.swf):
Source code (helloworld.cpp, Visual C++):
// HelloWorld.cpp : Defines the entry point for the console application. // #include "stdafx.h" #import "SWFScout.tlb" using namespace SWFScout; int main(int argc, char* argv[]) { // initialize OLE HRESULT hr = CoInitialize(NULL); // check for errors if (FAILED(hr)) { MessageBox(0,"OLE initialization errp","error",MB_OK); return -1; } // declare SWFScout object IFlashMovie* Movie = NULL; long Shape, Font, Text; CLSID clsid; // get inuque ID for IFlashMovie interface hr = CLSIDFromProgID(OLESTR("SWFScout.FlashMovie"), &clsid); // check for errors if (FAILED(hr)) { MessageBox(0,"Can't get CLSID for interface","error",MB_OK); goto Uninit; }; // create FlashMovie object hr = CoCreateInstance(clsid, NULL, CLSCTX_ALL,__uuidof(IFlashMovie), (LPVOID*)&Movie); // check for errors if (FAILED(hr)) { MessageBox(0,"Can't create Movie object","error",MB_OK); goto Uninit; } // initialize library Movie->InitLibrary("demo", "demo"); // start movie generation Movie->BeginMovie(0,0,640,480,sscTwips, 12,6); // drawing on a rectangle via WinAPI GDI functions RECT rRect; rRect.top = 0; rRect.left= 0; rRect.right= 640; rRect.bottom=480; long SymbolsCount = 42; // number of symbols in "Hello! Test using .hDC and WinGDI's DrawText" string DrawText((HDC)Movie->HDC,"Hello! Test using .hDC and WinGDI DrawText",SymbolsCount,&rRect,DT_CENTER); Movie->PlaceFromHDC(Movie->CurrentMaxDepth); // place shape into current depth Movie->ShowFrame(1); // show 10 frames Movie->EndMovie(); // end movie generation Movie->SaveToFile("HelloWorld_WithhDC.swf"); // save generated SWF into file // disconnect from library Movie->Release(); // uninitialize OLE libraries Uninit: CoUninitialize(); return 0; }
Download source code: