c++操作falsh,忘了原文在哪了,自己尝试了,直接贴代码
1 // SDK版本 2 //////////////////////////////////////////////////////////////////////////////// 3 // Use swflash.ocx to play flash 4 // if it works, it is written by masterz, otherwise I don't know who writes it(*_*) 5 //////////////////////////////////////////////////////////////////////////////// 6 //#include "stdafx.h" 7 //#import "c:\windows\system32\macromed\flash\swflash.ocx" 8 #import "C:\WINDOWS\system32\Macromed\Flash\Flash32_11_8_800_94.ocx" 9 #include <atlbase.h> 10 CComModule _Module; 11 #include <atlwin.h> 12 #include <windows.h> 13 #include "stdio.h" 14 #pragma comment(lib,"atl") 15 #define ODS(x) OutputDebugString(x) 16 #define MAX_LOADSTRING 100 17 18 // Global Variables: 19 20 HINSTANCE hInst; // current instance 21 TCHAR szTitle[MAX_LOADSTRING]; // The title bar text 22 TCHAR szWindowClass[MAX_LOADSTRING]; // The title bar text 23 CAxWindow m_container; 24 using namespace ShockwaveFlashObjects; 25 IShockwaveFlash* shwaveflash; 26 27 HWND heditfilepath; 28 29 // Foward declarations of functions included in this code module: 30 ATOM MyRegisterClass(HINSTANCE hInstance); 31 BOOL InitInstance(HINSTANCE, int); 32 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 33 34 int APIENTRY WinMain(HINSTANCE hInstance, 35 HINSTANCE hPrevInstance, 36 LPSTR lpCmdLine, 37 int nCmdShow) 38 { 39 MSG msg; 40 // Initialize global strings 41 wsprintf(szTitle, _T("use flash control in sdk exe")); 42 wsprintf(szWindowClass, _T("flashinsdk")); 43 MyRegisterClass(hInstance); 44 CoInitialize(NULL); 45 // Perform application initialization: 46 if (!InitInstance (hInstance, nCmdShow)) 47 return FALSE; 48 while (GetMessage(&msg, NULL, 0, 0)) 49 { 50 TranslateMessage(&msg); 51 DispatchMessage(&msg); 52 } 53 CoUninitialize(); 54 return msg.wParam; 55 } 56 57 // FUNCTION: MyRegisterClass() 58 // PURPOSE: Registers the window class. 59 ATOM MyRegisterClass(HINSTANCE hInstance) 60 { 61 WNDCLASSEX wcex; 62 wcex.cbSize = sizeof(WNDCLASSEX); 63 wcex.style = CS_HREDRAW | CS_VREDRAW; 64 wcex.lpfnWndProc = (WNDPROC)WndProc; 65 wcex.cbClsExtra = 0; 66 wcex.cbWndExtra = 0; 67 wcex.hInstance = hInstance; 68 wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION); 69 wcex.hCursor = LoadCursor(NULL, IDC_ARROW); 70 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); 71 wcex.lpszMenuName = NULL;//(LPCSTR)IDC_FLSH; 72 wcex.lpszClassName = szWindowClass; 73 wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION); 74 return RegisterClassEx(&wcex); 75 } 76 77 // FUNCTION: InitInstance(HANDLE, int) 78 // PURPOSE: Saves instance handle and creates main window 79 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) 80 { 81 HWND hWnd; 82 hInst = hInstance; // Store instance handle in our global variable 83 AtlAxWinInit(); 84 hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, 85 CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); 86 if (!hWnd) 87 return FALSE; 88 ShowWindow(hWnd, nCmdShow); 89 UpdateWindow(hWnd); 90 return TRUE; 91 } 92 93 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 94 { 95 int wmId, wmEvent; 96 PAINTSTRUCT ps; 97 HDC hdc; 98 TCHAR szHello[MAX_LOADSTRING]; 99 wsprintf(szHello, _T("use flash control in sdk")); 100 HWND hbtnstart; 101 RECT rc; 102 switch (message) 103 { 104 case WM_CREATE: 105 GetClientRect(hWnd, &rc ); 106 rc.top = 100; 107 m_container.Create( hWnd, rc, _T("{D27CDB6E-AE6D-11cf-96B8-444553540000}"),WS_CHILD |WS_VISIBLE |WS_HSCROLL |WS_VSCROLL );//create a browser control 108 hbtnstart=CreateWindow(_T("BUTTON"), _T("play"), WS_CHILD|WS_VISIBLE,0,0,120,30,hWnd,(HMENU)0x100,hInst,0); 109 heditfilepath=CreateWindow(_T("EDIT"), _T("filepath"),WS_CHILD |WS_VISIBLE |WS_BORDER,0,40,420,30,hWnd,(HMENU)0x101,hInst,0); 110 SetWindowText(heditfilepath, _T("E:\\test\\c++\\flashocx\\Debug\\loginui.swf")); 111 m_container.QueryControl( __uuidof(IShockwaveFlash), reinterpret_cast<void**>(&shwaveflash) ); 112 break; 113 case WM_SIZING: 114 GetClientRect(hWnd, &rc ); 115 rc.top = 100; 116 m_container.MoveWindow(&rc,true); 117 shwaveflash->SetZoomRect( 0, 0, rc.right - rc.left, rc.bottom - rc.top ); 118 break; 119 case WM_COMMAND: 120 wmId = LOWORD(wParam); 121 wmEvent = HIWORD(wParam); 122 // Parse the menu selections: 123 switch (wmId) 124 { 125 case 0x100: 126 { 127 ODS(_T("0x100")); 128 wchar_t buf[256]; 129 GetWindowText(heditfilepath, (LPWSTR)buf,255); 130 _bstr_t bstr((wchar_t*)buf); 131 //ODS(buf); 132 //bstr=_bstr_t(_T("c:\\2.1.swf")); 133 //bstr=_bstr_t(_T("E:\\test\\c++\\flashocx\\Debug\\loginui.swf")); 134 if(shwaveflash->put_Movie(bstr)!=S_OK){// you have to change the path here 135 ODS(_T("load movie error")); 136 }else{ 137 shwaveflash->Play(); 138 shwaveflash->SetVariable(_bstr_t(_T("user")), _bstr_t(_T("testuser"))); 139 shwaveflash->SetVariable(_bstr_t(_T("password")), _bstr_t(_T("password"))); 140 GetClientRect(hWnd, &rc ); 141 shwaveflash->SetZoomRect( 0, 0, rc.right - rc.left, rc.bottom - rc.top ); 142 shwaveflash->PutMenu( false ); 143 } 144 } 145 break; 146 default: 147 return DefWindowProc(hWnd, message, wParam, lParam); 148 } 149 break; 150 case WM_PAINT: 151 hdc = BeginPaint(hWnd, &ps); 152 RECT rt; 153 GetClientRect(hWnd, &rt); 154 DrawText(hdc, szHello, strlen((const char*)szHello), &rt, DT_CENTER); 155 EndPaint(hWnd, &ps); 156 break; 157 case WM_DESTROY: 158 PostQuitMessage(0); 159 break; 160 default: 161 return DefWindowProc(hWnd, message, wParam, lParam); 162 } 163 return 0; 164 165 }
下面是尝试的swf