久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

vb點(diǎn)虐 如何打開屏保 vbnet tabpage

用VB制做可換圖片的屏幕保護(hù)程序

VC++可謂神通廣大,如果學(xué)到家了,或者就掌握了那么一點(diǎn)MFC,你也會感到它的方便快捷,當(dāng)然最重要的是功能強(qiáng)大。不是嗎,從最基本的應(yīng)用程序.EXE到動態(tài)連接庫DLL,再由風(fēng)靡網(wǎng)上的ActiveX控件到Internet Server API,當(dāng)然,還有數(shù)據(jù)庫應(yīng)用程序……瞧,我都用它來做屏幕保護(hù)程序了。一般的屏幕保護(hù)程序都是以SCR作為擴(kuò)展名,并且要放在c:\windows 目錄或 c:\windows\system 目錄下,由Windows 98內(nèi)部程序調(diào)用(Windows NT 是在 c:\windows\system32 目錄下)。怎么調(diào)用?不用說了,這誰不知道。

成都創(chuàng)新互聯(lián)公司服務(wù)緊隨時代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過10多年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計師、專業(yè)的網(wǎng)站實(shí)施團(tuán)隊以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對網(wǎng)站進(jìn)行成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、建設(shè)、維護(hù)、更新和改版,實(shí)現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。

好了,我們來作一個簡單的。選擇MFC AppWizard(exe),Project Name 為MyScreensaver,[NEXT],對話框,再后面隨你了。打開菜單Project、Settings,在Debug頁、Executable for debug session項,以及Link頁中Output file name項改為c:\windows\MyScreensaver.scr,這樣,你可以調(diào)試完后,直接在VC中運(yùn)行(Ctrl+F5),便可看到結(jié)果。當(dāng)然,這樣做的唯一缺點(diǎn)是你必須手動清除Windows 目錄下的垃圾文件(當(dāng)然是在看到滿意結(jié)果后;還有,你可借助SafeClean 這個小東東來幫你清除,除非你的硬盤大的讓你感到無所謂……快快快回來,看我跑到那里去了)。接下來用Class Wizard生成CMyWnd類,其基類為CWnd(在Base Class 中為generic CWnd)。這個類是我們所要重點(diǎn)研究的。創(chuàng)建滿屏窗口、計時器,隱藏鼠標(biāo),展示圖片,響應(yīng)鍵盤、鼠標(biāo)等等,這家伙全包了。至于MyScreensaverDlg.h與MyScreensaverDlg.cpp文件我們暫時不管。打開MyScreensaver.cpp,修改InitInstance()函數(shù):

BOOL CMyScreensaverApp::InitInstance()

{

AfxEnableControlContainer();

#ifdef _AFXDLL

Enable3dControls(); // Call this when using MFC in a shared DLL

#else

Enable3dControlsStatic(); // Call this when linking to MFC statically

#endif

CMyWnd* pWnd = new CMyWnd;

pWnd-Create();

m_pMainWnd = pWnd;

return TRUE;

}

當(dāng)然,再這之前得先 #include “MyWnd.h" 。后面要做的都在MyWnd.h 與 MyWnd.cpp 兩文件中了。

下面給出CMyWnd 的說明:

class CMyWnd : public CWnd

{

public:

CMyWnd();

static LPCSTR lpszClassName; //注冊類名

public:

BOOL Create();

public:

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CMyWnd)

protected:

virtual void PostNcDestroy();

//}}AFX_VIRTUAL

public:

virtual ~CMyWnd();

protected:

CPoint m_prePoint; //檢測鼠標(biāo)移動

void DrawBitmap(CDC& dc, int nIndexBit);

//{{AFX_MSG(CMyWnd)

afx_msg void OnPaint();

afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);

afx_msg void OnLButtonDown(UINT nFlags, CPoint point);

afx_msg void OnMButtonDown(UINT nFlags, CPoint point);

afx_msg void OnMouseMove(UINT nFlags, CPoint point);

afx_msg void OnRButtonDown(UINT nFlags, CPoint point);

afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);

afx_msg void OnDestroy();

afx_msg void OnTimer(UINT nIDEvent);

afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);

afx_msg void OnActivateApp(BOOL bActive, HTASK hTask);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

MyWnd.cpp 文件:

……

CMyWnd::CMyWnd()

{

m_prePoint=CPoint(-1, -1);

}

LPCSTR CMyWnd::lpszClassName=NULL;

BOOL CMyWnd::Create()

{

if(lpszClassName==NULL)

{

lpszClassName=AfxRegisterWndClass(CS_HREDRAW CS_VREDRAW,

::LoadCursor(AfxGetResourceHandle(),MAKEINTRESOURCE(IDC_NOCURSOR)));

//注冊類;IDC_NOCURSOR為新建光標(biāo)的ID,這個光標(biāo)沒有任何圖案

}

CRect rect(0, 0, ::GetSystemMetrics(SM_CXSCREEN),

::GetSystemMetrics(SM_CYSCREEN));

CreateEx(WS_EX_TOPMOST, lpszClassName, _T(“”), WS_VISIBLE WS_POPUP,

rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top,

GetSafeHwnd(), NULL, NULL); //創(chuàng)建一個全屏窗口

SetTimer(ID_TIMER, 500, NULL);//計時器,ID_TIMER別忘了定義

return TRUE;

}

為了防止同時運(yùn)行兩個相同的程序,下面兩個函數(shù)是必需的:

void CMyWnd::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)

{

CWnd::OnActivate(nState,pWndOther,bMinimized);

if (nState==WA_INACTIVE)

PostMessage(WM_CLOSE);

}

void CMyWnd::OnActivateApp(BOOL bActive, HTASK hTask)

{

CWnd::OnActivateApp(bActive, hTask);

if (!bActive) //is being deactivated

PostMessage(WM_CLOSE);

}

OnPaint()函數(shù)將全屏窗口置為黑色:

void CMyWnd::OnPaint()

{

CPaintDC dc(this);

CBrush brush(RGB(0,0,0));

CRect rect;

GetClientRect(rect);

dc.FillRect(&rect, &brush);

}

由計數(shù)器調(diào)用DrawBitmap()函數(shù),切換圖片;注意,下面兩個函數(shù)中的IDB_BITMAP1, dc.BitBlt(0,0,800,600……以及if(nIndexBit=5)中的有關(guān)數(shù)據(jù)依據(jù)你的bmp圖片個數(shù)、尺寸、位置不同而不同,我是選擇了5張800x600的bmp圖片。注意,ID值是連續(xù)的,IDB_BITMAP1最小。

void CMyWnd::DrawBitmap(CDC &dc, int nIndexBit)

{

CDC dcmem;

dcmem.CreateCompatibleDC(&dc);

CBitmap m_Bitmap;

m_Bitmap.LoadBitmap(IDB_BITMAP1+nIndexBit);

dcmem.SelectObject(m_Bitmap);

dc.BitBlt(0,0,800,600,&dcmem,0,0,SRCCOPY);

}

void CMyWnd::OnTimer(UINT nIDEvent)

{

CClientDC dc(this);

static nIndexBit=0;

if(nIndexBit=5)

nIndexBit=0;

DrawBitmap(dc, nIndexBit++);

CWnd::OnTimer(nIDEvent);

}

響應(yīng)鍵盤、鼠標(biāo)是屏幕保護(hù)程序不可缺少的,在OnKeyDown()、 OnLButtonDown()、 OnMButtonDown()、OnRButtonDown()、OnSysKeyDown()函數(shù)中都加入:

PostMessage(WM_CLOSE);

OnMouseMove()函數(shù)比較特殊,它應(yīng)加的代碼為:

if(m_prePoint == CPoint(-1,-1))

m_prePoint = point;

else if(m_prePoint!=point)

PostMessage(WM_CLOSE);

快要完工了。在OnDestroy()函數(shù)中刪掉計時器:KillTimer(ID_TIMER);

還有啦,在CMyWnd::PostNcDestroy() 中加入: delete this;

哎呀,腰酸背疼,眼球發(fā)澀,手背奇麻(不會吧)!不過,相信你一定會迫不及待地按下Ctrl+F5, 看著一幅幅圖片在你面前輪番展示,啊,自己的屏幕保護(hù)程序!趕快趕快,換上自制的屏保,感覺就是不一樣:圖片任你挑,時間間隔任你改,鼠標(biāo)?鍵盤?我想響應(yīng)誰就響應(yīng)誰……哎呀,誰扔的紙團(tuán):(。

其實(shí),上面的程序還有很多可以改進(jìn)的地方,比如圖片總是單一地顯示;bmp 文件太大,導(dǎo)致生成的屏幕保護(hù)程序也很大,遠(yuǎn)沒有jpg合算;沒有密碼,沒有可直接控制的界面。由于InitInstance()函數(shù)的簡單處理(直接調(diào)用CMyWnd類),你會發(fā)現(xiàn)當(dāng)你在桌面上右擊,選擇“屬性”、“屏幕保護(hù)程序”頁、“屏幕保護(hù)程序”下拉菜單、選中MyScreensaver時,MyScreensaver就直接預(yù)覽了(或是直接運(yùn)行了);假設(shè)你確定MyScreensaver作為你的屏幕保護(hù)程序,等你第二次進(jìn)入“屏幕保護(hù)程序”頁時,就直接預(yù)覽。Why? 回頭看看InitInstance()函數(shù)就明白了。為了讓它更聽話地工作,可修改InitInstance()函數(shù):

LPTSTR lpszArgv = __argv[1];

if (lpszArgv[0] ==‘/’)

lpszArgv++;

if (lstrcmpi(lpszArgv, _T(“s”))==0)

{

CMyWnd* pWnd=new CMyWnd;

pWnd-Create();

m_pMainWnd=pWnd;

return TRUE;

}

return FALSE;

不過現(xiàn)在你要是再在VC中運(yùn)行這個程序,“該程序執(zhí)行了非法操作,即將關(guān)閉。將會伴隨著一超重低音供你欣賞。(啊?)原因是我們加了一句return FALSE; 還有,別忘了還有一個CMyScreensaverDlg類沒有用上,用它來與你的屏保直接對話再好不過了。例如,為了方便地確定時間間隔,選取圖片,加上一個編輯框和幾個按鈕就可以了。重申一點(diǎn),由于生成文件較大,占用的內(nèi)存也多,如果不能運(yùn)行,很可能是開的窗口太多了。這時你可以換較小的圖片。

vb點(diǎn)虐 屏幕保護(hù)程序

系統(tǒng)就有這個屏保啊!~!

Option EXPlicit

Dim quitflag As Boolean '聲明終止程序標(biāo)志變量

Dim lleft

'聲明隱藏或顯示鼠標(biāo)的API函數(shù)

Private Declare Function ShowCursor Lib "user32"

(ByVal bShow As Long) As Long

'檢測鼠標(biāo)單擊或移動

Private Sub Form_Click()

quitflag = True

End Sub

Private Sub Form_MouseMove(Button As Integer,Shift As Integer, X As Single, Y As Single)

Static xlast, ylast

Dim xnow As Single

Dim ynow As Single

xnow = X

ynow = Y

If xlast = 0 And ylast = 0 Then

xlast = xnow

ylast = ynow

Exit Sub

End If

If xnow xlast Or ynow ylast Then

quitflag = True

End If

End Sub

'檢測按鍵

Private Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)

quitflag = True

End Sub

Private Sub Form_Load()

Dim X As Long

lleft = 0

'橫向滾動文字的起始X坐標(biāo)

If App.PrevInstance = True Then

'用APP對象的PrevInstance屬性

Unload Me

'防止同時運(yùn)行屏幕保護(hù)程序的兩個實(shí)例

Exit Sub

End If

Select Case Ucase$(Left$(Command$, 2))

'裝載命令行參數(shù)

Case "/S" '在顯示器屬性對話框中單擊了

預(yù)覽按鈕或屏幕保護(hù)程序被系統(tǒng)正常調(diào)用。

Show

'全屏顯示Form1窗體

Randomize

'初始化隨機(jī)數(shù)生成器

X = ShowCursor(False)

'隱藏鼠標(biāo)

BackColor = VBBlack

Do

Timer2.Enabled = True

'啟動Timer2 ,顯示屏幕保護(hù)滾動文字

DoEvents

'轉(zhuǎn)讓控制權(quán),以便檢測鼠標(biāo)和按鍵行為

Loop Until quitflag = True

'運(yùn)行屏幕保護(hù)滾動文字直至有鼠標(biāo)和按鍵行為

Timer2.Enabled = False

'終止?jié)L動文字

Timer1.Enabled = True

'啟動Timer1,退出屏幕保護(hù)程序

Case Else

Unload Me

Exit Sub

End Select

End Sub

Private Sub Form_Unload(Cancel As Integer)

Dim X

X = ShowCursor(True)

'顯示鼠標(biāo)

End Sub

Private Sub Timer1_Timer()

Unload Me

'退出屏幕保護(hù)程序

End Sub

Private Sub Timer2_Timer()

顯示橫向滾動文字

lleft = lleft + 100

If lleft = 11810 Then

lleft = 0

Lab1.Top = Int(Rnd * 7000)

End If

Lab1.Left = lleft

Timer2.Enabled = False

End Sub

vb點(diǎn)虐 怎么做啟動窗體之前顯示的畫面

把啟動窗體先顯示出來,然后,過一段時間再把這個窗體隱藏起來就行了。在其他窗體中加一句form1.visible=false

然后啟動窗體把標(biāo)題欄什么的設(shè)置一下,做個圖片背景什么的,就行了。

文章標(biāo)題:vb點(diǎn)虐 如何打開屏保 vbnet tabpage
URL網(wǎng)址:http://sd-ha.com/article18/ddsiggp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)靜態(tài)網(wǎng)站、網(wǎng)站設(shè)計、網(wǎng)站收錄、響應(yīng)式網(wǎng)站品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營