Anda menerima pesan galat "Sistem kesalahan & H80004005" dari aplikasi Visual Basic 6.0 ketika MFC ActiveX kontrol gliserolipid salah satu kelas jendela dilaksanakan oleh Comctl32.dll

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 223152 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

GEJALA

Kontrol MFC ActiveX gliserolipid bahwa salah satu jendela kelas dilaksanakan oleh Comctl32.dll penyebab galat berikut untuk dilempar dari Visual Basic 6.0 .exe.
"Kesalahan sistem & H80004005 (-2147467259). Unspecified error"
Versi debug ActiveX kontrol menyebabkan menyatakan dalam file Ctlcore.cpp, pada akhir COleControl::CreateControlWindow, pada atau di dekat garis 662.

Masalah ini hanya terjadi bila Anda membangun .exe dari Visual Basic 6.0 dan menjalankannya dari di luar lingkungan pengembangan Visual Basic.

PENYEBAB

Microsoft Visual Basic executable tidak disiapkan Common control library (Comctl32.dll) secara default, mengakibatkan CreateEx panggilan gagal di COleControl::CreateControlWindow. Memanggil GetLastError() memberikan 0x0000057F - tidak dapat menemukan jendela kelas, yang menunjukkan kontrol umum Perpustakaan perlu secara eksplisit diinisialisasi.

PEMECAHAN MASALAH

Di dalam InitInstance Anda kontrol ActiveX, membuat panggilan untuk:
InitCommonControls(void)
atau
InitCommonControlsEx(LPINITCOMMONCONTROLSEX lpInitCtrls)
Hal ini memastikan bahwa Comctl32.dll dimuat dan diinisialisasi, terlepas dari container kontrol berjalan di.

Alih-alih memanggil InitCommonControls dari kode kontrol, Anda juga dapat menghubungi langsung dari Visual Basic klien aplikasi:
  • Membuat pernyataan umum untuk bentuk sesuai; untuk contoh:
    Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
  • Menambahkan panggilan untuk:
    InitCommonControls
    					
    dalam metode Form_Load.
Dalam beberapa situasi, ini mungkin terlalu terlambat untuk menginisialisasi umum kontrol perpustakaan. Oleh karena itu, disarankan untuk menambahkan ini panggilan dalam InitInstance kontrol.

STATUS

Perilaku ini sesuai rancangannya.

INFORMASI LEBIH LANJUT

Langkah-langkah untuk mereproduksi perilaku

  1. Menggunakan Visual C++, wizard Kontrol MFC ActiveX, membuat default kontrol ActiveX.
  2. Di bagian setelan kontrol AppWizard (langkah 2 Visual C++ 6.0 AppWizard), di kelas jendela untuk subclass, pilih salah satu berikut: msctls_hotkey32, msctls_progress32, msctls_statusbar32, msctls_trackbar32, msctls_updown32, SysAnimate32, SysHeader32, SysListView32, SysTabControl32, atau SysTreeView32.
  3. Membangun kontrol.
  4. Buka Microsoft Visual Basic 6.0 dan menciptakan standar baru Exe proyek.
  5. Dari Project menu, klik Komponen, lalu pilih kontrol yang baru saja dibuat menggunakan Microsoft Visual C++.
  6. Pilih kontrol ini dan menarik yang dalam bentuk jendela.
  7. Dari Berkas menu, klik Membuat Project.exe, dan membangun exe.
  8. Pergi ke Windows Explorer dan menjalankan executable ini.

Properti

ID Artikel: 223152 - Kajian Terakhir: 19 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Foundation Class Library 4.2, ketika digunakan dengan:
    • Microsoft Visual Basic 5.0 Learning Edition
    • Microsoft Visual Basic 5.0 Professional Edition
    • Microsoft Visual Basic 6.0 Professional Edition
    • Microsoft Visual Basic 5.0 Enterprise Edition
Kata kunci: 
kberrmsg kbtshoot kbcmnctrls kbctrl kbprb kbmt KB223152 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:223152

Berikan Masukan

 

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