Tài liệu dẫn nhập lập trình C trên Windows nhằm mục đích đưa ra 1 cách tiếp cận với lập trình C trên windows, hy vọng có thể đơn giản hóa vấn đề 1 cách tốt nhất. Mời các bạn cùng tham khảo nhé!
Dẫn nhập vào lập trình Win32 api Dẫn nhập lập trình C Windows Hơm nay, langman – x định ngồi viết tut nhằm mục đích đưa cách tiếp cận với lập trình C windows, hy vọng đơn giản hóa vấn đề cách tốt Chắc cịn nhiều chỗ sai sót lắm, mong bạn giúp đỡ sửa lỗi I Một vài kiến thức a Từ khóa Thật C khác platform + Trước học ngôn ngữ C với IDE Borland C ( Turbo C ) ntvdm -> sảm phẩm gói sảm phẩm : MS Windows XP + Bây học C platform windows, tạo chương trình giao tiếp trực tiếp với nhân hệ điều hành windows ko phải qua thằng ntvdm Các bạn ý platform thay đổi ngơn ngữ ( giống bạn nói tiếng anh nước anh, tiếng anh nước mĩ tiếng anh việt nam ) Và thế, tồn từ khóa thế, ko có từ khóa b Quy ước đặt tên microsoft Sẽ thật khó nắm bắt, thật hoa mắt bạn ko hiểu quy tắc đặt tên ms Bạn để ý kĩ, chúng có quy tắc đấy, sau: _ Tất kiểu liệu mở rộng windows , tên class, tên struct, tên số định sẵn viết in hoa Ví dụ : tên kiểu liệu : UINT , ATOM , HANDLE, HWND, BYTE,… tên cấu trúc : MSG, PAINSTRUCT, WNDCLASS , (đây C nên chưa có class) tên số định sẵn : NULL, IDI_APPLICATION, CS_VREDRAW,… _ Tất method (các hàm, phương thức) viết hoa (pascal notation) Ví dụ : LoadIcon(…) LoadCursor(…) SomeOtherName(…) _ Tất tên biến, tên đối tượng viết theo camel notation : ( chữ đầu viết thường, cịn đoạn sau viết theo chuẩn pascal) Ví dụ: hWnd; // cá nhân tơi thích đặt hwnd cho gọn gàng msg; wParam hInstance someOtherName ồ, bạn nắm quy tắc này, nhìn vào source thấy đỡ hoa mắt đó, ta thấy đơn giản chút !!! Nhân tiện , nói ms, , người có lẽ nên tự hào đại diện cho ms đơng nam tiến sĩ hói đầu người việt nam He he he…… c Handle Đây từ hay gặp tin học, khuyên chân thành đừng có dùng google để tra ko nên nên tra làm gì, từ ko nên dịch, x giải thích cho bạn đây, ( trình độ tiếng anh lùn, có mong bỏ qua cho) + Số hiệu : xuất phát từ ý tưởng này, ngành cơng an có nhiều người, có nhiều người trùng tên lẫn họ , đồng chí cơng an có số hiệu riêng, ID người, cần tra đó, tất nhiên tra số hiệu rồi, + File handle : file , chương trình bạn để hiểu bạn làm việc với file ? nằm đâu ? chả lẽ lần bạn mở file để ghi tạo biến kiểu xâu kí tự để lưu trữ đường dẫn file dài dịng, loằng ngoằng Hệ thống có cung cấp cho file table, tồn ổ cứng bạn với tên FAT table Mỗi file có số hiệu riêng, dùng để định danh nên file số hiệu Ví dụ dễ hiểu table nha : (tất nhiên thực tế lơm cơm nhiều này) PHP Code: Số hiệu 007 008 009 Tên file a.mp3 b.avi a.mp3 Đường dẫn D:\\Music\\ D:\\Setup C:\\ + Window handle : hình có nhiều cửa sổ với tên khác nhau, OS nắm bắt cửa sổ ? Mỗi cửa số có số hiệu riêng, handle cửa sổ OS thơng qua thơng số để hiểu cửa sổ Vậy handle số nguyên, dùng để định danh lên object cụ thể Số ánh xạ qua handle table để đối tượng Trong windows 32bit số nguyên 4byte Trong tên ms định ra, từ h viết tắt handle Ví dụ : HWND, HINSTANCE, hPrevInstance d Một số từ khó hiểu + WINAPI , CALLBACK : từ đặt trước hàm main, số tài liệu khác cịn có từ APIENTRY, PASCAL , APIPRIVATE Thật khủng bố mà có nhiều từ đáng với bạn bình tĩnh, sau hồi mở file h lên tơi tìm dịng : #define CALLBACK stdcall #define WINAPI stdcall #define APIENTRY WINAPI #define APIPRIVATE stdcall #define PASCAL stdcall Chúng 1, thật tuyệt vời , chúng thôi, google thấy chúng calling convention Tuyệt Vậy chúng thuộc vào nhóm compiler to compiler Những từ thêm vào trước tên hàm nhằm mục đích rõ cho compiler hàm có cách tổ chức phục vụ cho việc gọi đến Nói tóm lại, bạn cần biết : _ chúng thuộc loại “compiler to compiler” chúng _ Đừng viết lẫn lộn để tránh nguy cơ… bị thầy giáo chém + LRESULT : nói cách đơn giản , kiểu liệu nguyên 4byte, nhìn đơn giản : số ngun Bạn cần nhớ thơi, (cịn nữa) ^_,^ Đã chỉnh sửa lần cuối langman : 24-06-2010 lúc 09:09 AM Lý do: đính lại #2 13-06-2010, 04:39 PM peterdrew Thành viên nhiệt tình Ngày gia nhập: 01 2010 Nơi ở: Горячие блины Bài viết: 2,677 Trích dẫn: Nguyên gửi langman + LRESULT : nói cách đơn giản , kiểu liệu byte, Tuy chưa hoàn thiện, anh muốn bổ sung vấn đề này! Langman nói số long byte với mơi trường 64 bit thơi; người (đa phần) dùng 32 bit LRESULT kiểu trả tương ứng với số nguyên byte Cịn vấn đề Handle có nhiều bàn cãi, nhiên anh phân tích (bởi ngồi Handle cịn có Instance nữa): Mỗi cửa sổ tạo giống cơng dân bắt đầu nhập cộng đồng; để Nhà nước quản lý cơng dân Cơng dân phải cấp quyền công dân thông qua Chứng minh thư; chứng minh thư loại thẻ mà khơng thể có (hoặc nhiều hơn) công dân trùng nhau! Windows vậy; quản lý cửa sổ thơng qua địa (số nguyên) cấp cho cửa sổ, số nguyên để Windows nhận dạng điều hành cửa sổ, tất cửa sổ tạo cấp loại địa này! Cũng phải mở rộng gọi cửa sổ? Cái không gọi cửa sổ? Cửa sổ có Handle, cịn "đối tượng" khởi tạo mà khơng có Handle khơng gọi cửa sổ! Vậy Label VB6 (hoặc Static MFC, ) không gọi cửa sổ; lại đa phần đối tượng khác coi cửa sổ (Button, EditBox, ) Thêm Instance (thể hiện): Mỗi cửa sổ tạo lại cung cấp "địa chỉ" kiểu Handle để quản lý thể mình, ví dụ ta mở chương trình (app), sau lại mở chương trình lần nữa; chương trình (app) mà khác nhau! Như bạn cần phân biệt Handle Instance! Верность познается во время больших смут #3 15-06-2010, 11:33 AM Ngày gia nhập: 10 2008 Bài viết: 270 HTT90 Thành viên nhiệt tình Em bổ sung thêm vào ý anh peter Định nghĩa LRESULT MSDN typedef LONG_PTR LRESULT LONG_PTR #if defined(_WIN64) typedef int64 LONG_PTR; #else typedef long LONG_PTR; #endif Mong nhận tút khác langman chicken #4 23-06-2010, 08:22 PM langman Thành viên Ngày gia nhập: 06 2007 Nơi ở: C:\WINDOWS\system32\dllcache\ Bài viết: 3,505 anh pt ơi, với vs2010 vs2008 8byte hết, e chạy os windows7 32bit mà hôm trước, e test máy thầy giáo chạy os windows 64 bit, thấy int 4byte,( borland dev-C ), tuần sau đề nghị thầy giáo test hộ VS xem có khác ko @HTT90 : ôn thi nốt tuần nghỉ hè tập trung toàn sức mạnh nhỏ mọn thân vào C việt ^_,^ #5 23-06-2010, 08:30 PM peterdrew Thành viên nhiệt tình Ngày gia nhập: 01 2010 Nơi ở: Горячие блины Bài viết: 2,677 Ừ, anh thấy byte; khơng mà, tiếp tục đi, chủ đề hay Верность познается во время больших смут #6 23-06-2010, 08:40 PM richtran Thành viên thức Ngày gia nhập: 04 2009 Bài viết: 64 Mấy bác cho chương trình demo thử! #7 24-06-2010, 08:59 AM langman Thành viên Ngày gia nhập: 06 2007 Nơi ở: C:\WINDOWS\system32\dllcache\ Bài viết: 3,505 Trích dẫn: Nguyên gửi peterdrew Ừ, anh thấy byte; không mà, tiếp tục đi, chủ đề hay a để e đính lại Trích dẫn: Nguyên gửi richtran Mấy bác cho chương trình demo thử! nốt vụ ơn thi nầy viết tiếp đưa demo lên ^_,^ #8 27-06-2010, 12:02 AM langman Thành viên Ngày gia nhập: 06 2007 Nơi ở: C:\WINDOWS\system32\dllcache\ Bài viết: 3,505 cám ơn anh pt, em check a nói, 8b môi trường 64bit em test máy thầy windows7 64bit vs2010 cho tay e cài, lúc cài chọn 64 bit ^_,^ #9 27-06-2010, 08:47 PM benina Thành viên Ngày gia nhập: 09 2008 Bài viết: 24 Handle: em thấy dịch "thẻ quản" hay cho em góp lửa chút nhe #10 28-07-2011, 08:54 PM tuoitho Thành viên Ngày gia nhập: 09 2008 Nơi ở: Bắc Ninh Bài viết: hix, viết lâu rùi, học vc++ nên đọc đc bổ ích, chủ topic tiếp tục chủ đề khơng? ... Vậy chúng thu? ?c vào nhóm compiler to compiler Những từ thêm vào trư? ?c tên hàm nhằm m? ?c đích rõ cho compiler hàm c? ? c? ?ch tổ ch? ?c ph? ?c vụ cho vi? ?c gọi đến Nói tóm lại, bạn c? ??n biết : _ chúng thu? ?c. .. byte C? ?n vấn đề Handle c? ? nhiều bàn c? ?i, nhiên anh phân tích (bởi ngồi Handle c? ??n c? ? Instance nữa): Mỗi c? ??a sổ tạo giống c? ?ng dân bắt đầu nhập c? ??ng đồng; để Nhà nư? ?c quản lý c? ?ng dân C? ?ng dân... khơng gọi c? ??a sổ! Vậy Label VB6 (ho? ?c Static MFC, ) không gọi c? ??a sổ; lại đa phần đối tượng kh? ?c coi c? ??a sổ (Button, EditBox, ) Thêm Instance (thể hiện): Mỗi c? ??a sổ tạo lại cung c? ??p "địa chỉ" kiểu