bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

vb點虐 如何打開屏保 vbnet tabpage

用VB制做可換圖片的屏幕保護程序

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

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

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

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;

}

當然,再這之前得先 #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; //檢測鼠標移動

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為新建光標的ID,這個光標沒有任何圖案

}

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); //創建一個全屏窗口

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

return TRUE;

}

為了防止同時運行兩個相同的程序,下面兩個函數是必需的:

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()函數將全屏窗口置為黑色:

void CMyWnd::OnPaint()

{

CPaintDC dc(this);

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

CRect rect;

GetClientRect(rect);

dc.FillRect(&rect, &brush);

}

由計數器調用DrawBitmap()函數,切換圖片;注意,下面兩個函數中的IDB_BITMAP1, dc.BitBlt(0,0,800,600……以及if(nIndexBit=5)中的有關數據依據你的bmp圖片個數、尺寸、位置不同而不同,我是選擇了5張800x600的bmp圖片。注意,ID值是連續的,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);

}

響應鍵盤、鼠標是屏幕保護程序不可缺少的,在OnKeyDown()、 OnLButtonDown()、 OnMButtonDown()、OnRButtonDown()、OnSysKeyDown()函數中都加入:

PostMessage(WM_CLOSE);

OnMouseMove()函數比較特殊,它應加的代碼為:

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

m_prePoint = point;

else if(m_prePoint!=point)

PostMessage(WM_CLOSE);

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

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

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

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

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;

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

vb點虐 屏幕保護程序

系統就有這個屏保啊!~!

Option EXPlicit

Dim quitflag As Boolean '聲明終止程序標志變量

Dim lleft

'聲明隱藏或顯示鼠標的API函數

Private Declare Function ShowCursor Lib "user32"

(ByVal bShow As Long) As Long

'檢測鼠標單擊或移動

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坐標

If App.PrevInstance = True Then

'用APP對象的PrevInstance屬性

Unload Me

'防止同時運行屏幕保護程序的兩個實例

Exit Sub

End If

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

'裝載命令行參數

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

預覽按鈕或屏幕保護程序被系統正常調用。

Show

'全屏顯示Form1窗體

Randomize

'初始化隨機數生成器

X = ShowCursor(False)

'隱藏鼠標

BackColor = VBBlack

Do

Timer2.Enabled = True

'啟動Timer2 ,顯示屏幕保護滾動文字

DoEvents

'轉讓控制權,以便檢測鼠標和按鍵行為

Loop Until quitflag = True

'運行屏幕保護滾動文字直至有鼠標和按鍵行為

Timer2.Enabled = False

'終止滾動文字

Timer1.Enabled = True

'啟動Timer1,退出屏幕保護程序

Case Else

Unload Me

Exit Sub

End Select

End Sub

Private Sub Form_Unload(Cancel As Integer)

Dim X

X = ShowCursor(True)

'顯示鼠標

End Sub

Private Sub Timer1_Timer()

Unload Me

'退出屏幕保護程序

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點虐 怎么做啟動窗體之前顯示的畫面

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

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

文章標題:vb點虐 如何打開屏保 vbnet tabpage
URL網址:http://vcdvsql.cn/article18/ddsiggp.html

成都網站建設公司_創新互聯,為您提供用戶體驗靜態網站網站設計網站收錄響應式網站品牌網站建設

廣告

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

網站托管運營