You are on page 1of 77

i Hc S Phm Tp.

H Ch Minh Khoa Ton Tin Hc

LP TRNH WINDOWS

Gii thiu tng quan v hc phn lp trnh Windows


Trn Ngc Bo Email: tnbao.dhsp@gmail.com

Mc tiu
Mn hc cung cp cho sinh vin kin thc v phng php lp trnh trn mi trng Windows
C ch qun l chng trnh v x l thng ip trn MS Windows Lp trnh giao din ha - ngi dng (GUI) C ch giao tip thit b ha (GDI) C ch qun l b nh, tp tin. Mn hc ny trnh by phng php lp trnh API trn Windows 32 v k thut lp trnh MFC vi ngn ng minh ha l Visual C++ 6.0

Mc tiu
To cho sinh vin mt nn tng trong vic tip thu cc ngn ng lp trnh cp cao khc trn Windows nh: Visual Basic, Delphi, C++ Builder, C#, Visual basic.Net, J Builder, Java... To cho sinh vin mt kin thc c bn c th t nghin cu tip cc vn khc trong vic lp trnh trn Windows nh: DDE, OLE, giao tip vi thit b ngoi vi, ...

Kin thc - k nng


Kin thc
C kin thc c bn v lp trnh trong mi trng Windows Lp trnh giao din ngi dng Phng php trnh giao tip h qun tr c s d liu Lp trnh s dng DLL, Component,

K nng
S dng c cng c Visual C++
Xy dng c ng dng ha Xy dng c ng dng qun l tng tc vi CSDL SQL Server 2000 Xy dng c ng dng tch hp mt s Third-Party Component

S dng c mt s cng c to Report nh: Crystal Report, C1 Report.

Mt s ng dng minh ha
Mt s ng dng lp trnh c bn nh:
My tnh b ti in thoi Chng trnh nghe nhc

ng dng biu din cc i tng hnh hc


Paint X l nh

Mt s ng dng minh ha
ng dng m phng thut ton
Cu trc d liu: mng, danh sch lin kt, cy nh phn, L thuyt th

Mt s ng dng c s d liu nh:


Qun l hc sinh, Qun l sinh vin, Qun l nh thuc, Bu in Qun l d n (Project Management) Qun l lung cng vic (Workflow) Qun l nhn s .

cng mn hc (5vht= 75t)


Chng Chng Chng Chng Chng Chng 1 2 3 4 5 6 Khi nim v lp trnh Windows K thut lp trnh Visual C++ (MFC) Qun l b nh Th vin ha GDI Th vin lin kt ng Lp trnh CSDL ADO SQL Server

Chng 7 Lp trnh a tiu trnh

Cng c thc hnh


Visual Studio 6.0
Visual C++ 6.0

Visual Studio.Net 2003


Visual C++ Projects

Visual Studio.Net 2005

Cng c thc hnh


Visual Studio 6.0 - Visual C++ 6.0

Cng c thc hnh


Visual Studio.Net 2003 - Visual C++ Projects

Thc hnh v thi kt thc hc phn


Bi tp lp (Project):
Hnh thc: bt buc. S lng: 2 bi, mi bi 1.5

Thi kt thc hc phn


Hnh thc: thi thc hnh trc tip trn my Thi gian: 90 120 pht im thi: 7

Bi tp project
Bi tp project 1
Ni dung: Lp trnh cn bn, xy dng ng dng tng t nh: Paint, Calculator, Telephone, Kin thc lin quan: Dialogs, Menu, Toolbar, GDI,

Bi tp project 2
Ni dung: Lp trnh c s d liu C s d liu: Access 2003 hoc SQL Server 2000 Report: Crystal Report, C1Report,

Np bi tp project
Bi tp project 1
Np vo gia hc k Sinh vin np bi cho lp trng

Bi tp project 2
Np vo cui hc k, trc khi thi thc hnh 1 tun. Sinh vin np bi cho lp trng

Thc hnh v thi kt thc hc phn


Bi tp min thi
Hnh thc: khng bt buc. L mt dng bi tp project nng cao, lin quan n mt ch do GV xut, sinh vin t thc hin. Mi sinh vin lm mt ti. Sinh vin lm bi tp min thi s khng phi lm 2 bi tp project bt buc trn. Trong trng hp sinh vin khng c min thi, im bi tp min thi s c tnh l im bi tp project (ti a 3).

Bi tp min thi
Ni dung
Bo co vit m t ng dng theo mu qui nh CD chng trnh c t chc theo mu qui nh

Np bi
Thi gian: sinh vin np bi vo cui hc k, trc khi thi thc hnh 2 tun. Np bi trc tip cho gio vin l thuyt

Ti liu tham kho


[1] ng Vn c, L Quc Hng (1999), Lp trnh Windows bng Visual C++, Nh xut bn gio dc. [2] Advanced MFC programming [3] Jeff Prosise (1999), Programming Windows with MFC 2nd Edition, Microsoft Press. [4] Microsoft Press (1999), Desktop application with MS Visual C++ 6.0 MCSD Training Kit. [5] David J. Kruglinski (1998), Programming Microsoft Visual C++ Fifth Edition, Microsoft Press. [6] Charles Petzold (1998), Programming Windows Fifth Edition, Microsoft Press. [7] Michael Pickens and Scot Wingo (1998), Microsoft Visual C++ MFC FAQ v5.6, Microsoft Press. [8] MSDN [9] http://msdn.microsoft.com [10] http://www.codeguru.com [11] http://codeproject.com [12] http://expert-exchange.com

i Hc S Phm Tp. H Ch Minh Khoa Ton Tin Hc

LP TRNH WINDOWS

MT S KHI NIM C BN TRONG LP TRNH WINDOWS

Mt s khi nim c bn Lp trnh s kin thng ip M hnh lp trnh Windows

NI DUNG
Mt s im khc bit gia lp trnh Windows & DOS Mt s khi nim c bn Lp trnh s kin (Even driven programming) Cc thnh phn giao din ha GUI Ti nguyn ca ng dng (Resource) Th vin lp trnh Windows M hnh lp trnh Windows Mt chng trnh tng qut xy dng trn Win API

NI DUNG
Mt s im khc bit gia lp trnh Windows & DOS Mt s khi nim c bn Lp trnh s kin (Even driven programming) Cc thnh phn giao din ha GUI Ti nguyn ca ng dng (Resource) Th vin lp trnh Windows M hnh lp trnh Windows Mt chng trnh tng qut xy dng trn Win API

Mt s im khc bit gia lp trnh Windows & DOS

Chng trnh minh ha c ch thc hin tun t trong mi trng DOS

Mt s im khc bit gia lp trnh Windows & DOS

Chng trnh minh ha trong mi trng Window

Mt s im khc bit gia lp trnh Windows & DOS

Tch hp sn Multimedia

Mt s im khc bit gia lp trnh Windows & DOS

H tr nhiu cng ngh trong lp trnh Windows

Mt s im khc bit gia lp trnh Windows & DOS


DOS
Thc hin tun t Single Task Single CPU Phi dng cc th vin Multimedia ring ng dng 16 bits Khng h tr nhiu cng ngh

WINDOWS
Lp trnh s kin da vo thng ip (message) Multi-tasking Multi CPU Tch hp sn Multimedia H tr 32 bits hoc hn na H tr nhiu cng ngh DLL, COM, DDE, OLE

Mt s khi nim c bn
Khi nim Din gii Mt gi tr 32bits khng du (unsigned) do HH to ra lm nh danh cho 1 i tng (file, ca s, vng nh, menu, toolbar) Mt gi tr nguyn do ng dng to ra lm nh danh cho 1 i tng (menu item, tool button, control,) Mt gi tr nguyn do HH to ra nh danh cho 1 th hin ang thc thi ca ng dng Thuc tnh ca mt hm/th tc s c gi bi HH, khng phi bi ng dng Th vin th tc/hm, lp i tng c xy dng sn bi window v cc hng khc

Handle ID (Identifier) Instance Callback Library

NI DUNG
Mt s im khc bit gia lp trnh Windows & DOS Mt s khi nim c bn Lp trnh s kin (Even driven programming) Cc thnh phn giao din ha GUI Ti nguyn ca ng dng (Resource) Th vin lp trnh Windows M hnh lp trnh Windows Mt chng trnh tng qut xy dng trn Win API

Lp trnh Windows - lp trnh s kin

S kin v thng ip

Lp trnh Windows - lp trnh s kin


System queue Mouse Application queue GetMessage() TranslateMessage() DispatchMessage() WindowProc() DefWindowProc()

Keyboard

Device driver

Other device

Qui trnh x l thng ip

S kin v x l thng ip

WinMain

Window Procedure

NI DUNG
Mt s im khc bit gia lp trnh Windows & DOS Mt s khi nim c bn Lp trnh s kin (Even driven programming) Cc thnh phn giao din ha GUI Ti nguyn ca ng dng (Resource) Th vin lp trnh Windows M hnh lp trnh Windows Mt chng trnh tng qut xy dng trn Win API

Cc thnh phn giao din ha - GUI


GUI : Graphics User Interface Cc dng GUI c bn

Dialog

SDI

MDI

Cc thnh phn giao din ha - GUI


Dialog
C mt ca s lm vic Thng c kch thc c nh Thng khng c menu bar

SDI Single Document Interface


C mt ca s lm vic Cho php thay i kch thc ca s (Resizeable) Khng c ca s con

MDI Multiple Document Interface


C mt ca s lm vic chnh (Main frame) v nhiu ca s con (Child Frame) Cho php thay i kch thc ca s (Resizeable) Cho php Minimize/Maximize/Close/Arrange/Cascade ca s con

Calculator

Paint

Workflow Editor

Cc thnh phn giao din ha - GUI


App Window Shortcut Icon Child Window Dialog box Desktop Window

Child Window

Control Parent Window

Cc thnh phn giao din ha - GUI


Window Icon Window Caption Title bar Minimized, Restored, Maximized buttons Tool bar

Menu bar

Dialog bar Client Area

Status bar

Scroll bar

Cc thnh phn ca 1 ca s chun

GUI Controls
Property sheet Static text Combo box (Edit text + List box Drop down list Frame Check box

Push button

Push button

Cc dng control chun ca windows

GUI Controls
Property sheet Check box

Static text

Image

Radio button Spin

Push button

Edit text

Push button

Cc dng control chun ca windows

GUI Controls
Menu Title bar Tool bar

Tree View

Combo Box

Scroll bar

Status bar

List view

NI DUNG
Mt s im khc bit gia lp trnh Windows & DOS Mt s khi nim c bn Lp trnh s kin (Even driven programming) Cc thnh phn giao din ha GUI Ti nguyn ca ng dng (Resource) Th vin lp trnh Windows M hnh lp trnh Windows Mt chng trnh tng qut xy dng trn Win API

Ti nguyn ca ng dng (Resources)


Resource l mt i tng (Object) c s dng trong ng dng, v d: Menu bar, tool bar, dialog, icon, cursor, bitmap Resource c nh ngha bn ngoi (tch bit vi source code) v c thm vo trong tp tin thi hnh (EXE) ca ng dng khi bin dch (linking)
Compiler
Source code Resources

Resource Compiler

OBJ files

Linker

Resource file (Res)

.EXE

Qui trnh bin dch ng dng Visual C++


Source code Resource

Linker

Ti nguyn ca ng dng Tool bar

Ti nguyn ca ng dng Accelerator

Ti nguyn ca ng dng Bitmap

Ti nguyn ca ng dng Cursor

Demo

Ti nguyn ca ng dng Dialog

Ti nguyn ca ng dng Icon

Ti nguyn ca ng dng Menu

Ti nguyn ca ng dng String table

Demo

Ti nguyn ca ng dng Tool bar

Ti nguyn ca ng dng Version Info

Ti nguyn ca ng dng (Resources)


Loi Accelerator Bitmap Caret Cursor Dialog box Enhanced metafile Font Icon Menu String table Version information
nh bitmap Con tr vn bn Con tr chut Khung hp thoi Tp hp cc cu trc lu nh (picture) theo nh dng c lp thit b (Device Independent format) Font ch Biu tng Menu Bng m t cc chui k t Bng m t thng tin phin bn

Din gii
Bng m t phm tt (Hot- key)

NI DUNG
Mt s im khc bit gia lp trnh Windows & DOS Mt s khi nim c bn Lp trnh s kin (Even driven programming) Cc thnh phn giao din ha GUI Ti nguyn ca ng dng (Resource) Th vin lp trnh Windows M hnh lp trnh Windows Mt chng trnh tng qut xy dng trn Win API

B th vin SDK Software Developer Kit


SDK l b th vin lp trnh nn tng ca h iu hnh Windows SDK cung cp tt c cc cng c cn thit xy dng mt ng dng trn Windows SDK c s dng nh l th vin c s to ra nhng th vin cp cao hn trong nhng ngn ng lp trnh. V d: MFC ca Visual C++, OWL ca Borland,

Mt s thnh phn tiu biu ca SDK


Win32 API GDI/GDI+ Windows Multimedia OpenGL DirectX COM/COM+ ADO (ActiveX Data Object) OLE DB
Tham kho chi tit trong MSDN

http://msdn.microsoft.com/library/default.asp

NI DUNG
Mt s im khc bit gia lp trnh Windows & DOS Mt s khi nim c bn Lp trnh s kin (Even driven programming) Cc thnh phn giao din ha GUI Ti nguyn ca ng dng (Resource) Th vin lp trnh Windows M hnh lp trnh Windows Mt chng trnh tng qut xy dng trn Win API

M hnh lp trnh Windows

WinMain

Window Procedure

Mt chng trnh tng qut xy dng trn API


#include <windows.h> LONG WINAPI WndProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) {

//Khai bo lp ca s //ng k lp ca s //To lp ca s //Hin th ca s //Thc hin vng lp x l thng ip


}

Khai bo lp ca s
WNDCLASS wc; HWND hwnd; MSG msg; wc.style = 0; // Class style wc.lpfnWndProc = (WNDPROC) WndProc; // Window procedure address wc.cbClsExtra = 0; // Class extra bytes wc.cbWndExtra = 0; // Window extra bytes wc.hInstance = hInstance; // Instance handle wc.hIcon = LoadIcon (NULL, IDI_WINLOGO); // Icon handle wc.hCursor = LoadCursor (NULL, IDC_ARROW); // Cursor handle wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1); // Background color wc.lpszMenuName = NULL; // Menu name wc.lpszClassName = "MyWndClass"; // WNDCLASS name

Cu trc WNDCLASS
typedef struct WNDCLASS { UINT int int HICON HCURSOR HBRUSH LPCTSTR LPCTSTR style; cbClsExtra; cbWndExtra; hIcon; hCursor; hbrBackground ; lpszMenuName; lpszClassName; WNDPROC lpfnWndProc;

HINSTANCE hInstance;

} WNDCLASS, *PWNDCLASS;

Cu trc WNDCLASS
Thuc tnh Style lpfnWndProc cbClsExtra cbWndExtra hInstance hIcon hCursor hbrBackground lpszMenuName lpszClassName
Kiu dng ca lp Hm tip nhn v x l thng ip S byte dnh ring cho class (<=40 bytes) s byte dnh ring cho mi ca s thuc class (<=40 bytes) Instance ca ng dng thc hin vic ng k class Handle ca icon, xc nh biu tng ca ca s Handle ca cursor, xc nh dng cursor trong vng client Handle ca brush, xc nh cch t vng client; +1 nu mun s dng mu mc nh ca h thng. V d: COLOR_BACKGRAOUND + 1 Tn menu bar, chui kt thc bng 0 Tn lp, chui kt thc bng 0

ngha

ng k v to lp lp ca s
RegisterClass (&wc); hwnd = CreateWindow ( "MyWndClass", // WNDCLASS name "SDK Application", // Window title WS_OVERLAPPEDWINDOW, // Window style CW_USEDEFAULT, // Horizontal position CW_USEDEFAULT, // Vertical position CW_USEDEFAULT, // Initial width CW_USEDEFAULT, // Initial height HWND_DESKTOP, // Handle of parent window NULL, // Menu handle hInstance, // Application's instance handle NULL // Window-creation data );

Hin th ca s - vng lp x l thng ip


ShowWindow (hwnd, nCmdShow); UpdateWindow (hwnd); while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam;

Hm x l Message ca ca s
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_PAINT: hdc = BeginPaint (hwnd, &ps); Ellipse (hdc, 0, 0, 200, 100); EndPaint (hwnd, &ps); return 0; case WM_DESTROY: PostQuitMessage (0); return 0; } return DefWindowProc (hwnd, message, wParam, lParam); }

To ng dng Win API bng AppWizard


Chn menu File New Chn Tab Projects Chn loi project Win32 Application t tn project trong Project name Xc nh ng dn th mc trong Location Chn option Create new workspace Nhn OK qua bc sau

To ng dng Win API bng AppWizard


Cc loi ng dng trn windows Tn projec t

Th mc lu project

To ng dng Win API bng AppWizard

Chn option A typical Hello World application AppWizard t ng to ra ng dng mu

ng dng Win API n gin Source file

ng dng Win API - Resource

ng dng Win API Source code

ng dng Win API hm WinMain

ng dng Win API hm ng k lp ca s

ng dng Win API hm to ca s

ng dng Win API hm x l thng ip ca s

ng dng Win API hm x l hp thoi About

ng dng Win API kt qu chy chng trnh

ng dng Win API kt qu chy chng trnh

You might also like