คุณได้รับข้อความแสดงข้อความแสดงข้อผิดพลาด "ระบบเกิดข้อผิดพลาด & H80004005" จากโปรแกรมประยุกต์ Visual Basic 6.0 เมื่อระดับชั้นมี MFC ActiveX ควบคุมย่อยใด ๆ ของคลาสที่หน้าต่างมีการใช้งาน โดย Comctl32.dll

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 223152 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

MFC ActiveX ควบคุมที่ระดับชั้นย่อยใด ๆ ของหน้าต่าง คลาสที่ใช้งานตามสาเหตุ Comctl32.dll ข้อผิดพลาดต่อไปนี้จะถูกส่ง จาก.exe เป็น Visual Basic 6.0
"ระบบผิดพลาด & H80004005 (-2147467259) ข้อผิดพลาดที่ไม่สามารถระบุได้"
รุ่นแก้จุดบกพร่อง ActiveX ตัวควบคุมทำให้มี ASSERT ในแฟ้ม Ctlcore.cpp เมื่อสิ้นสุด COleControl::CreateControlWindow การ หรือ ใกล้บรรทัดที่ 662

ปัญหานี้ เกิดขึ้นเฉพาะเมื่อคุณสร้างเป็น.exe จาก Visual Basic 6.0 และเรียกใช้งานจาก ภายนอกของสภาพแวดล้อมการพัฒนา Visual Basic

สาเหตุ

Microsoft Visual Basic ที่กำลังเตรียมใช้งานการ ราทั่วไปควบคุมรี (Comctl32.dll) ตามค่าเริ่มต้น การเป็นผลในการ CreateEx การเรียกล้มเหลวใน COleControl::CreateControlWindow เรียกให้ GetLastError() 0x0000057F - ไม่พบคลาสหน้าต่าง ซึ่งบ่งชี้ว่า ตัวควบคุมทั่วไป ไลบรารีต้องถูกเตรียมใช้งานอย่างชัดเจน

การแก้ไข

ภายใน InitInstance ของตัวควบคุม ActiveX ทำการ เรียกไปยัง:
InitCommonControls(void)
หรือ
InitCommonControlsEx(LPINITCOMMONCONTROLSEX lpInitCtrls)
แน่ใจว่า Comctl32.dll ถูกโหลด และเริ่ม คำนึงถึง คอนเทนเนอร์ที่ควบคุมการทำงานใน

แทนที่เป็นของโทรศัพท์ InitCommonControls จากรหัสของตัวควบคุม คุณสามารถจะติดต่อได้โดยตรงจาก แอพลิเคชันไคลเอนต์ของ Visual Basic:
  • ทำให้การประกาศทั่วไปสำหรับแบบฟอร์มที่สอดคล้องกัน สำหรับ ตัวอย่าง:
    Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
  • เพิ่มการเรียกไปยัง:
    InitCommonControls
    					
    ในวิธีการ Form_Load
ในบางสถานการณ์ นี้อาจจะช้าเกินกำหนดค่าเริ่มต้น ไลบรารีตัวควบคุมทั่วไป ดังนั้น ขอแนะนำให้เพิ่มการเรียกนี้ในการ InitInstance ของตัวควบคุม

สถานะ

ลักษณะการทำงานนี้ได้ ด้วยการออกแบบ

ข้อมูลเพิ่มเติม

ขั้นตอนในการทบทวนเกิดลักษณะการทำงาน

  1. ใช้ Visual c ++ ตัวช่วยสร้างตัวควบคุม MFC ActiveX สร้างเป็น เริ่มต้นตัวควบคุม ActiveX
  2. ในส่วนของการตั้งค่าการควบคุมของ AppWizard (ขั้นที่ 2 ของ ใน Visual c ++ 6.0 AppWizard), ในคลาสหน้าต่างกับระดับชั้นย่อย ให้เลือกอย่างใดอย่างหนึ่ง ต่อไปนี้: msctls_hotkey32, msctls_progress32, msctls_statusbar32 msctls_trackbar32, msctls_updown32, SysAnimate32, SysHeader32, SysListView32 SysTabControl32 หรือ SysTreeView32
  3. สร้างตัวควบคุม
  4. เปิด Microsoft Visual Basic 6.0 และสร้างมาตรฐานใหม่ โครงการ Exe
  5. จากนั้นโครงการเมนู คลิกคอมโพเนนต์และเลือกตัวควบคุมที่คุณเพิ่งสร้างขึ้นโดยใช้ Microsoft C ++ที่มองเห็น
  6. เลือกตัวควบคุมนี้ และวาดรูปที่อยู่ในแบบฟอร์ม หน้าต่าง
  7. จากนั้นแฟ้มเมนู คลิกทำให้ Project.exeและสร้าง exe
  8. ไปที่ Windows Explorer และเรียกใช้การกระทำนี้

คุณสมบัติ

หมายเลขบทความ (Article ID): 223152 - รีวิวครั้งสุดท้าย: 28 มกราคม 2554 - Revision: 5.0
ใช้กับ
Keywords: 
kberrmsg kbtshoot kbcmnctrls kbctrl kbprb kbmt KB223152 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:223152

ให้ข้อเสนอแนะ

 

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