Herhangi bir pencere sınıfı uygulanan bir MFC ActiveX denetimi alt sınıfları, COMCTL32.dll tarafından bir Visual Basic 6.0 uygulamasından bir "Sistem hatası ve H80004005" hata iletisi alırsınız

Makale çevirileri Makale çevirileri
Makale numarası: 223152 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Bir MFC ActiveX sınıfları penceresini herhangi bir Visual Basic 6.0 .exe durum için aşağıdaki hata Comctl32.dll nedenler tarafından uygulanan o alt sınıfların denetler.
"Sistem hatası ve H80004005 (-2147467259). Belirtilmeyen hata"
ActiveX denetimi hata ayıklama sürümünü bir ASSERT dosya Ctlcore.cpp, sonunda COleControl::CreateControlWindow, açma veya <a1>Satır</a1> 662 yanında neden olur.

Yalnızca Visual Basic 6. 0'dan .exe oluşturmak ve buradan Visual Basic geliştirme ortamı dışında çalıştırıldığında, bu sorun oluşur.

Neden

Microsoft Visual Basic yürütülebilir dosyaları (Comctl32.dll) ortak Denetim Kitaplığı içinde CreateEx kaynaklanan varsayılan olarak, başlatılamıyor değil arama içinde COleControl::CreateControlWindow başarısız. GetLastError() çağırmak için 0x0000057F - verir ortak denetim kitaplığı açıkça başlatılması gereken gösteren pencere sınıfı bulunamadı.

Çözüm

ActiveX denetimi, InitInstance içinde çağrı yapmak:
InitCommonControls(void)
veya
InitCommonControlsEx(LPINITCOMMONCONTROLSEX lpInitCtrls)
bu Comctl32.dll yüklenebilmesi ve denetimi çalıştıran kapsayıcısı ne olursa olsun, başlatıldı sağlar.

Denetim kodu InitCommonControls çağrılıyor yerine, doğrudan Visual Basic istemci uygulamasından da çağırabilirsiniz:
  • Bir genel bildirimi için karşılık gelen form; olun örneğin:
    Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
  • Çağrı ekle:
    InitCommonControls
    					
    Form_Load yöntemi.
Bazı durumlarda, bu çok geç ortak denetimler kitaplığı başlatılamıyor olabilir. Bu nedenle, Denetim InitInstance ilgili olarak bu çağrıyı eklemek için önerilir.

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

Davranışı yeniden oluşturma adımları

  1. Visual C++ MFC ActiveX denetimi Sihirbazı'nı kullanarak oluşturduğunuz bir <a0>Varsayılan</a0> ActiveX denetimi.
  2. Alt sınıfı için pencere sınıfında (adım 2), Visual C++ 6.0 AppWizard AppWizard, <a1>Denetim ayarları</a1> bölümünde aşağıdakilerden birini seçin: msctls_hotkey32, msctls_progress32, msctls_statusbar32, msctls_trackbar32, msctls_updown32, SysAnimate32, SysHeader32, SysListView32, SysTabControl32, veya SysTreeView32.
  3. Denetimi oluşturun.
  4. Microsoft Visual Basic 6. 0'ı açın ve yeni bir standart Exe projesi oluşturun.
  5. Proje menüsünde bileşenleri ' ni tıklatın ve Microsoft Visual C++ kullanarak oluşturduğunuz denetimi seçin.
  6. Bu denetimi seçin ve, formda çizim pencere.
  7. Dosya menüsünden Project.exe yap'ı tıklatın ve exe oluşturun.
  8. Windows Gezgini'ne gidin ve bu yürütülebilir çalıştırın.

Özellikler

Makale numarası: 223152 - Last Review: 21 Kasım 2006 Salı - Gözden geçirme: 3.1
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Foundation Class Library 4.2, Ne zaman ne ile kullanilir:
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 5
    • Microsoft Visual Basic 5.0 Learning Edition
    • Microsoft Visual Basic 6.0 Learning Edition
    • Microsoft Visual Basic 5.0 Professional Edition
    • Microsoft Visual Basic 6.0 Professional Edition
    • Microsoft Visual Basic 5.0 Enterprise Edition
    • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Anahtar Kelimeler: 
kbmt kberrmsg kbtshoot kbcmnctrls kbctrl kbprb KB223152 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:223152

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