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

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
Artikel ini telah diarsipkan. Artikel ditawarkan dalam bentuk "apa adanya" dan tidak akan dapat diperbarui lagi.
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.
ComCtl32.dll MFC VB

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 223152 - Tinjauan Terakhir: 12/05/2015 13:32:22 - Revisi: 2.0

Microsoft Foundation Class Library 4.2

  • kbnosurvey kbarchive kberrmsg kbtshoot kbcmnctrls kbctrl kbprb kbmt KB223152 KbMtid
Tanggapan