1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình C Windows 07_Các khái niệm

22 463 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập trình C trên Windows các khái niệm cơ bản
Tác giả Nguyễn Tri Tuấn
Trường học Đại học Khoa học Tự nhiên - Đại học Quốc gia TP.HCM
Chuyên ngành Công nghệ thông tin
Thể loại bài giảng
Năm xuất bản 2004
Thành phố TP.HCM
Định dạng
Số trang 22
Dung lượng 346,46 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Lập trình C Windows

Trang 1

Lập trình C trên Windows

Các khái niệm cơ bản

Nguyễn Tri Tuấn Khoa CNTT – ĐH.KHTN.Tp.HCM Email: nttuan@ fit.hcmuns.edu.vn

 Các khái niệm cơ bản

 Lập trình sự kiện (Even driven programming)

 Các thành phần giao diện đồ họa (GUI)

 Tài nguyên của ứng dụng (Resources)

 Một chương trình tổng quát xây dựng trên

Win32 API

 Các kiểu dữ liệu cơ bản

Trang 2

Spring 2004

Vài điểm khác biệt giữa lập trình Windows và DOS

Hỗ trợ 32 bits hay hơn nữa

Phải dùng các thư viện Multimedia riêng

Tích hợp sẵn Multimedia

Single CPU Multi- CPU

Single task Multi- tasking

Thực hiện tuần tự theo chỉ định

Lập trình sự kiện, dựa vào

thông điệp (message)

DOS Windows

Các thư viện lập trình của Windows

 SDK - Software Development Kit

Windows

dựng 1 ứng dụng trên Windows

những thư viện cấp cao hơn trong những ngôn

ngữ lập trình VD OWL của BorlandC, MFC của

Visual C++,…

Trang 3

Spring 2004

Các thư viện lập trình của Windows …(tt)

Các thư viện lập trình của Windows …(tt)

 OWL - Object Windows Library

BorlandC++

 MFC - Microsoft Foundation Classes

 Một ứng dụng trên Windows có thể được

viết bằng

SDK

Trang 4

Spring 2004

Các loại ứng dụng

dạng DOS command line

Microsoft Foundation Class

động (Dynamic-linked library), sử dụng MFC

Các khái niệm cơ bản

ƒ Một giá trị 32 bits không dấu (unsigned) do HĐH tạo ra

để làm định danh cho 1 đối tượng (cửa sổ, file, vùng

nhớ, menu,…)

ƒ Một giá trị nguyên do ứng dụng tạo ra để làm định danh

cho 1 đối tượng (menu item, control)

ƒ Một giá trị nguyên do HĐH tạo ra để định danh 1 thể

hiện đang thực thi của ứng dụng

Trang 5

Spring 2004

Lập trình sự kiện (Even driven programming)

Phát sinh các sự kiện và thông điệp

Lập trình sự kiện (Even driven programming)…(tt)

Qui trình xử lý thông điệp

Trang 6

Spring 2004

Lập trình sự kiện (Even driven programming)…(tt)

// Vòng lặp xử lý thông điệp trong 1 ứng dụng –

// Message loop

MSG msg;

// lấy thông điệp ra khỏi hàng đợi của ứng dụng

while (GetMessage(&msg, NULL, 0, 0))

Trang 7

Spring 2004

Các thành phần giao diện đồ họa (GUI)…(tt)

 GUI: Graphics User Interface

 Các dạng GUI cơ bản:

ƒ SDI - Single Document Interface

 Một cửa sổ làm việc

 Cho phép thay đổi kích thước cửa sổ (Resizeable)

 Không có các cửa sổ con

 Ví dụ: NotePad, Paint,…

ƒ MDI - Multiple Document Interface

 Một cửa sổ làm việc chính (Frame window) và nhiều cửa sổ con (Child

window)

 Cho phép thay đổi kích thước cửa sổ (Resizeable)

 Cho phép Maximize/Minimize/Close các cửa sổ con

 Ví dụ: Word, Excel, VC++,…

ƒ Dialog

 Một cửa sổ làm việc

 Thường kích thước cố định

 Thường không có menu bar

 Thường có các button, edit box, list-box,…

 Ví dụ: Calculator, CD Player,…

Các thành phần giao diện đồ họa (GUI)…(tt)

Dialog, SDI, MDI

Trang 8

cha (parent window), ngoại trừ cửa sổ nền

Desktop

user (Active/Focused window)

GUI – Window …(tt)

 Phân loại:

Trang 9

Spring 2004

GUI – Window …(tt)

App Window

Dialog

box

Desktop Window

Control

Child window

Parent window

GUI – Window …(tt)

bar

Title-Minimized, Restored, Maximized buttons

bar

Scroll- bar

Menu-Resized border

Window Caption

Trang 10

Combo- button

Push- sheet

Property-

Check-box

Các dạng control

GUI – Window …(tt)

Trang 11

làm khuôn mẫu (template) khi tạo lập 1 cửa sổ

ƒ Mỗi lớp cửa sổ được đặc trưng bằng 1 tên (class-name)

dạng chuỗi

ƒ Phân loại class:

 Lớp cửa sổ của hệ thống (System class)

ƒ Được định nghĩa trước bởi HĐH Windows

ƒ Các ứng dụng không thể hủy bỏ

 Lớp cửa sổ do ứng dụng định nghĩa:

ƒ Được đăng ký bởi ứng dụng

ƒ Có thể hủy bỏ khi không còn sử dụng nữa

ƒ Lớp toàn cục của ứng dụng (Application global class)

ƒ Lớp cục bộ của ứng dụng (Application local class)

Các lớp cửa sổ của hệ thống

Trang 12

Spring 2004

GUI – Window …(tt)

 Lớp cửa sổ (window class):

nếu lớp chưa được đăng ký

wc.lpszClassName = “MyClass”; // tên class

wc.lpfnWndProc = MyWndProc; // tên hàm xử lý message

wc.hInstance = hInstance;

wc.hCursor = LoadCursor(hInstance, (LPSTR) IDC_CURSOR);

wc.hIcon = LoadIcon(hInstance, (LPSTR) IDI_ICON);

wc.hbrBackground = (HBRUSH) (COLOR_APPWORKSPACE + 1);

wc.lpszMenuName = (LPSTR) IDR_MENU;

wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;

wc.cbClsExtra = 0;

Trang 13

Spring 2004

GUI – Window …(tt)

 Minh họa cấu trúc WNDCLASS

typedef struct _WNDCLASS {

số byte dành riêng cho mỗi cửa sổ thuộc class (<=

40 bytes) cbWndExtra

số byte dành riêng cho class (<= 40 bytes) cbClsExtra

kiểu dáng của lớp (class style) Style

tên menu bar, chuỗi kết thúc bằng 0 lpszMenuName

handle của brush, xác định cách tô vùng client; +1 nếu muốn sử dụng màu mặc định của hệ thống.

VD COLOR_BACKGROUND + 1 hbrBackground

handle của icon, xác định biểu tượng của cửa sổ hIcon

handle của cursor, xác định dạng cursor trong vùng client

Trang 14

Spring 2004

GUI – Window …(tt)

 Hàm xử lý thông điệp (window procedure)

được gởi đến cho cửa sổ

1 class

GUI – Window …(tt)

 Dạng tổng quát của 1 hàm xử lý thông điệp

LRESULT CALLBACK WndProc(

HWND hwnd, // handle của window nhận message

UINT uMsg, // ID của message

WPARAM wParam, // tham số thứ 1 của message (WORD)

LPARAM lParam) // tham số thứ 2 của message (LONG)

Trang 15

Spring 2004

GUI – Window …(tt)

 Các thuộc tính của cửa sổ:

CreateWindow(“MyClass”, // class name

“XYZ Application”, // window title

WS_OVERLAPPEDWINDOW, // window style

CW_USEDEFAULT, // default x

CW_USEDEFAULT, // default y

CW_USEDEFAULT, // default Width

CW_USEDEFAULT, // default Height

(HWND) NULL, // parent handle

(HMENU) NULL, // MenuBar

hInstance, // application instance

NULL); // extra default data

Trang 16

Spring 2004

Tài nguyên của ứng dụng (Resources)

 Resouce:

dụng (VD Menu bar, dialog, bitmap, icon,

cursor,…)

trong file thi hành của ứng dụng khi biên dịch

ƒ Dialog box: - khung hộp thoại (Dialogbox Template)

ƒ Enhanced metafile: - tập hợp các cấu trúc để lưu ảnh

(picture) theo định dạng “độc lập thiết bị” (Device-Independent format)

Trang 17

Spring 2004

Tài nguyên của ứng dụng (Resources)…(tt)

Accelerator và Bitmap

Tài nguyên của ứng dụng (Resources)…(tt)

CursorCaret

Trang 18

Spring 2004

Tài nguyên của ứng dụng (Resources)…(tt)

IconDialogBox template

Tài nguyên của ứng dụng (Resources)…(tt)

Menubar

Trang 19

Spring 2004

Tài nguyên của ứng dụng (Resources)…(tt)

Version Information

Một chương trình tổng quát xây dựng trên Win32 API

 Các bước tạo lập chương trình

Trang 20

Spring 2004

Một chương trình tổng quát xây dựng trên Win32 API…(tt)

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance, LPSTR lpCmdLine,

int nCmdShow)

ƒ hInstance: handle của ứng dụng

ƒ hPrevInstance: handle của thể hiện trước của cùng một

ứng dụng Trong Win32, giá trị này = NULL

ƒ lpCmdLine: chuỗi chứa dòng lệnh (command line)

VD “winword c:\My documents\baitap.doc”

ƒ nCmdShow: xác định cách thức cửa sổ được hiển thị

VD MAXIMIZE, MINIMIZE, SHOW, HIDE,…

Một chương trình tổng quát xây dựng trên Win32 API…(tt)

ATOM MyRegisterClass(HINSTANCE hInstance)

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

Trang 21

Spring 2004

Một chương trình tổng quát xây dựng trên Win32 API…(tt)

Một chương trình tổng quát xây dựng trên Win32 API…(tt)

 Hàm xử lý message của cửa sổ:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message,

WPARAM wParam, LPARAM lParam)

LRESULT CALLBACK About(HWND hDlg, UINT message,

WPARAM wParam, LPARAM lParam)

Trang 22

Spring 2004

Cám ơn - Hỏi & Đáp

Ngày đăng: 14/11/2012, 17:00

TỪ KHÓA LIÊN QUAN

w