Tải bản đầy đủ (.pdf) (18 trang)

Bài giảng Visual C - 05

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (332.91 KB, 18 trang )

1
THƯ VI
THƯ VI


N Đ
N Đ


HO
HO


GDI
GDI
(Graphics Device Interface)
(Graphics Device Interface)
L
L


p tr
p tr
ì
ì
nh trên môi trư
nh trên môi trư


ng Windows
ng Windows


N
N


i
i
dung
dung


Gi
Gi


i
i
thi
thi


u
u


C
C
á
á
c
c

kh
kh
á
á
i
i
ni
ni


m
m


b
b


n
n


C
C
á
á
c
c
v
v

í
í
d
d


v
v


h
h
ì
ì
nh
nh
đ
đ


h
h


a
a


X
X







nh
nh
Bitmap
Bitmap


In
In


n
n
2
In
In


n
n
(Printing)
(Printing)


T

T


ng
ng
quan
quan
v
v


in
in


n
n
trong
trong
Windows
Windows


In
In


n
n
trong

trong
MFC
MFC
In
In


n
n
T
T


ng
ng
quan
quan
v
v


in
in


n
n
trong
trong
Windows

Windows


Nguyên t
Nguyên t


c cơ b
c cơ b


n v
n v


in
in


n
n


T
T
á
á
c v
c v



in
in


Banding
Banding


Spooling
Spooling


Printer DC
Printer DC


M
M


t chương tr
t chương tr
ì
ì
nh in đơn gi
nh in đơn gi


n d

n d
ù
ù
ng API
ng API
3
T
T


ng
ng
quan
quan
v
v


in
in


n
n
trong
trong
Windows
Windows
Nguyên
Nguyên

t
t


c
c


b
b


n
n
v
v


in
in


n
n
[1]
[1]
X
X
á
á

c đ
c đ


nh ng
nh ng


c
c


nh thi
nh thi
ế
ế
t b
t b


c
c


a
a
m
m
á
á

y
y
in.
in.
[2]
[2]
G
G


i
i
h
h
à
à
m
m
StartDoc
StartDoc
đ
đ


b
b


t
t

đ
đ


u
u
in
in
m
m


t
t
t
t
à
à
i
i
li
li


u
u
m
m



i
i
[3]
[3]
G
G


i
i
h
h
à
à
m
m
StartPage
StartPage
đ
đ


b
b


t
t
đ
đ



u
u
1
1
trang
trang
in
in
[4]
[4]
G
G


i
i
c
c
á
á
c
c
h
h
à
à
m
m

v
v


c
c


a
a
GDI
GDI
đ
đ


th
th


hi
hi


n
n
văn
văn
b
b



n
n
(text) hay
(text) hay
h
h
ì
ì
nh
nh


nh
nh
(bitmap, graphics)
(bitmap, graphics)
ra
ra
trang
trang
in
in
[5]
[5]
G
G



i
i
h
h
à
à
m
m
EndPage
EndPage
đ
đ


k
k
ế
ế
t
t
th
th
ú
ú
c
c
1
1
trang
trang

in
in
[6]
[6]
G
G


i
i
h
h
à
à
m
m
EndDoc
EndDoc
đ
đ


k
k
ế
ế
t
t
th
th

ú
ú
c
c
in
in
t
t
à
à
i
i
li
li


u
u
Ghi
Ghi
ch
ch
ú
ú
:
:
Các hàm StartDoc/EndDoc, StartPage/EndPage đềuthuộcthư
việnGDI
Bước [3], [4], [5] có thể làm nhiềulầnnếumuốn in trên nhiều trang
T

T


ng
ng
quan
quan
v
v


in
in


n
n
trong
trong
Windows
Windows
Nguyên
Nguyên
t
t


c
c



b
b


n
n
v
v


in
in


n
n
4
T
T


ng
ng
quan
quan
v
v



in
in


n
n
trong
trong
Windows
Windows
T
T
á
á
c
c
v
v


in
in


L
L
à
à
m
m



t
t
t
t
à
à
i
i
li
li


u
u
c
c


n
n
in
in


C
C
ó
ó

th
th


ch
ch


a
a
1 hay
1 hay
nhi
nhi


u
u
trang
trang
in
in


T
T
á
á
c v
c v



in đư
in đư


c
c
đ
đ


nh
nh
ngh
ngh
ĩ
ĩ
a
a
b
b


i
i
1
1
c
c



p
p
l
l


nh
nh
StartDoc/EndDoc
StartDoc/EndDoc


C
C


u
u
tr
tr
ú
ú
c
c
d
d



li
li


u
u
đư
đư


c
c
d
d
ù
ù
ng
ng
cho
cho
t
t
á
á
c v
c v


in l
in l

à
à
Enhanced Metafile (EMF)
Enhanced Metafile (EMF)


EMF:
EMF:
c
c


u
u
tr
tr
ú
ú
c
c
d
d
ù
ù
ng
ng
đ
đ



lưu
lưu
tr
tr


c
c
á
á
c
c
l
l


nh
nh
v
v


text,
text,
v
v


đ
đ



h
h


a
a
,
,


T
T


ng
ng
quan
quan
v
v


in
in


n
n

trong
trong
Windows
Windows
Banding
Banding


GDI
GDI
lưu
lưu
tr
tr


c
c
á
á
c
c
l
l


nh
nh
v
v



lên
lên
m
m
á
á
y
y
in
in
trong
trong
m
m


t
t
file
file
c
c
ó
ó
d
d



ng
ng
~EMF
~EMF
*.TMP
*.TMP


Khi
Khi


ng
ng
d
d


ng
ng
k
k
ế
ế
t
t
th
th
ú
ú

c
c
in
in


n
n
1
1
trang
trang
(
(
b
b


ng
ng
l
l


nh
nh
EndPage
EndPage
),
),

tr
tr
ì
ì
nh
nh
đi
đi


u
u
khi
khi


n
n
s
s


chuy
chuy


n
n
đ
đ



i
i
c
c
á
á
c
c
l
l


nh
nh
v
v


trong
trong
metafile
metafile
th
th
à
à
nh
nh

c
c
á
á
c
c
k
k
ế
ế
t
t
xu
xu


t
t
th
th


c
c
s
s


trên
trên

m
m
á
á
y
y
in
in
Æ
Æ
c
c


n
n
thi
thi
ế
ế
t
t
ph
ph


i
i
t
t



o
o
ra
ra
1
1
trang
trang
đ
đ


h
h


a
a


K
K
í
í
ch
ch
thư
thư



c
c
b
b


nh
nh


cho
cho
1
1
trang
trang
đ
đ


h
h


a
a
kh
kh

á
á
l
l


n
n
(VD.
(VD.
M
M
á
á
y
y
in 600DPI,
in 600DPI,
gi
gi


y
y
letter
letter
c
c



n
n
kho
kho


ng
ng
4MB)
4MB)


Tr
Tr
ì
ì
nh đi
nh đi


u khi
u khi


n m
n m
á
á
y in thư
y in thư



ng
ng
s
s


d
d


ng
ng
k
k


thu
thu


t
t


chia
chia
band
band



:
:
chia
chia
1
1
trang
trang
đ
đ


h
h


a
a
th
th
à
à
nh
nh
nhi
nhi



u
u
v
v
ù
ù
ng
ng
h
h
ì
ì
nh
nh
ch
ch


nh
nh


t.GDI
t.GDI
s
s


l
l



y
y
k
k
í
í
ch
ch
thư
thư


c
c
band
band
t
t


tr
tr
ì
ì
nh đi
nh đi



u khi
u khi


n m
n m
á
á
y in v
y in v
à
à
th
th


c
c
hi
hi


n
n
c
c
á
á
c
c

l
l


nh
nh
v
v


trong
trong
metafile
metafile
lên
lên
c
c
á
á
c
c
band
band
c
c


a
a

1
1
trang
trang
5
T
T


ng
ng
quan
quan
v
v


in
in


n
n
trong
trong
Windows
Windows
Spooling
Spooling



Windows
Windows
qu
qu


n
n


qu
qu
á
á
tr
tr
ì
ì
nh
nh
in
in


n
n
b
b



ng
ng
tr
tr
ì
ì
nh
nh
qu
qu


n
n


in (Printer Spooler).
in (Printer Spooler).
Printer spooler
Printer spooler
đư
đư


c
c
t
t



đ
đ


ng
ng
n
n


p
p
khi
khi
Windows
Windows
kh
kh


i
i
đ
đ


ng
ng
v

v
à
à
k
k
ế
ế
t
t
th
th
ú
ú
c
c
khi
khi
h
h


đi
đi


u h
u h
à
à
nh shutdown

nh shutdown


Printer spooler
Printer spooler
gi
gi
ú
ú
p
p
:
:
–Xácđịnh trình điềukhiểnmáyin; nạpvàobộ nhớ
–Lậplịch cho việcin ấn
–Gởidữ liệu ra máy in qua cổng (parallel, serial)
– Xoá các file TMP sau khi in xong…


Ngư
Ngư


i d
i d
ù
ù
ng c
ng c
ó

ó
th
th


t
t


t
t


ch
ch
ế
ế
Spooling
Spooling
đ
đ


i
i
v
v


i

i
m
m


t
t
m
m
á
á
y
y
in (
in (
trong
trong
Printer
Printer
properties/Ports)
properties/Ports)
đ
đ


in
in
nhanh
nhanh
hơn

hơn
,
,
v
v
ì
ì
GDI
GDI
không
không
lưu
lưu
d
d


li
li


u
u
c
c


n
n
in

in
lên
lên
file
file
m
m
à
à
g
g


i
i
tr
tr


c
c
ti
ti
ế
ế
p
p
ra
ra
m

m
á
á
y
y
in
in
ho
ho


c
c
d
d
ù
ù
ng
ng
m
m


t
t
tr
tr
ì
ì
nh

nh
đi
đi


u
u
khi
khi


n
n
spooling
spooling
kh
kh
á
á
c
c
(VD.
(VD.
M
M
á
á
y
y
in

in
m
m


ng
ng
)
)
T
T


ng quan v
ng quan v


in
in


n trong Windows
n trong Windows
Spooling
Spooling
6
T
T



ng quan v
ng quan v


in
in


n trong Windows
n trong Windows
Spooling
Spooling
T
T


ng
ng
quan
quan
v
v


in
in


n
n

trong
trong
Windows
Windows
Printer DC
Printer DC


Vi
Vi


c
c
đ
đ


u
u
tiên
tiên
khi
khi
in
in
l
l
à
à

ph
ph


i
i
t
t


o
o
ra
ra
ng
ng


c
c


nh thi
nh thi
ế
ế
t b
t b



m
m
á
á
y in.
y in.


S
S


d
d


ng
ng
Printer DC
Printer DC
trong
trong
c
c
á
á
c
c
l
l



nh
nh
GDI
GDI
gi
gi


ng
ng
như
như
d
d
ù
ù
ng
ng
Window
Window
DC.
DC.


Ngư
Ngư



i d
i d
ù
ù
ng c
ng c
ó
ó
th
th


c
c
à
à
i
i
đ
đ


t
t
nhi
nhi


u
u

m
m
á
á
y
y
in,
in,
nhưng
nhưng
ch
ch


c
c
ó
ó
1
1
m
m
á
á
y
y
in
in
m
m



c
c
đ
đ


nh.
nh.


M
M


i
i
m
m
á
á
y
y
in
in
đ
đ



u
u
c
c
ó
ó
tr
tr
ì
ì
nh
nh
đi
đi


u
u
khi
khi


n
n
tương
tương


ng
ng



C
C


n
n
ph
ph


i
i
x
x
á
á
c
c
đ
đ


nh
nh
tên
tên
c
c



a
a
m
m
á
á
y
y
in
in
khi
khi
t
t


o
o
Printer DC
Printer DC


C
C
ó
ó
2
2

c
c
á
á
ch
ch
t
t


o
o
Printer DC
Printer DC
–Tạo Printer DC trựctiếp
–Tạo Printer DC bằng cách dùng hộpthoạichuẩn PrintDlg
7
T
T


ng quan v
ng quan v


in
in


n trong Windows

n trong Windows
T
T


o l
o l


p Printer DC
p Printer DC
VD1.
VD1.
T
T


o
o
Printer DC
Printer DC
tr
tr


c
c
ti
ti
ế

ế
p
p
HDC
HDC
GetPrinterDC
GetPrinterDC
() {
() {
DWORD
DWORD
dwNeeded
dwNeeded
,
,
dwReturned
dwReturned
;
;
HDC
HDC
hdc
hdc
;
;
PRINTER_INFO_4 * pinfo4;
PRINTER_INFO_4 * pinfo4;
PRINTER_INFO_5 * pinfo5;
PRINTER_INFO_5 * pinfo5;
if (

if (
GetVersion
GetVersion
() & 0x80000000) // Windows 98
() & 0x80000000) // Windows 98
{
{
EnumPrinters(PRINTER_ENUM_DEFAULT
EnumPrinters(PRINTER_ENUM_DEFAULT
, NULL, 5, NULL,
, NULL, 5, NULL,
0, &
0, &
dwNeeded
dwNeeded
, &
, &
dwReturned
dwReturned
);
);
pinfo5 =
pinfo5 =
malloc(dwNeeded
malloc(dwNeeded
);
);
EnumPrinters(PRINTER_ENUM_DEFAULT
EnumPrinters(PRINTER_ENUM_DEFAULT
, NULL, 5,

, NULL, 5,
(PBYTE)pinfo5,dwNeeded,&dwNeeded,&dwReturned);
(PBYTE)pinfo5,dwNeeded,&dwNeeded,&dwReturned);
hdc
hdc
=
=
CreateDC(NULL
CreateDC(NULL
, pinfo5
, pinfo5
-
-
>
>
pPrinterName
pPrinterName
,
,
NULL, NULL);
NULL, NULL);
free(pinfo5);
free(pinfo5);
}
}
T
T


ng quan v

ng quan v


in
in


n trong Windows
n trong Windows
T
T


o l
o l


p Printer DC
p Printer DC
VD1.
VD1.
T
T


o
o
Printer DC
Printer DC
tr

tr


c
c
ti
ti
ế
ế
p
p


(
(
tt
tt
)
)
else // Windows NT
else // Windows NT
{
{
EnumPrinters(PRINTER_ENUM_LOCAL
EnumPrinters(PRINTER_ENUM_LOCAL
, NULL, 4,
, NULL, 4,
NULL, 0, &
NULL, 0, &
dwNeeded

dwNeeded
, &
, &
dwReturned
dwReturned
);
);
pinfo4 =
pinfo4 =
malloc(dwNeeded
malloc(dwNeeded
);
);
EnumPrinters(PRINTER_ENUM_LOCAL
EnumPrinters(PRINTER_ENUM_LOCAL
, NULL, 4,
, NULL, 4,
(PBYTE)pinfo4,dwNeeded,&dwNeeded,&dwReturned);
(PBYTE)pinfo4,dwNeeded,&dwNeeded,&dwReturned);
hdc
hdc
=
=
CreateDC(NULL
CreateDC(NULL
, pinfo4
, pinfo4
-
-
>

>
pPrinterName
pPrinterName
,
,
NULL, NULL);
NULL, NULL);
free(pinfo4);
free(pinfo4);
}
}
return
return
hdc
hdc
;
;
}
}

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×