Windows 中不規則窗體的編程實現
下載源代碼
一
在絕大多數的Windows應用程序中
二
所有的 Windows 窗體都位於一個稱為
其中第二步很簡單就調用一條語句即可
int SetWindowRgn( HWND hWnd
其中hWnd為待設置的窗體句柄
相對與第二步
在MFC中"region"對象
三
類CRgn創建一個新的"region"的簡單方法有以下幾個成員函數
BOOL CRgn::CreateRectRgn( int x
int y int x int y ); 創建矩形的 region BOOL CRgn::CreateEllipticRgn( int x
int y int x int y ); 創建圓形或橢圓形 region BOOL CRgn::CreateRoundRectRgn( int x
int y int x int y int x int y ); 創建圓角矩形 region BOOL CRgn::CreatePolygonRgn( LPPOINT lpPoints
int nCount int nMode ); 創建多邊形 region
這裡以創建橢圓窗體為例
下面的代碼加入到MFC對話框程序的OnInitDialog函數中
BOOL CTestDlg::OnInitDialog(){ CDialog::OnInitDialog();
圖一 橢圓窗體效果圖
四
使用該方法創建
第一步繪制所要創建的窗體形狀
該步驟中使用到CDC類中的一些成員函數如下
BOOL CDC::BeginPath( );
調用該函數後當前設備環境(DC)開始追蹤繪圖的過程
int CDC::SetBkMode( int nBkMode );
設置繪圖時的背景模式
BOOL CDC::EndPath( );
調用該函數後當前設備環境(DC)結束追蹤繪圖的過程
開始繪圖前
第二步將繪制的結果轉成
此步驟中使用SDK API函數
HRGN PathToRegion( HDC hdc );
Hdc為作圖DC的句柄
void CTestDlg::OnTest() { HRGN wndRgn; CClientDC dc(this); CFont mFont; if (dc
From:http://tw.wingwit.com/Article/program/c/201401/30248.html