VB6의 "다시 요청하지 마십시오"또는 "다시 묻지 말아요"확인란이있는 Msgbox를 어떻게 만드나요?

StackOverflow https://stackoverflow.com/questions/1040413

  •  22-07-2019
  •  | 
  •  

문제

나는이 작업을 수행하는 모범 사례 방법을 알고 싶기 때문에 부분적으로 묻습니다. 부분적으로 Google의 최고 결과는 2002 년부터 질문에 응답하지 않은 포럼 스레드였습니다.

나는 일부 VB6 코드를 상속했고, 상기 코드에는 일부 msgbox 호출이 있으며, 그 중 다수는 최종 사용자가 짧은 시간 후에는 매우 성가신 것을 발견 할 것입니다 (예 : "인쇄 완료", "레코드 추가,"등).

Msgbox에서 "다시 요청하지 마십시오"라는 확인란의 표준 사용자 인터페이스 컨트롤을 추가하고 싶습니다. 따라서 확인 및 확인이 클릭되면 프로그램에 알리는 설정이 저장됩니다. . 다시는 묻지 않습니다. 꽤 표준 제어, 아이디어는 상당히 자기 설명 적입니다.

내가 알고 싶은 것은 무엇입니까 모범 사례 VB6 에서이 작업을 수행하는 방법. 이러한 유형의 msgboxen을 위해 새로운 형태를 만들고 이전 msgbox 호출을 해당 형식의. 쇼로 대체하는 명백한 방법이 있지만 스택 오버플로의 VB6 전문가가 더 나은 방법을 가지고 있습니까?

미리 감사드립니다

도움이 되었습니까?

해결책

내가 아는 한, 다른 방법은 없습니다. 확인란을 사용하여 나만의 메시지 상자 양식을 만들어야합니다. 물론이 설정을 저장하고 검색하려면 코드를 수정해야합니다 (및 설정에 따라 적절하게 행동).

나는 이것을 내 자신의 신청서에서 여러 번 수행했습니다. 한 가지 생각해야 할 사항 .... 사용자가 상자를 "다시 보여주지 마라"는 상자를 확인한다고 가정 해 봅시다. 제 생각에는 설정을 재설정하는 방법이 있어야합니다. 메시지 상자 양식이 다시 표시되지 않으므로이 앱의 경우 (내 앱의 경우) 추가했습니다.

당신이 고려하고 싶은 한 가지는 msgbox 함수를 서브 클래스하는 것입니다. 앱 내에서 비슷한 매개 변수 목록이 있지만 몇 가지 추가 기능을 만들 수 있습니다. 추가 매개 변수가 없으면 VBA.msgbox를 호출하여 표준 동작을 얻으십시오. 추가 매개 변수를 전달하면 대신 새 양식을 호출 할 수 있습니다.

다른 팁

글쎄 ... 당신은 절대적으로 올바른 사람이 아닙니다;)

Win2000에서 시작하여 있습니다 ShmessageboxCheck 트릭을 수행하는 기능. VB6 선언 :

Private Declare Function SHMessageBoxCheck Lib "shlwapi" Alias "#185" (ByVal hWnd As Long, ByVal lpszText As String, ByVal lpszTitle As String, ByVal dwType As VbMsgBoxStyle, ByVal iDefault As Long, ByVal lpszId As String) As Long

다른 모든 것에 대해 링크를 따릅니다 :)

이러한 기능을 제공하는 경우 MessageBox를 표시하는 "전환"이 필요할 수 있습니다.
IE 사용자는 일부 설정을 사용하여 Msgbox를 다시 볼 수있는 옵션이 있어야합니다.

그 대신 상태 막대를 사용하여 알림을 표시하거나 알림 메시지가있는 레이블이 있고 몇 초 후에 꺼질 수 있습니다.

이것은 내 다운과 더러운 해결책이었습니다.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
myfile = Workbooks.Application.ActiveWorkbook.Path & "\noprompt.txt"
If Dir(myfile) <> "" Then Exit Sub
exportData = MsgBox("Export data?" & vbCrLf & "Select Cancel (or × top right) to prevent this prompt from displaying again.", vbYesNoCancel, "Close Workbook")
If exportData = vbYes Then
    Call ExportValues 'a separate function...
ElseIf exportData = vbCancel Then
    'create file noprompt.txt
    Open myfile For Output As #1
    Write #1, "Delete this file to restore prompt to Export Data when workbook is closed."
    Close #1
    Exit Sub
ElseIf exportData = vbNo Then
    Exit Sub

End If


End Sub

내 앱의 설명서는 파일 삭제가 프롬프트를 복원한다고 설명합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top