幫忙看一下這一個程式錯在哪裡?
為什麼執行沒有多久就當機?
試了好久都一樣
Option Explicit
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Dim MouseXY As POINTAPI
Dim nX As Single, nY As Single
Dim BackX As Single, BackY As Single
Dim SrcDC As Long
Dim ret As Long
Private Sub Form_Load()
Picture1.ScaleMode = 3
Picture1.AutoRedraw = True
Form1.ScaleMode = 3
Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
ret = GetCursorPos(MouseXY)
nX = MouseXY.x - 50
nY = MouseXY.y - 50
SrcDC = GetDC(0)
ret = StretchBlt(Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, SrcDC, nX, nY, 100, 100, vbSrcCopy)
Picture1.Refresh
ret = ReleaseDC(0, SrcDC)
End Sub
為什麼執行沒有多久就當機?
試了好久都一樣
Option Explicit
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Dim MouseXY As POINTAPI
Dim nX As Single, nY As Single
Dim BackX As Single, BackY As Single
Dim SrcDC As Long
Dim ret As Long
Private Sub Form_Load()
Picture1.ScaleMode = 3
Picture1.AutoRedraw = True
Form1.ScaleMode = 3
Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
ret = GetCursorPos(MouseXY)
nX = MouseXY.x - 50
nY = MouseXY.y - 50
SrcDC = GetDC(0)
ret = StretchBlt(Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, SrcDC, nX, nY, 100, 100, vbSrcCopy)
Picture1.Refresh
ret = ReleaseDC(0, SrcDC)
End Sub
文章標籤
全站熱搜

請問你所謂沒多久到底時間多長?我測試過上述程式,測了大約5分鐘,一切都很正常,因此可否告訴我你的時間。
時間不一定,剛始試的時候沒問題 後來就會出現當機的問題,出現當機的時間會越來越短 大約1~3分
搞不好是你的電腦硬體本身有問題
這個我就不清楚了,我只在執行那一個程式時才會出現問題 其於程式都沒問題
就像以前,我曾經買過一塊影像卡,只要一拉動視窗大小,電腦馬上就當給你看
不知是否是什麼東西沒有釋放乾淨(記憶體空不夠用),才會當機? PS.你那一塊影像卡也太厲害了!!
這段程式寫得不錯啊,我懷疑是其他程式害它當掉的。
呵~~我貪圖享受,買一張電視卡與顯示卡的合卡 我一直都很奇怪,我在VB一拉視窗,要改變它的大小,一次不當、兩次不當,再拉幾次,哎~~又要重新開機了 歡喜喜的買回家,氣呼呼的拔下來,那一張卡拿來看了一段彭彭與丁滿快結束時又當了..買不到一天就收到倉庫裡放了 買硬體不能貪便宜又功能多...最便宜可能會變成最貴的(用一天要兩千多元)
嗯...我跟小瓜瓜有許多類似的經驗,貪圖小便宜的結果,就會變成 白白浪費。 像顯示卡這種東西,我會做兩種選擇: 1.市面上現在最紅最高檔的卡。 2.已經出很久,功能最差,但是卻用戶最多,最穩定的卡。 原因是因為如果這兩種卡跑出來的結果都很正確,大概八九不離十, 市面上的卡幾乎可以通吃。