FIX: SendMessage TB_GETIMAGELIST 사용하여 Windows XP ImageList 핸들 가져오기 위해 사용하면, 사용자는 올바른 핸들 가져오기 일 없음

중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

811415
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
현상
SendMessage Microsoft Windows 공용 컨트롤 6.0 (Mscomctl.ocx) 의 다양한 컨트롤을 이미지 핸들을 가져올 수 있습니다. SendMessage 사용하여 TB_GETIMAGELIST, LVM_GETIMAGELIST, TVM_GETIMAGELIST, 또는 TCM_GETIMAGELIST imagelist 핸들을 가져오려면 도구, ListView, TreeView, 전달할 수 있으며 TabStrip 제어합니다.

그러나 Windows XP를 실행하는 컴퓨터에서 이렇게 하면 잘못된 핸들이 반환됩니다. 다른 API를 호출하고 이 핸들을 전달하는 경우에는 이러한 API 호출을 제대로 작동하지 않습니다.
원인
이 문제는 Windows XP 및 Mscomctl.ocx 호환되지 않는 두 개의 서로 다른 버전의 Comctl32.dll 로드하기 때문에 발생합니다.
해결 방법
지원되는 핫픽스를 이제 Microsoft에서 사용할 수 있지만 이 문서에서 설명하는 문제를 해결하기 위한 것일 뿐입니다. 이러한 특정 문제가 발생하는 시스템에만 적용해야. 이 핫픽스는 나중에 추가 테스트를 받아야 할 수도 있습니다. 따라서 이 문제의 영향이 심각하지 않으면 이 핫픽스가 포함된 다음 Visual Studio 6.0 서비스 팩이 나올 때까지 기다리는 것이 좋습니다.

이 문제를 즉시 해결하려면 수정 프로그램을 구하려면 Microsoft 기술 지원 서비스에 문의하십시오. Microsoft 고객기술지원부 전화 번호 및 지원 비용에 대한 정보를 전체 목록은 다음 Microsoft 웹 사이트를 방문하십시오. 참고 Microsoft 기술 지원 전문가가 특정 업데이트로 문제를 해결할 수 있다고 판단하는 경우, 일반적으로 지원 호출에 발생하는 비용이 취소될 수 있습니다. 추가 지원 질문과 문제에는 특정 업데이트가 필요하지 않은 지원 비용이 적용됩니다.

이 수정의 영어 버전은 파일 특성을 가집니다 (또는 이상) 다음 표에. 이러한 파일의 시간과 날짜는 UTC (협정 세계시) 로 나열됩니다. 파일 정보에서는 현지 시간으로 변환됩니다. UTC와 로컬 시간의 차이를 알려면 제어판의 날짜 및 시간 도구에서 표준 시간대 탭을 사용하십시오.
   Date         Time   Version   Size       File name   -----------------------------------------------------   13-Dec-2002  00:18  6.0.97.1  1,062,160  Mscomctl.ocx
현재 상태
Microsoft는 이 문서의 시작 부분에 나열한 제품에서 문제를 확인했습니다.
추가 정보

Windows Mobile 기반 스마트폰에 GPRS 연결이 구성되어 있는지 확인합니다

도구 모음 컨트롤을 사용하여 문제를 재현하려면 다음과 같이 하십시오.
  1. 새로운 Visual Basic 6.0 표준 EXE 프로젝트를 시작하십시오. 기본적으로 Form1이 만들어집니다.
  2. 프로젝트 메뉴에서 구성 을 클릭하십시오. 구성 요소 대화 상자에서 Microsoft Windows 공용 컨트롤 6 참조를 추가하십시오.
  3. (ImageList1) ImageList 컨트롤, 도구 모음 (Toolbar1) 제어 및 있는 명령 단추 (Command1) Form1에 추가하십시오.
  4. ImageList 컨트롤을 마우스 오른쪽 단추로 이미지 탭을 두 이미지에 있는 ImageList 컨트롤 추가 클릭하십시오.
  5. Add the following code to Form1:
    Option ExplicitPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As LongPrivate Declare Function GetImageCount Lib "comctl32" Alias "ImageList_GetImageCount" (ByVal p As Long) As LongPrivate Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal cmd As Long) As LongPrivate Const WM_USER = &H400Private Const TB_GETIMAGELIST = WM_USER + 49Private Const GW_CHILD = 5Private Sub Command1_Click()    Dim hImageList As Long, hChild As Long        hChild = GetWindow(Toolbar1.hwnd, GW_CHILD)        hImageList = SendMessage(hChild, TB_GETIMAGELIST, 0, 0)    MsgBox "Image Count = " & GetImageCount(hImageList)End SubPrivate Sub Form_Load()    Set Toolbar1.ImageList = ImageList1    Toolbar1.Buttons.Add , , "Button 1"    Toolbar1.Buttons.Add , , "Button 2"    Toolbar1.Buttons(1).Image = 1    Toolbar1.Buttons(2).Image = 2End Sub
  6. 응용 프로그램을 실행하고 Command1 을 클릭하십시오. 0을이미지 개수 텍스트 상자를 포함합니다. 핫픽스를 적용한 후 이미지 수를 올바르게 2 반환합니다.

경고: 이 문서는 자동으로 번역되었습니다.

속성

문서 ID: 811415 - 마지막 검토: 02/24/2014 18:01:28 - 수정: 2.3

Microsoft Visual Basic 6.0 Enterprise Edition, Microsoft Visual Basic 6.0 Learning Edition, the operating system: Microsoft Windows XP

  • kbnosurvey kbarchive kbmt kbvbp600fix kbfix kbqfe KB811415 KbMtko
피드백