📄 20010322003.htm
字号:
Owner);<BR><BR>};<BR><BR> <BR><BR>2.3.4.3 程序文件main.cpp<BR><BR>#include
<vcl.h><BR><BR>#pragma hdrstop<BR><BR> <BR><BR>#include
"main.h"<BR><BR>//---------------------------------------------------------------------------<BR><BR>#pragma
package(smart_init)<BR><BR>#pragma resource "*.dfm"<BR><BR>TForm1
*Form1;<BR><BR>//---------------------------------------------------------------------------<BR><BR>__fastcall
TForm1::TForm1(TComponent* Owner)<BR><BR>:
TForm(Owner)<BR><BR>{<BR><BR>}<BR><BR>//---------------------------------------------------------------------------<BR><BR>void
__fastcall TForm1::Button1Click(TObject
*Sender)<BR><BR>{<BR><BR>if(!FAILED(DirectDrawCreate(NULL,&lpDD,NULL)))<BR><BR>{<BR><BR>if(!FAILED(lpDD->QueryInterface(IID_IDirectDraw2,(LPVOID
*)&lpDD2)))<BR><BR>{<BR><BR>lpDD->Release();<BR><BR>if(!FAILED(lpDD2->SetCooperativeLevel(Handle,<BR><BR>DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN|DDSCL_NOWINDOWCHANGES)))<BR><BR>{<BR><BR>if(!FAILED(lpDD2->SetDisplayMode(800,600,16,0,0)))<BR><BR>{<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Create
DirectDraw Object
OK."+(String)CR;<BR><BR>Button1->Enabled=false;<BR><BR>Button2->Enabled=true;<BR><BR>return;<BR><BR>}<BR><BR>}<BR><BR>}<BR><BR>}<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Create
DirectDraw Object
Failed."+(String)CR;<BR><BR>}<BR><BR>//---------------------------------------------------------------------------<BR><BR>void
__fastcall TForm1::Button2Click(TObject
*Sender)<BR><BR>{<BR><BR>ZeroMemory(&ddsd,sizeof(ddsd));<BR><BR>ddsd.dwSize=sizeof(ddsd);<BR><BR>ddsd.dwFlags=DDSD_CAPS;<BR><BR>ddsd.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE;<BR><BR>if(FAILED(lpDD2->CreateSurface(&ddsd,&lpDDPrimary,NULL)))<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Create
Priamry Surface
Failed."+(String)CR;<BR><BR>else<BR><BR>{<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Create
Priamry Surface
OK."+(String)CR;<BR><BR>Button2->Enabled=false;<BR><BR>Button3->Enabled=true;<BR><BR>}<BR><BR>}<BR><BR>//---------------------------------------------------------------------------<BR><BR> <BR><BR>void
__fastcall TForm1::FormClose(TObject *Sender, TCloseAction
&Action)<BR><BR>{<BR><BR>lpDD2->Release();<BR><BR>}<BR><BR>//---------------------------------------------------------------------------<BR><BR> <BR><BR>void
__fastcall TForm1::Button3Click(TObject
*Sender)<BR><BR>{<BR><BR>ZeroMemory(&ddsd,sizeof(ddsd));<BR><BR>ddsd.dwSize=sizeof(ddsd);<BR><BR>ddsd.dwFlags=DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH;<BR><BR>ddsd.dwHeight=100;<BR><BR>ddsd.dwWidth=100;<BR><BR>ddsd.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN;<BR><BR>if(FAILED(lpDD2->CreateSurface(&ddsd,&lpDDOffScreen,NULL)))<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Create
OffScreen Surface
Failed."+(String)CR;<BR><BR>else<BR><BR>{<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Create
OffScreen Surface
OK."+(String)CR;<BR><BR>Button3->Enabled=false;<BR><BR>Button4->Enabled=true;<BR><BR>}<BR><BR>}<BR><BR>//---------------------------------------------------------------------------<BR><BR> <BR><BR>void
__fastcall TForm1::Button4Click(TObject *Sender)<BR><BR>{<BR><BR>HDC
hdc,hdcImage;<BR><BR>HBITMAP
hbm;<BR><BR>hbm=(HBITMAP)LoadImage(NULL,"view.bmp",IMAGE_BITMAP,100,100,LR_LOADFROMFILE|LR_CREATEDIBSECTION);<BR><BR>hdcImage=CreateCompatibleDC(NULL);<BR><BR>SelectObject(hdcImage,hbm);<BR><BR>if(FAILED(lpDDOffScreen->GetDC(&hdc)))<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Get
DC of OffScreen Screen Surface
Failed."+(String)CR;<BR><BR>else<BR><BR>{<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Get
DC of OffScreen Screen Surface
OK."+(String)CR;<BR><BR>if(BitBlt(hdc,0,0,100,100,hdcImage,0,0,SRCCOPY)==FALSE)<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"OffScreen
Screen BitBlt
Failed."+(String)CR;<BR><BR>else<BR><BR>{<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"OffScreen
Screen BitBlt
OK."+(String)CR;<BR><BR>Button4->Enabled=false;<BR><BR>Button5->Enabled=true;<BR><BR>}<BR><BR>lpDDOffScreen->ReleaseDC(hdc);<BR><BR>}<BR><BR>if(hdcImage)
DeleteDC(hdcImage);<BR><BR>if(hbm)
DeleteObject(hbm);<BR><BR>}<BR><BR>//---------------------------------------------------------------------------<BR><BR> <BR><BR>void
__fastcall TForm1::Button5Click(TObject *Sender)<BR><BR>{<BR><BR>HDC
hdc,hdcImage;<BR><BR>HBITMAP
hbm;<BR><BR>hbm=(HBITMAP)LoadImage(NULL,"view.bmp",IMAGE_BITMAP,200,100,LR_LOADFROMFILE|LR_CREATEDIBSECTION);<BR><BR>hdcImage=CreateCompatibleDC(NULL);<BR><BR>SelectObject(hdcImage,hbm);<BR><BR>if(FAILED(lpDDPrimary->GetDC(&hdc)))<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Get
DC of Primary Screen Surface
Failed."+(String)CR;<BR><BR>else<BR><BR>{<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Get
DC of Primary Screen Surface
OK."+(String)CR;<BR><BR>if(BitBlt(hdc,0,0,200,100,hdcImage,0,0,SRCCOPY)==FALSE)<BR><BR>Memo1->Lines->Text=<BR><BR>Memo1->Lines->Text+"Primary
Screen BitBlt
Failed."+(String)CR;<BR><BR>else<BR><BR>{<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Primary
Screen BitBlt
OK."+(String)CR;<BR><BR>Button5->Enabled=false;<BR><BR>Button6->Enabled=true;<BR><BR>}<BR><BR>lpDDPrimary->ReleaseDC(hdc);<BR><BR>}<BR>if(hdcImage)
DeleteDC(hdcImage);<BR><BR>if(hbm)
DeleteObject(hbm);<BR><BR>}<BR><BR>//---------------------------------------------------------------------------<BR><BR> <BR><BR>void
__fastcall TForm1::Button6Click(TObject *Sender)<BR><BR>{<BR><BR>HDC
hdcPrimary,hdcOffScreen;<BR><BR>lpDDPrimary->GetDC(&hdcPrimary);<BR><BR>lpDDOffScreen->GetDC(&hdcOffScreen);<BR><BR>BitBlt(hdcPrimary,200,0,100,100,hdcOffScreen,0,0,SRCCOPY);<BR><BR>lpDDPrimary->ReleaseDC(hdcPrimary);<BR><BR>lpDDOffScreen->ReleaseDC(hdcOffScreen);<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"OffScreen
To Primary
OK."+(String)CR;<BR><BR>Button6->Enabled=false;<BR><BR>Button7->Enabled=true;<BR><BR>}<BR><BR>//---------------------------------------------------------------------------<BR><BR> <BR><BR>void
__fastcall TForm1::Button7Click(TObject
*Sender)<BR><BR>{<BR><BR>lpDD2->SetDisplayMode(640,480,16,0,0);<BR><BR>if(lpDDPrimary->IsLost()==DDERR_SURFACELOST&&lpDDOffScreen->IsLost()==DDERR_SURFACELOST)<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Surfaces
are
Lost."+(String)CR;<BR><BR>else<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Surfaces
remain."+(String)CR;<BR><BR>Button7->Enabled=false;<BR><BR>Button8->Enabled=true;<BR><BR> <BR><BR>}<BR><BR>//---------------------------------------------------------------------------<BR><BR> <BR><BR>void
__fastcall TForm1::Button8Click(TObject
*Sender)<BR><BR>{<BR><BR>lpDD2->SetDisplayMode(800,600,16,0,0);<BR><BR>lpDDPrimary->Restore();<BR><BR>lpDDOffScreen->Restore();<BR><BR>Memo1->Lines->Text=Memo1->Lines->Text+"Restore
lost Surfaces
OK."+(String)CR;<BR><BR>Button8->Enabled=false;<BR><BR>Button9->Enabled=true;<BR><BR>}<BR><BR>//---------------------------------------------------------------------------<BR><BR><BR>void
__fastcall TForm1::Button9Click(TObject
*Sender)<BR><BR>{<BR><BR>Button4Click(Sender);<BR><BR>Button5Click(Sender);<BR><BR>Button6Click(Sender);<BR><BR>}</SPAN></P></TD></TR></TBODY></TABLE></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -