Düzeltme: Windows XP'de bir ımagelist tanıtıcısı almak için TB_GETIMAGELIST SendMessage kullandığınızda, doğru tanıtıcı al Not

Makale çevirileri Makale çevirileri
Makale numarası: 811415 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

SendMessage, Microsoft Windows ortak denetimleri 6.0 (Mscomctl.ocx) çeşitli denetimlerde görüntü tanıtıcısı almak için kullanabilirsiniz. SendMessage kullanarak TB_GETIMAGELIST, LVM_GETIMAGELIST, TVM_GETIMAGELIST veya TCM_GETIMAGELIST imagelist tanıtıcısı alınamadı araç çubuğu, ListView, TreeView için iletebilir ve TabStrip denetler.

Ancak, Windows XP çalıştıran bir bilgisayarda bu işlemi gerçekleştirdiğinizde, yanlış tanıtıcı döndürdü. Bu API çağrıları, diğer bir Apı çağrısı ve sonra da bu tanıtıcı geçirmek, düzgün çalışmayacak.

Neden

Bu sorun, Windows XP ve Mscomctl.ocx uyumlu olmayan iki farklı sürümü Comctl32.dll yük nedeniyle oluşur.

Çözüm

Desteklenen bir düzeltme Microsoft'tan edinilebilir, ancak yalnızca bu makalede anlatılan sorunu düzeltmesi amaçlanmıştır. Düzeltmeyi yalnızca bu sorunla karşılaşan sistemlere uygulayın. Bu düzeltmeye ek sınama uygulanabilir. Bu nedenle, bu sorundan ciddi bir şekilde etkilenmiyorsanız, bu düzeltmeyi içeren bir sonraki Visual Studio 6.0 hizmet paketini beklemenizi öneririz.

Bu sorunun derhal çözülmesini sağlayacak düzeltmeyi edinmek için Microsoft Ürün Destek Hizmetleri'ne başvurun. Microsoft Ürün Destek Hizmetleri'nin telefon numaralarının tam listesi ve destek ücretleriyle ilgili bilgi için, aşağıdaki Microsoft Web sitesini ziyaret edin:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS
Not Özel durumlarda, Microsoft Destek Uzmanı özel bir güncelleştirmenin sorununuzu çözümleyeceğini belirlerse, destek aramaları için normalde uygulanan ücretler iptal edilebilir. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.

Bu düzeltmenin İngilizce sürümü, aşağıdaki tabloda listelenen dosya özniteliklerine (veya daha yenisi) sahiptir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'e (UTC) göre listelenir. Dosya bilgilerini görüntülediğinizde yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için <a0></a0>, Denetim Masası'ndaki Tarih ve Saat aracında saat dilimi sekmesini kullanın.
   Date         Time   Version   Size       File name
   -----------------------------------------------------
   13-Dec-2002  00:18  6.0.97.1  1,062,160  Mscomctl.ocx

Durum

Microsoft, bunun bu makalenin başında listelenen Microsoft ürünlerinde bir hata olduğunu onaylamıştır.

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları

Araç çubuğu denetimi kullanarak sorunu yeniden oluşturmak için <a0></a0>, aşağıdaki adımları izleyin:
  1. Yeni bir Visual Basic 6.0 standart exe DOSYASı proje başlatın. Varsayılan olarak, Form1 oluşturulur.
  2. Proje menüsünde bileşenleri ' ni tıklatın. Bileşenleri iletişim kutusunda, Microsoft Windows ortak denetimler 6.0 başvuru ekleyin.
  3. Form1'e, bir ımagelist (ImageList1) denetimi, bir araç çubuğu (Toolbar1) denetimi ve bir KomutDüğmesi (Command1) ekleyin.
  4. ımagelist denetimi farenin sağ düğmesiyle tıklatın ve sonra da görüntü sekmesini ımagelist için iki görüntü Denetim Ekle</a1>'ı tıklatın.
  5. Add the following code to Form1:
    Option Explicit
    
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
    Private Declare Function GetImageCount Lib "comctl32" Alias "ImageList_GetImageCount" (ByVal p As Long) As Long
    Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal cmd As Long) As Long
    
    
    Private Const WM_USER = &H400
    Private Const TB_GETIMAGELIST = WM_USER + 49
    Private Const GW_CHILD = 5
    
    Private 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 Sub
    
    Private 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 = 2
    End Sub
    
  6. Uygulamayı çalıştırın ve Command1</a1>'ı tıklatın. Resim sayısı</a0> metin kutusuna, 0 değerini içerir. Düzeltmeyi yükledikten sonra görüntü sayısı, 2 olarak doğru verir.

Özellikler

Makale numarası: 811415 - Last Review: 26 Şubat 2014 Çarşamba - Gözden geçirme: 2.3
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • the operating system: Microsoft Windows XP
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbvbp600fix kbfix kbqfe KB811415 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:811415

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com