眉、Windows夕崧侃尖!鮫泣才?(岷?)
Windows辛參鮫岷?、蓉垈??蓉垈垈巓貧議爆??才唄毘櫛爆?。Windows 98屶址議7倖鮫?痕方頁?
-
LineTo 鮫岷?。
-
Polyline才PolylineTo 鮫匯狼双屢銭議岷?。
-
PolyPolyline 鮫謹怏屢銭議?。
-
Arc 鮫蓉垈?。
-
PolyBezier才PolyBezierTo 鮫唄毘櫛爆?。
総翌?Windows NT珊屶隔3嶽鮫?痕方?
-
ArcTo才AngleArc 鮫蓉垈?。
-
PolyDraw 鮫匯狼双屢銭議?參式唄毘櫛爆?。
宸眉倖痕方Windows 98音屶址。
壓云嫗議朔中厘繍初府匯乂屡鮫?匆野秘侭鮫夕侘議撃液曝囃議痕方?宸乂痕方頁?
-
Rectangle 鮫裳侘。
-
Ellipse 鮫蓉垈。
-
RoundRect 鮫揮垈叔議裳侘。
-
Pie 鮫蓉垈議匯何蛍?聞凪心軟栖崧匯倖蛭侘。
-
Chord 鮫蓉垈議匯何蛍?參格広侘。
譜姥坪否議励倖奉來唹峒彭喘宸乂痕方侭鮫?議翌鉱?朕念鮫永議了崔?叙喘噐LineTo、PolylineTo、PolyBezierTo才ArcTo ?、鮫永、嘘尚圭塀、嘘尚弼才紙夕庁塀。
鮫匯訳岷??駅倬柵出曾倖痕方。及匯倖痕方峺協阻?議蝕兵泣?及屈倖痕方峺協阻?議嶮泣?
MoveToEx (hdc, xBeg, yBeg, NULL) ; LineTo (hdc, xEnd, yEnd) ;
MoveToEx糞縞貧音氏鮫??万峪頁譜協阻譜姥坪否議仝朕念了崔々奉來。隼朔LineTo痕方貫朕念議了崔欺万侭峺協議泣鮫匯訳岷?。朕念了崔峪頁喘噐凪万叱倖GDI痕方議蝕兵泣。壓坪協議譜姥坪否嶄?朕念了崔恷兜譜協壓泣?0,0?。泌惚壓柵出LineTo岻念短嗤譜協朕念了崔?椎担万繍貫?塋焦瘕魑鍔麌禄膿ĺ嫉ページ漾?
弌煽雰?
Windows議16了井云嶄?喘栖個延朕念了崔議痕方頁MoveTo。乎痕方峪距屁眉倖歌方?譜姥坪否鞘凹、x才y恫炎。痕方宥狛曾倖16了方憧撹議32了涙屎減催海屁方勧指枠念議朕念了崔。隼遇?壓Windows議32了井云嶄?恫炎頁32了議方峙?遇C議32了井云嶄嗽短嗤協吶64了議屁方方象侏蓑?咀緩宸嶽個延吭龍彭MoveTo壓凪勧指峙嶄音壅峺竃枠念議朕念了崔。壓糞縞議殻會亟恬嶄?喇MoveTo勧指議峙叱窄貫栖音喘?咀緩祥俶勣匯倖仟痕方?宸祥頁MoveToEx。
MoveToEx議恷朔匯倖歌方頁峺?POINT潤更議峺寞。貫乎痕方勧指朔?POINT潤更議x才y忖粁峺竃阻枠念議朕念了崔。泌惚艇音俶勣宸嶽佚連?宥械泌緩??辛參酒汽仇泌貧中議箭徨侭幣議椎劔繍恷朔匯倖歌方譜協葎NULL。
少御?
勝砿Windows 98嶄議恫炎峙心軟栖頁32了議?糞縞貧抜峪喘欺阻詰16了?恫炎峙糞縞貧瓜尫崙壓-32,768欺32,767岻寂。壓Windows NT嶄?聞喘頼屁議32了峙。
泌惚艇俶勣朕念了崔?祥辛參宥狛參和柵出資誼?
GetCurrentPositionEx (hdc, &pt) ;
凪嶄?pt頁POINT潤更議。
和中議殻會旗鷹貫完笥議恣貧叔蝕兵?壓?塋焦瘕鰆仍km燦毿璉顳o灑誅炒?簣犖?100倖夕殆?凪嶄hwnd頁完笥鞘凹?hdc頁譜姥坪否鞘凹?遇x才y頁屁方?
GetClientRect (hwnd, &rect) ;
for ( x = 0 ; x < rect.right ; x+= 100)
{
MoveToEx (hdc, x, 0, NULL) ;
LineTo (hdc, x, rect.bottom) ;
}
for (y = 0 ; y < rect.bottom ; y += 100)
{
MoveToEx (hdc, 0, y, NULL) ;
LineTo (hdc, rect.right, y) ;
}
埋隼喘曾倖痕方栖鮫匯訳岷??垉池佩Ë薹械i?頁壓錬李鮫匯怏屢銭議岷?扮?朕念鮫永了崔奉來嗽氏延誼載嗤喘。箭泌?艇辛嬬?協吶匯倖淫根5倖泣?10倖峙?議方怏?栖鮫匯倖裳侘議円順崇?
POINT apt[5] = { 100, 100, 200, 100, 200, 200, 100, 200, 100, 100 } ;
廣吭?恷朔匯倖泣嚥及匯倖泣屢揖。孖壓?峪俶勣聞喘MoveToEx卞欺及匯倖泣?旺斤朔中議泣聞喘LineTo?
MoveToEx (hdc, apt[0].x, apt[0].y, NULL) ; for ( i = 1 ; i < 5 ; i++) LineTo (hdc, apt[i].x, apt[i].y) ;
喇噐LineTo貫朕念了崔鮫欺?徽音淫凄?LineTo痕方嶄公竃議泣?侭參宸粁殻會旗鷹短嗤壓販採恫炎侃鮫曾肝。埋隼壓?塋焼烔篭猜箜欛鹸硫惨耡變別癸i?頁壓紙夕字貧賜宀壓凪万紙夕圭塀?和中瀧貧氏讐欺?和?篇状丼惚祥音湊挫阻。
輝艇勣繍方怏嶄議泣銭俊撹?扮?聞喘Polyline痕方勣酒汽誼謹。和中宸訳偃峰鮫竃嚥貧中匯粁殻會旗鷹屢揖議裳侘?
Polyline (hdc, apt, 5) ;
恷朔匯倖歌方頁泣議方朕。厘断珊辛參聞喘(sizeof (apt) / sizeof (POINT))栖燕幣宸倖峙。Polyline嚥匯倖MoveToEx痕方朔中紗叱倖LineTo痕方議丼惚屢揖?徽頁?Polyline屡音聞喘匆音個延朕念了崔。PolylineTo嗤乂音揖?宸倖痕方聞喘朕念了崔恬葎蝕兵泣?旺繍朕念了崔譜協葎恷朔匯功?議嶮泣。和中議殻會旗鷹鮫竃嚥貧中侭幣匯劔議裳侘?
MoveToEx (hdc, apt[0].x, apt[0].y, NULL) ; PolylineTo (hdc, apt + 1, 4) ;
艇辛參斤叱訳?聞喘Polyline才PolylineTo?宸乂痕方壓紙崙鹸墫爆?恷嗤喘阻。艇聞喘喇叱為封崛叱認訳?怏撹議自玉?粁?委万断銭壓匯軟祥崧匯訳爆?匯劔。箭泌?鮫屎碗襖祥頁宸劔議?殻會5-2侭幣議SINEWAVE殻會?塋樵鉾膾臨檝春瞎撒磧?
殻會5-2 SINEWAVE
SINEWAVE.C
/*-------------------------------------------------------------------
SINEWAVE.C -- Sine Wave Using Polyline
(c) Charles Petzold, 1998
---------------------------------------------------------------------*/
#include <windows.h>
#include <math.h>
#define NUM 1000
#define TWOPI (2 * 3.14159)
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("SineWave") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc= WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox ( NULL, TEXT ("Program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow ( szAppName, TEXT ("Sine Wave Using Polyline"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static int cxClient, cyClient ;
HDC hdc ;
int i ;
PAINTSTRUCT ps ;
POINT apt [NUM] ;
switch (message)
{
case WM_SIZE:
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;
return 0 ;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
MoveToEx (hdc, 0, cyClient / 2, NULL) ;
LineTo (hdc, cxClient, cyClient / 2) ;
for (i = 0 ; i < NUM ; i++)
{
apt[i].x = i * cxClient / NUM ;
apt[i].y = (int) (cyClient / 2 * (1 - sin (TWOPI * i / NUM))) ;
}
Polyline (hdc, apt, NUM) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
宸倖殻會嗤匯倖根嗤1000倖POINT潤更議方怏。昧彭for儉桟貫0奐紗欺999?潤更議x撹埀譜協葎貫0弓奐欺方峙cxClient。潤更議y撹埀譜協葎匯倖巓豚議屎碗爆?峙?旺瓜慧寄參野諾?塋焦瘕髻U蕙殩腊澣鳥耿峠欞?荒蛋牧燦?Polyline柵出。咀葎Polyline痕方頁壓譜姥駁強殻會蚊肝貧糞恬議?咀緩万勣曳柵出1000肝LineTo酔誼謹?潤惚泌夕5-5侭幣。