int x, // horizontal position of window int y, // vertical position of window int nWidth, // window width int nHeight, // window height HWND hWndParent, // handle of parent or owner
Trang 1int x, // horizontal position of window
int y, // vertical position of window
int nWidth, // window width
int nHeight, // window height
HWND hWndParent, // handle of parent or owner window HMENU hMenu, // handle of menu, or child-window identifier HINSTANCE hInstance, // handle of application instance
LPVOID lpParam // address of window-creation data
);
Returns
Nếu function hoàn thành, giá trị trả về là handle của window mới
Nếu function không hoàn thành, giá trị trả về là NULL
SendMessageA / SendMessageW
Hàm SendMessage có nhiệm vụ gởi specified message đến window hoặc windows Hàm này gọi window procedure cho specified window và không quay về cho đến khi window procedure gởi xong message Ngược lại, hàm PostMessage có nhiệm
vụ post message đến message của thread và trở về ngay lập tức
Code:
LRESULT SendMessage(
HWND hwnd, // handle of destination window
UINT uMsg, // message to send
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
Returns
Giá trị trả về ghi kết quả của message processing và dựa vào message đã được gởi
ShowWindow
Hàm ShowWindow có nhiệm vụ set trạng thái hiện ra của specified window
Code:
BOOL ShowWindow(
HWND hwnd, // handle of window
int nCmdShow // show state of window
);
Returns
Nếu window được thấy, giá trị trả về là TRUE Nếu window bị che, giá trị trả về là FALSE
Trang 2UpdateWindow
Hàm UpdateWindow có nhiệm vụ cập nhật client area của specified window bằng cách gởi WM_PAINT message đến window nếu vùng update của window không trống Hàm này gởi thẳng WM_PAINT message đến window procedure của
specified window, bỏ qua application queue Nếu vùng update trống thì message sẽ không được gửi đi
Code:
BOOL UpdateWindow(
HWND hwnd // handle of window
);
Returns
Nếu function hoàn thành, giá trị trả về là TRUE
Nếu function không hoàn thành, giá trị trả về là FALSE
The_lighthouse(REA)
03.4 File Accesses
===========
_lread
Hàm _lread có nhiệm vụ đọc dữ liệu từ specified file Hàm này tương thích với phiên bản 16-bit của Window Còn đối với Win32 thì chúng ta nên dùng hàm ReadFile
Code:
UINT _lread(
HFILE hFile, // handle of file
LPVOID lpBuffer, // address of buffer for read data
UINT uBytes // length, in bytes, of data buffer
);
Returns
Giá trị trả về cho biết số byte đã đọc được từ file Nếu số byte nhỏ hơn nhỏ hơn uBytes, function reach đoạn cuối của file trước khi đọc số byte xác định
_lwrite
Hàm _lwrite có nhiệm vụ viết dữ liệu vào specified file Hàm này tương thích với phiên bản 16-bit của Window Còn đối với Win32 thì chúng ta nên dùng hàm WriteFile
Code:
UINT _lwrite(
Trang 3HFILE hFile, // handle of file
LPCSTR lpBuffer, // address of buffer for data to be written
UINT uBytes // number of bytes to write
);
Returns
Nếu function hoàn thành , giá trị trả về cho biết số byte đã viết được vào file Nếu function không hoàn thành , giá trị trả về là HFILE_ERROR Để có thông tin
về lỗi, chúng ta sử dụng hàm GetLastError
CreateFileA / CreateFileW
Hàm CreateFile có nhiệm vụ tạo ra, mở, hoặc truncate file, pipe(đường dẫn), communication resource, disk device hoặc console Nó return handle mà có thể được dùng để truy cập đối tượng Nó cũng có thể mở và return handle to directory Code:
HANDLE CreateFile(
LPCTSTR lpFileName, // address of name of the file DWORD dwDesiredAccess, // access (read-write) mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // address of security descriptor
DWORD dwCreationDistribution, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle of file with attributes to copy
);
Returns
Nếu function hoàn thành, giá trị trả về là open handle của specified file Nếu specified file không tồn tại trước khi function gọi và dwCreationDistribution là CREATE_ALWAYS hoặc OPEN_ALWAYS, lệnh gọi GetLastError trở về
ERROR_ALREADY_EXISTS (ngay cả khi function đã hoàn thành) Còn nếu file tồn tại trước khi gọi, GetLastError trả về 0
Nếu function không hoàn thành , giá trị trả về là INVALID_HANDLE_VALUE
Để có thông tin về lỗi, chúng ta dùng lệnh GetLastError
GetPrivateProfileIntA / GetPrivateProfileIntW
Hàm GetPrivateProfileIntA có nhiệm vụ tìm integer associated với key trong section chỉ định của flie khởi tạo đã quy định Hàm này tương thích với phiên bản
Trang 416-bit của Window Còn đối với Win32 thì nên “cất” thông tin khởi tạo vào trong registry
Code:
UINT GetPrivateProfileInt(
LPCTSTR lpAppName, // address of section name
LPCTSTR lpKeyName, // address of key name
INT nDefault, // return value if key name is not found LPCTSTR lpFileName // address of initialization filename
);
Returns
Nếu function hoàn thành , giá trị trả về là số tương đương của chuỗi phía sau tên key chỉ định trong file khởi tạo đã quy định Nếu không tìm thấy key, giá trị trả về
là giá trị mặc định Nếu giá trị của key nhỏ hơn 0, giá trị trả về là 0
GetPrivateProfileStringA / GetPrivateProfileStringW
Hàm GetPrivateProfileString có nhiệm vụ tìm string từ section đã chỉ định trong file khởi tạo Hàm này tương thích với phiên bản 16-bit Window Còn đối với Win32 thì nên “cất” thông tin khởi tạo vào trong Registry
Code:
DWORD GetPrivateProfileString(
LPCTSTR lpAppName, // points to section name
LPCTSTR lpKeyName, // points to key name
LPCTSTR lpDefault, // points to default string
LPTSTR lpReturnedString, // points to destination buffer
DWORD nSize, // size of destination buffer
LPCTSTR lpFileName // points to initialization filename );
Returns
Nếu function hoàn thành , giá trị trả về là số kí tự được copy vào buffer, không tính
kí tự null
Nếu cả IpAppName và IpKeyName đều là NULL và supplied destination quá nhỏ
để chứa yêu cầu của string, chuỗi sẽ được bỏ bớt đi và theo sau là kí tự null, và giá trị trả về là nSize-1
Nếu IpAppName hoặc IpKeyName là NULL và supplied destination quá nhỏ để chứa toàn bộ string, string cuối cùng sẽ được “cắt ra” và theo sau là 2 kí tự null Trong trường hợp này thì giá trị trả về nSize-2
ReadFileA
Trang 5Hàm ReadFile có nhiệm vụ đọc dữ liệu từ file, bắt đầu tại vị trí được cho biết bởi file pointer Sau khi đọc xong, file pointer sửa lại cho đúng bằng số byte đã được đọc, trừ khi file handle được tạo với thuộc tính overlapped (chồng lên) Nếu file handle được tạo để overlapped input (cho vào) và output (lấy ra) (I / O) , sau khi đọc xong application phải chỉnh lại cho đúng vị trí của file pointer
Code:
BOOL ReadFile(
HANDLE hFile, // handle of file to read
LPVOID lpBuffer, // address of buffer that receives data
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead, // address of number of bytes read
LPOVERLAPPED lpOverlapped // address of structure for data
);
Returns
Nếu function hoàn thành , giá trị trả về là TRUE Nếu giá trị trả về là TRUE và số byte được đọc là 0 thì file pointer ở xa điểm cuối của file tại thời điểm xảy ra quá trình đọc
Nếu function không hoàn thành , giá trị trả về là FALSE Để có thông tin về lỗi, chúng ta dùng hàm GetLastError
ReadFileEx
Hàm ReadFileEx có nhiệm vụ đọc dữ liệu từ file không đồng bộ Nó chỉ được design cho quá trình không đồng bộ, khác với hàm ReadFile được design cho cả 2 quá trình đồng bộ và không đồng bộ ReadFileEx để cho “quá trình gán” gán vào processing khác suốt quá trình đọc
Hàm ReadFileEx “báo cáo” tình trạng không đồng bộ của nó, gọi completion routine chỉ định khi quá trình đọc hoàn thành và lệnh gọi thread là alertable wait state
Code:
BOOL ReadFileEx(
HANDLE hFile, // handle of file to read
LPVOID lpBuffer, // address of buffer
DWORD nNumberOfBytesToRead, // number of bytes to read
LPOVERLAPPED lpOverlapped, // address of offset
LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine // address of completion routine
);
Trang 6Returns
Nếu function hoàn thành , giá trị trả về là TRUE
Nếu function không hoàn thành , giá trị trả về là FALSE Để có thông tin về lỗi, chúng ta dùng hàm GetLastError
Nếu function hoàn thành , calling thread có quá trình I/O không đồng bộ trong khoảng thời gian : overlapped đọc thao tác từ file Khi quá trình I/O này kết thúc,
và lệnh gọi thread bị khóa trong alertable wait state, hệ thống gọi hàm
IpCompletionRoutine, và alertable wait state hoàn thành với đoạn code trở