จากบล็อกที่แล้ว "มาเขียนโปรแกรมบน Windows กันเถอะ 1" ยังมีส่วนที่เรียกว่า "รายละเอียด" ที่ผมได้ตัดออก เพราะเกรงจะทำให้โค้ดดูรกเกินไป บล็อกนี้จึงกล่าวถึงรายละเอียดเหล่านั้น ดังนี้ครับ
//รายละเอียดที่ 1 (เขียนต่อ ณ บรรทัดต่อไปเลยนะครับ)
if(!InitWindowsApp(hInstance, nShowCmd))
{
MessageBox(0, "Initial Windows Application Failed", "Error", MB_OK);
return 0;
}
return Run(); //หากกำหนดค่าผ่านก็จะเรียก Run
//=============================================
//รายละเอียดที่ 2 ส่วนการกำหนดค่าให้กับหน้าต่างบานเล็กของเรา
WNDCLASS wndClass;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndClass.hCursor = LoadCursor(0, IDC_HAND);
wndClass.hIcon = LoadIcon(0, IDI_APPLICATION);
wndClass.hInstance = hInstance;
wndClass.lpfnWndProc = WndProc;
wndClass.lpszClassName = "wndClass";
wndClass.lpszMenuName = 0;
wndClass.style = CS_HREDRAW | CS_VREDRAW;
//ลงทะเบียนให้ระบบปฏิบัติการ Windows รู้จัก
if(!RegisterClass(&wndClass))
{
MessageBox(0, "Register Class Failed", 0, 0);
return false;
}
//เมื่อลงทะเบียนผ่าน
//ระบบปฏิบัติการ Windows จะรู้จักหน้าต่างบานเล็กของเรา จากนั้นสั่งสร้างหน้าต่าง
mainProject = CreateWindow(
"wndClass",
"My Windows",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
640,
480,
0,
0,
hInstance,
0);
if(mainProject == 0)
{
MessageBox(0, "Create Window Failed", 0, 0);
return false;
}
ShowWindow(mainProject, nShowCmd); //แสดงหน้าต่าง
UpdateWindow(mainProject); //ทำให้หน้าต่างแสดงค่าสถานะปัจจุบันไว้เสมอ
return true;
//=============================================
//รายละเอียดที่ 3 ส่วนการรับและกระจายข่าวสารของระบบปฏิบัติการ Windows
MSG msg;
ZeroMemory(&msg, sizeof(MSG));
while(GetMessage(&msg, 0, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
//=============================================
//รายละเอียดที่ 4 ลูกเล่นและการคืนหน่วยความจำเมื่อกดปุ่ม ESC หรือ ปุ่มกากบาทมุมขวาหน้าต่าง
switch(msg)
{
case WM_LBUTTONDOWN:
MessageBox(0, "Hello, World", "Message", MB_OK);
return 0;
case WM_KEYDOWN:
if(wParam == VK_ESCAPE)
{
DestroyWindow(mainProject);
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, msg, wParam, lParam);
จากโค้ดทั้งหมดก็ยาวไม่ใช่น้อย เพื่อนๆที่พึ่งหัดเขียนโปรแกรมคงต้องอดทนมากหน่อย ทั้งที่เข้าใจและไม่เข้าใจ ส่วนตัวแล้วผมยอมรับว่าประสบการณ์เขียนโปรแกรมน้อยมากเหมือนกัน เอาหล่ะครับทดลอง Run กันดู ผลเป็นอย่างไรก็มา "แสดงความคิดเห็น" ได้ครับ
อ่านเนื้อหาที่เกี่ยวข้อง ก่อนหน้า
ไม่มีความคิดเห็น:
แสดงความคิดเห็น