วิธีการใช้ OCX
ในแอปพลิเคชันคอนโซล: คู่มือทีละขั้นตอน
การใช้ ActiveX controls ในแอปพลิเคชันคอนโซลอาจดูน่ากลัวโดยเฉพาะถ้าคุณยังใหม่กับการเขียนโปรแกรมหรือภาษา C++ ถ้าคุณเคยสงสัยว่าจะนำไฟล์ OCX
เข้าสู่อแปพลิเคชันคอนโซลของคุณเพื่อทำการทดสอบอย่างรวดเร็วได้อย่างไร คุณไม่ได้อยู่คนเดียว! บล็อกโพสต์นี้จะพาคุณผ่านกระบวนการทำเช่นนั้นอย่างสะดวกและมีประสิทธิภาพ
ทำความเข้าใจกับ OCX และการใช้งาน
ไฟล์ OCX
เป็นไฟล์ไบนารีที่ประกอบด้วย OLE (Object Linking and Embedding) controls ที่สามารถนำกลับมาใช้งานได้ โดยมักใช้สำหรับการฝังฟังก์ชันการทำงาน เช่น อินเทอร์เฟซผู้ใช้ พวกเขาสามารถเป็นประโยชน์มากในแอปพลิเคชันต่างๆ รวมถึงแอปคอนโซลด้วย
เริ่มต้นด้วย Visual C++
สมมติว่าคุณได้ติดตั้ง Visual C++ เรียบร้อยแล้ว ต่อไปนี้เป็นวิธีที่ตรงไปตรงมาในการทดสอบ OCX
controls ในแอปพลิเคชันคอนโซลของคุณ
ขั้นตอนที่ 1: ตั้งค่าสภาพแวดล้อมของคุณ
ตรวจสอบให้แน่ใจว่าคุณมีสิ่งต่อไปนี้:
- Visual C++ ติดตั้งไว้แล้ว (เราจะใช้
cl.exe
สำหรับการคอมไพล์) - ไฟล์
OCX
ของคุณ (ตรวจสอบให้แน่ใจว่ามันได้ถูกลงทะเบียนในระบบของคุณ)
ขั้นตอนที่ 2: สร้างแอปพลิเคชันคอนโซลของคุณ
- สร้างไฟล์ข้อความใหม่: ตั้งชื่อว่า
test.cpp
คุณจะเขียนโค้ดของคุณในที่นี้ - เปิดไฟล์ในโปรแกรมแก้ไขข้อความ และคัดลอกโค้ดต่อไปนี้:
#include "windows.h"
#include "shobjidl.h"
#include "atlbase.h"
//
// compile with: cl /EHsc test.cpp
//
BOOL CALLBACK RemoveFromTaskbarProc( HWND hwnd, LPARAM lParam )
{
ITaskbarList* ptbl = (ITaskbarList*)lParam;
ptbl->DeleteTab(hwnd);
return TRUE;
}
void HideTaskWindows(ITaskbarList* ptbl)
{
EnumWindows(RemoveFromTaskbarProc, (LPARAM) ptbl);
}
BOOL CALLBACK AddToTaskbarProc( HWND hwnd, LPARAM lParam )
{
ITaskbarList* ptbl = (ITaskbarList*)lParam;
ptbl->AddTab(hwnd);
return TRUE; // continue enumerating
}
void ShowTaskWindows(ITaskbarList* ptbl)
{
if (!EnumWindows(AddToTaskbarProc, (LPARAM) ptbl))
throw "Unable to enum windows in ShowTaskWindows";
}
int main(int, char**)
{
CoInitialize(0);
try {
CComPtr<IUnknown> pUnk;
if (FAILED(CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, IID_IUnknown, (void**) &pUnk)))
throw "Unable to create CLSID_TaskbarList";
CComQIPtr<ITaskbarList> ptbl = pUnk;
if (ptbl)
ptbl->HrInit();
HideTaskWindows(ptbl);
MessageBox(GetDesktopWindow(), _T("Check out the task bar!"), _T("StackOverflow FTW"), MB_OK);
ShowTaskWindows(ptbl);
}
catch(TCHAR * msg) {
MessageBox(GetDesktopWindow(), msg, _T("Error"), MB_OK);
}
CoUninitialize();
return 0;
}
ขั้นตอนที่ 3: คอมไพล์โค้ดของคุณ
เพื่อคอมไพล์โค้ดนี้ เปิดพรอมต์คำสั่งนักพัฒนาของคุณและไปที่ไดเรกทอรีที่ไฟล์ test.cpp
ของคุณอยู่ ใช้คำสั่งต่อไปนี้:
cl.exe /EHsc test.cpp
ขั้นตอนที่ 4: รันแอปพลิเคชันของคุณ
เมื่อคอมไพล์เสร็จแล้วให้รันไฟล์ปฏิบัติการที่ได้จากการคอมไพล์ หากทุกอย่างถูกตั้งค่าอย่างถูกต้อง คุณควรเห็นกล่องข้อความและมีการทำงานบางอย่างกับ Windows Taskbar
ทำความเข้าใจกับโค้ด
- การเริ่มต้น COM (CoInitialize): ก่อนที่คุณจะเรียกใช้ฟังก์ชัน COM ใด ๆ คุณต้องเริ่มต้น COM ด้วย
CoInitialize()
- การสร้างอินสแตนซ์: ในโค้ดนี้
CoCreateInstance()
ถูกใช้ในการสร้างอินสแตนซ์ของคลาสTaskbarList
นี่คือOCX
ของคุณ - การทำงานกับ Taskbar: ฟังก์ชัน
HideTaskWindows
และShowTaskWindows
แสดงให้เห็นถึงวิธีการจัดการกับหน้าต่างใน Taskbar
การจัดการข้อผิดพลาด
การใช้ try-catch statements รับประกันว่าข้อผิดพลาดใด ๆ ที่เกิดขึ้นในระหว่างการดำเนินการของโปรแกรมจะทำให้กล่องข้อความแสดงข้อมูลที่เกี่ยวข้อง ซึ่งเป็นสิ่งสำคัญสำหรับการดีบัก
สรุป
การทดสอบ OCX
ในแอปพลิเคชันคอนโซลไม่จำเป็นต้องเป็นเรื่องยาก โดยการตั้งค่าที่ถูกต้องและความเข้าใจเกี่ยวกับ COM
components และ ActiveX
คุณสามารถรวมพวกเขาเข้ากับแอปพลิเคชันของคุณได้อย่างง่ายดาย ปฏิบัติตามคู่มือนี้ทีละขั้นตอนแล้วคุณจะมั่นใจในการใช้ OCX
controls ในเวลาไม่นาน!
หากคุณพบปัญหาอย่าลังเลที่จะติดต่อหรืออ้างอิงเอกสาร Happy coding!