조회 수 28671 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
If your Microsoft Visual Basic application uses Microsoft Scripting Runtime Library (Scrrun.dll), the Package and Deployment Wizard (PDW) automatically picks up the dependency from Scrrun.dep, which points to http://activex.microsoft.com/controls/vb6/ScrRun.cab. However, this .cab file does not actually exist. Any component that tries to download the Scripting Runtime Library from this site will fail.

The following error message may appear in your Code Download Error log for this problem:

Code Download Error: (hr = 800c0007) No data is available for the requested
.........
ERR: INF Processing: Failed (80004004) processing: scrobj.dll . Cannot get primary/default language!
LOG: URL Download Complete: hrStatus:0, hrOSB:80004004, hrResponseHdr:0, URL:(URL to your CAB File)

위의 오류는 실제 cab 파일의 URL이 잘못 되었거나 해당 cab 파일이 그 URL에 없을 때 발생됩니다.

실제로 배포시
http://activex.microsoft.com/controls/vb6/MSCDRun.cab , ...
위의 URL의 경우 MSCDRun.cab 파일을 찾을 때도 있고 그렇지 않을 경우도 있어서,
배포시 오류가 발생된 경우도 있었습니다.  emoticon

TAG •

조회 수 30427 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

모듈추가 -> 이름: modWheelScroll
Option Explicit

'윈도우 프로시저 서브클레싱을 위한 API함수 선언
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'API상수 선언
Private Const GWL_WNDPROC = -4
Private Const WM_MOUSEWHEEL = &H20A

Private SubClassData As Collection  '서브클레싱한 데이타를 가지고있는 구조체


'윈도우 프로시저 콜백 함수 - 휠스크롤 메시지만 처리
Private Function Proc_WheelScroll(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Dim zDelta As Long
    Dim i As Long
On Error Resume Next
    For i = 1 To SubClassData.Count
        If hWnd = SubClassData(i).objGrid.hWnd Then
            Exit For
        End If
    Next i
    '어떤 플렉스 그리드에서 메시지가 발생했는지..
    If uMsg = WM_MOUSEWHEEL Then
    
        zDelta = wParam / 65536
        If zDelta > 0 Then
            Call Scroll_Grid(SubClassData(i).nDistance * -1, SubClassData(i).objGrid)
        Else
            Call Scroll_Grid(SubClassData(i).nDistance, SubClassData(i).objGrid)
        End If
    Else
        Proc_WheelScroll = CallWindowProc(SubClassData(i).lpPreWndProc, hWnd, uMsg, wParam, lParam)
    End If
    Exit Function
ERRHDN:
    MsgBox Err.Description
End Function


'스크롤 가능하도록 메시지 프로시저를 서브클레싱 한다.
'서브 클레싱 할때마다 카운트를 증가시키고 플렉스 그리드를 가지고 있는다.
Public Sub SetWheelScroll(ByRef FlexGrid As MSFlexGrid, Optional ByVal nDistance As Long = 1)
    
    Dim CData As clsSubClasData
    
    If SubClassData Is Nothing Then
        Set SubClassData = New Collection
    End If
    
    Set CData = New clsSubClasData
    
    Set CData.objGrid = FlexGrid
    CData.nDistance = nDistance
    CData.lpPreWndProc = SetWindowLong(FlexGrid.hWnd, GWL_WNDPROC, AddressOf Proc_WheelScroll)
    
    SubClassData.Add CData
End Sub

'서브클레싱 해제
Public Sub RestoreWheelScroll(objGrid As MSFlexGrid)
    Dim i As Long
    
    For i = 1 To SubClassData.Count
        If SubClassData(i).objGrid.hWnd = objGrid.hWnd Then
            Exit For
        End If
    Next i
    
    With SubClassData(i)
        Call SetWindowLong(.objGrid.hWnd, GWL_WNDPROC, .lpPreWndProc)
        Set .objGrid = Nothing
    End With
    
    SubClassData.Remove i
End Sub


'실제 스크롤 하는 함수
Private Sub Scroll_Grid(ByVal nMove As Long, objGrid As MSFlexGrid)
    Dim i As Long
On Error GoTo ERRHND
    
    objGrid.TopRow = objGrid.TopRow + nMove
    
    Exit Sub
ERRHND:
    'Debug.Print Form1.MSFlexGrid1.TopRow
End Sub

클래스 모듈 추가 -> 이름: clsSubClasData
Option Explicit

Public lpPreWndProc As Long     '원래 윈도우 프로시저 핸들
Public objGrid As MSFlexGrid    '플렉스 그리드 오브젝트
Public nDistance As Long        '한번 휠스크롤 할때마당 움직일 양


폼 로드 시 (XXX_Load())
Private Sub Form_Load()
    Call SetWheelScroll(Form2.MSFlexGrid1, 1)
End Sub

폼 언로드 시 (XXX_Unload(Cancel As Integer)
Private Sub Form_Unload(Cancel As Integer)
    Call RestoreWheelScroll(Form2.MSFlexGrid1)
End Sub


http://www.sujunggusul.com 에서 가져온 자료입니다.





TAG •

Board Pagination Prev 1 Next
/ 1