1 / 55

ชุดคำสั่งคลาสในภาษา C++

พัฒนาโดยบริษัทบอร์แลนด์. ชุดคำสั่งคลาสในภาษา C++. MFC(Microsoft Foundation Class) OWL(Object Windows Language). แบบไดอะล๊อก (Dialog Window) แบบเฟรม (Frame Window). ประเภทของโปรแกรมบนวินโดวส์. โปรแกรมที่ทำงานบนดอสโหมด โปรแกรมที่ทำงานเป็นหน้าต่าง โปรแกรมที่ทำงานเป็นฉากหลัง.

ina
Download Presentation

ชุดคำสั่งคลาสในภาษา C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. พัฒนาโดยบริษัทบอร์แลนด์พัฒนาโดยบริษัทบอร์แลนด์ ชุดคำสั่งคลาสในภาษา C++ MFC(Microsoft Foundation Class) OWL(Object Windows Language)

  2. แบบไดอะล๊อก (Dialog Window) แบบเฟรม (Frame Window) ประเภทของโปรแกรมบนวินโดวส์ โปรแกรมที่ทำงานบนดอสโหมด โปรแกรมที่ทำงานเป็นหน้าต่าง โปรแกรมที่ทำงานเป็นฉากหลัง

  3. สร้างโปรเจ็กต์ใหม่

  4. 1. เลือกรูปแบบก่อน ชื่อและตำแหน่งที่จะเก็บงาน

  5. เลือกภาษา เลือกประเภทของงาน

  6. โหมด Debug และ Release โหมด Debugไฟล์ .exe ที่ได้จะมีส่วนประกอบที่สามารถนำไปใช้ดีบักได้ โหมด Releaseโปรแกรมที่เอาไว้ขาย Build->Configuration Manager

  7. สร้างหน้าต่าง ขึ้นอยู่กับลักษณะโปรแกรม C…Dlg CWinApp C…App …App.cpp …Dlg.h …Dlg.cpp …App.h กำหนดค่าเริ่มต้นให้โปรแกรม CObject CCmdTarget CWnd CWinThread CFrameWnd CDialog

  8. ตัวแปร DDX ผูกกับ IDC_IN m_mane_in m_mane_out ตัวแปร DDX ผูกกับ IDC_OUT ขบวนการ DDX DDX(Dialog Data Exchange) เป็นความสามารถของ MFC ในการดึงค่าตัวแปร

  9. การเพิ่มตัวแปร DDX ใส่ประเภทของข้อมูล ใส่ชื่อตัวแปร คลิกขวาที่ออปเจ๊ก เลือก Add variable

  10. การอ่านค่าจากตัวแปร DDX อ่านค่าเข้ามา ส่งค่าออกไป UpdateData(TRUE); …………….. UpdateData(FALSE);

  11. การปรับแต่ง Edit Control แสดงกรอบ แสดงข้อความเป็นตัวพิมพ์เล็ก ให้กรอกตัวเลขเท่านั้น แสดงข้อความเป็นตัวพิมพ์ใหญ่ แสดงเป็นช่อง Password ไม่สามารถพิมพ์ข้อความลงไปได้

  12. การตั้งแท็ป

  13. ตัวแปรแบบ Control m_cname.SetLimitText(5);

  14. การเรียกใช้ฟังก์ชันในคลาส CWnd • EnableWindow ทำให้คอนโทรลอยู่ในสถานะ Enable หรือ Disable • MoveWindow ย้ายตำแหน่งและกำหนดตำแหน่งขนาดของคอนโทรล • HideCaret ซ่อนเคอร์เซอร์ในเวลาถูกโฟกัส • ShowCaret แสดงเคอร์เซอร์เวลาถูกโฟกัส • SetFont เปลี่ยนรูปแบบตัวอักษรในคอนโทรล • SetWindowText กำหนดค่าข้อความ Caption บนคอนโทรล ตัวอย่างm_cname.EnableWindow(FALSE)

  15. เหตุการณ์ของ Edit Control เมื่อมีการเปลี่ยนแปลงค่าในคอนโทรล เมื่อมีการพิมพ์ข้อความเกินกว่าที่กำหนด

  16. การสร้างไดอะล๊อกใหม่

  17. 1. ตั้งชื่อไดอะล๊อก 2. เพิ่มคลาส

  18. วิธีการเรียกไดอะล๊อก #include “NewDialog.h” CNewDialog newdlg; Newdlg.DoModal();

  19. List Box • ใช้ในการแสดงข้อมูลต่าง ๆ • สามารถเลือกไอเท็มจากรายการได้ • การใส่ข้อมูลจะใช้ตัวแปร DDX แบบคอนโทรล

  20. BOOL …………::OnInitDialog() { m_cmylist.AddString(name); m_cmylist.AddString(name); }

  21. SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon name = "Bangkok"; m_cmylist.AddString(name); name = "นครพนม"; m_cmylist.AddString(name); name = "บุรีรัมย์"; m_cmylist.AddString(name);

  22. การรับรู้ว่าเลือกไอเท็มใดการรับรู้ว่าเลือกไอเท็มใด สร้างตัวแปร DDX ขึ้นมาอีกหนึ่งตัวเป็นแบบ Value …………………………….. { UpdateData(TRUE); MessageBox(m_mydata); }

  23. Slider Control และ Progress Control UpdateData(TRUE); ได้ค่ามาใน m_slidervalue SetRange กำหนดระยะเริ่มต้นและสิ้นสุด SetRangeMin กำหนดค่าระยะใหม่ SetRangeMax กำหนดค่าระยะสิ้นสุดใหม่ SetTicFreq กำหนดระยะห่างของเส้นบอกระยะ SetPos กำหนดตำแหน่งของตัวชี้ GetPos อ่านค่าตำแหน่งตัวชี้ m_slider.SetRange(1,50); m_slider.SetTicFreq(5); m_slider.SetPos(20); Orientation ให้เลือกแนวนอนและแนวตั้ง Point ชนิดหัวลูกศร Auto Ticks เส้นบอกบรรทัด

  24. Progress Control struct _DATA { int n1; int n2; int total; }; _DATA data[2000]; int maxdata = 400; m_cmyprogress.SetStep(1); m_cmyprogress.SetRange(0,maxdata); for(int i = 0; i < maxdata; i++) { data[i].total = data[i].n1 + data[i].n2; m_cmyprogress.StepIt(); } m_cmyprogress.SetRange(0,150); m_cmyprogress.SetStep(1); เพิ่มค่าทุกครั้งเมื่อทำ m_cmyprogress.StepIt();

  25. การจัดการสตริง (CString) CString name = “This is a Book” CString s1,s2,s3; s1 = s2 = s3 = name; s1.MakeLower(); s1.MakeUpper(); s1.MakeReverse(); CString space = “ “; CString s1,s2,s3; CString message; s1 = “Who” s2 = “are”; s3 = “you”; message = s1 + space + s2 + space + s3;

  26. ไฟล์ (CFile) CFile::modeCreate สร้างไฟล์ใหม่ CFile::modeRead เปิดเพื่ออ่านไฟล์ CFile::modeReadWrite เปิดเพื่ออ่านด้วยเขียนด้วย CFile::modewrite เปิดเพื่ออ่านอย่างเดียว

  27. COPY FILE เปิดไฟล์สองไฟล์ file1,file2; char buffer[4096]; int byteread; do { byteread = file1.Read(buffer,4096); file2.Write(buffer,byteread); }while(byteread>0); file1.Close(); file2.Close();

  28. char buffer[528]; int byteread; do { byteread=fp1.Read(buffer,528); fp2.Write(buffer,byteread); m_cmyprogress.StepIt(); } while(byteread>0); fp1.Close(); fp2.Close(); CString buf1,buf2; CFile fp1,fp2; buf1 = "C:\\DSC04224.JPG"; buf2 = "C:\\TWAT.DAT"; fp1.Open(buf1,CFile::modeRead); fp2.Open(buf2,CFile::modeWrite|CFile::modeCreate); fp1.SeekToEnd(); m_cmyprogress.SetRange(0,fp1.GetLength()/528); m_cmyprogress.SetStep(1); fp1.SeekToBegin();

  29. เท็กซ์ไฟล์ (CStdioFile) ReadString อ่านไฟล์ WriteString เขียนไฟล์ CStdioFile file(…….. :: mode BOOL end; CString buffer,temp; do { end = file.ReadString(temp); buffer += temp; buffer += “\r\n”; }while(end); MessageBox(buffer)

  30. การใช้งานคลาส CFile • GetPosition คืนตำแหน่งไฟล์พอยน์เตอร์ • GetFileName คืนชื่อไฟล์ • GetFilePath คืนชื่อไฟล์และพาธของไฟล์ • GetFileTitle คืนชื่อไฟล์ • Open เปิดไฟล์ • Close ปิดไฟล์ • Abort ปิดไม่สนใจ Error • Read อ่านไฟล์ • Write เขียนไฟล์ • GetLength คืนค่าขนาดของไฟล์ • Seek ย้ายตำแหน่งของไฟล์พอยน์เตอร์ • SeektoBegin เลื่อนไฟล์พอยน์เตอร์ไปต้นไฟล์ • SeekToEnd เลื่อนไฟล์พอยน์เตอร์ไปท้ายไฟล์

  31. CSidioFile file(“c:\\data.txt”,CFile::modeCreate|CFile::modeWrite); file.WriteString(“Hello\r\n”); file.WriteString(“How are you \r\n”);

  32. void CTestEditDlg::OnOK() { UpdateData(TRUE); TRACE(“Data is %s”,m_name); } การใช้ TRACE ลองสร้าง Edit Control แล้วตรวจจับเมสเสจดังนี้ void CTestEditDlg::OnChangeTest1() { TRACE(“Change\n”); } ………… TRACE(“Set Focus\n”); ……….. TRACE(“Kill Focus\n”); ใช้แทน MessageBox โดยจะแสดงผลทางหน้าต่างเอาต์พุต ในการทดสอบจะต้อง RUN แบบดีบัก EN_CHANGE EN_SETFOCUS EN_KILLFOCUS

  33. โปรแกรมแบบ Single Document Interface เป็นวิวแบบธรรมดา วาดรูปได้ เขียนตัวอักษรได้ CEditView เหมือน Notepad CHtmlView CListView CFormView ใส่คอนโทรลได้

  34. DC (Device Context) เป็นเครื่องมือที่ใช้ในการวาดรูป • void Csdi1View::OnDraw(CDC* pDC) • { • Csdi1Doc* pDoc = GetDocument(); • ASSERT_VALID(pDoc); • if (!pDoc) • return; • // TODO: add draw code for native data here • pDC->MoveTo(50,50); • pDC->LineTo(200,200); • }

  35. วาดรูปเทียบกับเฟรม RECT r; GetClientRect(&r); for(int i = 1;i < r.right;i += 10) { pDC->MoveTo(1,1); pDC->LineTo(i , r.bottom); } POINT p1,p2; p1.x = 50; p1.y = 50; p2.x = 200; p2.y = 100; pDC->MoveTo(p1); pDC->LineTo(p2);

  36. การสืบทอดคลาสจาก MFC CListBox สืบทอดคลาสใหม่เพื่อให้ทำงานเพิ่มเติม CNewListBox

  37. สร้างคลาส CProvinceListBox Project ->Add Class

  38. สร้างคลาส CProvinceListBox CProvinceListBox

  39. class CProvinceListBox : public CListBox { DECLARE_DYNAMIC(CProvinceListBox) void Init() { name = "Bangkok"; AddString(name); name = "Nonburi"; AddString(name); name = "Krabi"; AddString(name); name = "Yala"; AddString(name); } เพิ่มใน ไฟล์ .h

  40. สร้าง List Box ในไดอะล๊อก เลือกประเภทของตัวแปร ตั้งชื่อตัวแปร ชื่อคลาสใหม่พิมพ์ตรง ๆ นะจ๊ะ พิมพ์ m_cplistbox.Init( );

  41. การสร้างไดนามิกลิงค์ไลบรารีการสร้างไดนามิกลิงค์ไลบรารี แอพพลิเคชันถูกลิงค์กับไฟล์ DLL เฉพาะ ตอนที่ทำงานเท่านั้น • ไดนามิกลิงค์ไลบรารี • ไลบรารีโมดูล แอพพลิเคชันถูกลิงค์กับฟังก์ชันตอนคอมไพล์ ทำให้ฟังก์ชันเป็นส่วนหนึ่งกับไฟล์ .EXE

  42. เหตุผลของการสร้าง DLL • ลดขนาดของไฟล์แอพพลิเคชัน • DLL สามารถสร้างจากภาษาโปรแกรมได้หลายภาษา • สามารถแก้ไขฟังก์ชัน DLL ได้ โดยไม่ต้องยุ่งกับแอพพลิเคชัน • ไฟล์ DLL สามารถเก็บ Resource ต่าง ๆ ได้

  43. วิธีการเรียก DLL ของแอพพลิเคชั่น • มองเข้าไปใน DLL แล้วเอาพอยน์เตอร์ไปชี้ • ลิงค์เหมือนไลบรารีมาตรฐาน

  44. การสร้าง DLL ของ VC++ • Regular DLL • MFC Extension DLL ส่งฟังก์ชันออก ไม่สามารถส่งคลาสออกได้ การลิงค์แบบ Static DLL การลิงค์แบบ Dynamic DLL รวมโค้ด MFC ที่จำเป็น

  45. รูปแบบการส่งฟังก์ชัน (1) extern “C” _declspec(dllexport) <function type> WINAPI <function decloration> extern “C” บอกว่าเป็นฟังก์ชันมาตรฐานของ C _declspec(dllexport) เป็นคีย์เวิร์ด

  46. รูปแบบการส่งฟังก์ชัน (2) extern “C” _declspec(dllexport) void WINAPI yourfunction() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); }

  47. MFC Extension DLL PowerDll

More Related