windows程序设计作业.docx
《windows程序设计作业.docx》由会员分享,可在线阅读,更多相关《windows程序设计作业.docx(25页珍藏版)》请在冰豆网上搜索。
windows程序设计作业
Windows程序设计
院系:
计算机科学与技术
年级:
09级
学号:
姓名:
一.滚动显示文本的程序
/*----------------------------------------------------
SYSMETS2.C--SystemMetricsDisplayProgramNo.2
(c)CharlesPetzold,1998
----------------------------------------------------*/
#defineWINVER0x0500
#include
#include"sysmets.h"
#defineID_TIMER1
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,
PSTRszCmdLine,intiCmdShow)
{
staticTCHARszAppName[]=TEXT("SysMets2");
HWNDhwnd;
MSGmsg;
WNDCLASSwndclass;
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("ThisprogramrequiresWindowsNT!
"),
szAppName,MB_ICONERROR);
return0;
}
hwnd=CreateWindow(szAppName,TEXT("GetSystemMetricsNo.2"),
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);
}
returnmsg.wParam;
}
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
staticintcxChar,cxCaps,cyChar,cyClient,iVscrollPos;
HDChdc;
inti,y;
//char*p=&(char)i;
PAINTSTRUCTps;
TCHARszBuffer2[5];
TCHARszBuffer[10];
TEXTMETRICtm;
switch(message)
{
caseWM_CREATE:
hdc=GetDC(hwnd);
SetTimer(hwnd,ID_TIMER,300,NULL);/////////////////////
GetTextMetrics(hdc,&tm);
cxChar=tm.tmAveCharWidth;
cxCaps=(tm.tmPitchAndFamily&1?
3:
2)*cxChar/2;
cyChar=tm.tmHeight+tm.tmExternalLeading;
ReleaseDC(hwnd,hdc);
return0;
caseWM_SIZE:
cyClient=HIWORD(lParam);
return0;
/*caseWM_VSCROLL:
switch(LOWORD(wParam))
{
caseSB_LINEUP:
iVscrollPos-=1;
break;
caseSB_LINEDOWN:
iVscrollPos+=1;
break;
caseSB_PAGEUP:
iVscrollPos-=cyClient/cyChar;
break;
caseSB_PAGEDOWN:
iVscrollPos+=cyClient/cyChar;
break;
caseSB_THUMBPOSITION:
iVscrollPos=HIWORD(wParam);
break;
default:
break;
}*/
//iVscrollPos=max(0,min(iVscrollPos,NUMLINES-1));
caseWM_TIMER:
iVscrollPos+=1;
if(iVscrollPos>=NUMLINES)
{
iVscrollPos=0;
Sleep(1000);
}
InvalidateRect(hwnd,NULL,TRUE);
return0;
/*if(iVscrollPos!
=GetScrollPos(hwnd,SB_VERT))
{
SetScrollPos(hwnd,SB_VERT,iVscrollPos,TRUE);
InvalidateRect(hwnd,NULL,TRUE);
}
return0;*/
caseWM_PAINT:
hdc=BeginPaint(hwnd,&ps);
for(i=0;i{
y=cyChar*(i-iVscrollPos);
TextOut(hdc,0,y,szBuffer2,
wsprintf(szBuffer2,TEXT("%5d"),
i+1));
TextOut(hdc,80,y,
sysmetrics[i].szLabel,
lstrlen(sysmetrics[i].szLabel));
TextOut(hdc,32*cxCaps,y,
sysmetrics[i].szDesc,
lstrlen(sysmetrics[i].szDesc));
SetTextAlign(hdc,TA_RIGHT|TA_TOP);
TextOut(hdc,32*cxCaps+50*cxChar,y,szBuffer,
wsprintf(szBuffer,TEXT("%5d"),
GetSystemMetrics(sysmetrics[i].iIndex)));
SetTextAlign(hdc,TA_LEFT|TA_TOP);
}
EndPaint(hwnd,&ps);
return0;
caseWM_DESTROY:
KillTimer(hwnd,ID_TIMER);
PostQuitMessage(0);
return0;
}
returnDefWindowProc(hwnd,message,wParam,lParam);
}
/*----------------------------------------------------
SYSMETS2.C--SystemMetricsDisplayProgramNo.2
(c)CharlesPetzold,1998
----------------------------------------------------*/
#defineWINVER0x0500
#include
#include"sysmets.h"
#defineID_TIMER1
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,
PSTRszCmdLine,intiCmdShow)
{
staticTCHARszAppName[]=TEXT("SysMets2");
HWNDhwnd;
MSGmsg;
WNDCLASSwndclass;
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("ThisprogramrequiresWindowsNT!
"),
szAppName,MB_ICONERROR);
return0;
}
hwnd=CreateWindow(szAppName,TEXT("GetSystemMetricsNo.2"),
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);
}
returnmsg.wParam;
}
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
staticintcxChar,cxCaps,cyChar,cyClient,iVscrollPos;
HDChdc;
inti,y;
//char*p=&(char)i;
PAINTSTRUCTps;
TCHARszBuffer2[5];
TCHARszBuffer[10];
TEXTMETRICtm;
switch(message)
{
caseWM_CREATE:
hdc=GetDC(hwnd);
SetTimer(hwnd,ID_TIMER,300,NULL);/////////////////////
GetTextMetrics(hdc,&tm);
cxChar=tm.tmAveCharWidth;
cxCaps=(tm.tmPitchAndFamily&1?
3:
2)*cxChar/2;
cyChar=tm.tmHeight+tm.tmExternalLeading;
ReleaseDC(hwnd,hdc);
return0;
caseWM_SIZE:
cyClient=HIWORD(lParam);
return0;
/*caseWM_VSCROLL:
switch(LOWORD(wParam))
{
caseSB_LINEUP:
iVscrollPos-=1;
break;
caseSB_LINEDOWN:
iVscrollPos+=1;
break;
caseSB_PAGEUP:
iVscrollPos-=cyClient/cyChar;
break;
caseSB_PAGEDOWN:
iVscrollPos+=cyClient/cyChar;
break;
caseSB_THUMBPOSITION:
iVscrollPos=HIWORD(wParam);
break;
default:
break;
}*/
//iVscrollPos=max(0,min(iVscrollPos,NUMLINES-1));
caseWM_TIMER:
iVscrollPos+=1;
if(iVscrollPos>=NUMLINES)
{
iVscrollPos=0;
Sleep(1000);
}
InvalidateRect(hwnd,NULL,TRUE);
return0;
/*if(iVscrollPos!
=GetScrollPos(hwnd,SB_VERT))
{
SetScrollPos(hwnd,SB_VERT,iVscrollPos,TRUE);
InvalidateRect(hwnd,NULL,TRUE);
}
return0;*/
caseWM_PAINT:
hdc=BeginPaint(hwnd,&ps);
for(i=0;i{
y=cyChar*(i-iVscrollPos);
TextOut(hdc,0,y,szBuffer2,
wsprintf(szBuffer2,TEXT("%5d"),
i+1));
TextOut(hdc,80,y,
sysmetrics[i].szLabel,
lstrlen(sysmetrics[i].szLabel));
TextOut(hdc,32*cxCaps,y,
sysmetrics[i].szDesc,
lstrlen(sysmetrics[i].szDesc));
SetTextAlign(hdc,TA_RIGHT|TA_TOP);
TextOut(hdc,32*cxCaps+50*cxChar,y,szBuffer,
wsprintf(szBuffer,TEXT("%5d"),
GetSystemMetrics(sysmetrics[i].iIndex)));
SetTextAlign(hdc,TA_LEFT|TA_TOP);
}
EndPaint(hwnd,&ps);
return0;
caseWM_DESTROY:
KillTimer(hwnd,ID_TIMER);
PostQuitMessage(0);
return0;
}
returnDefWindowProc(hwnd,message,wParam,lParam);
}
二.扫雷
#include"luckydog.h"
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
intWINAPIWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnShowCmd)
{
HWNDhwnd;
WNDCLASScwnd;
cwnd.cbClsExtra=0;
cwnd.cbWndExtra=0;
cwnd.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
cwnd.hCursor=LoadCursor(NULL,IDC_ARROW);
cwnd.hIcon=LoadIcon(hInstance,"IDI_ICON");
cwnd.hInstance=hInstance;
cwnd.lpfnWndProc=WndProc;
cwnd.lpszClassName=szAppName;
cwnd.lpszMenuName="ID_MENU";
cwnd.style=CS_HREDRAW|CS_VREDRAW;
xBorder=GetSystemMetrics(SM_CXBORDER);
yBorder=GetSystemMetrics(SM_CYBORDER);
yCaption=GetSystemMetrics(SM_CYCAPTION);
yMenu=GetSystemMetrics(SM_CYMENU);
Init();
xSize=2*xBorder+COL*XSIZE+2*BORDER+4*SHADOW;
ySize=2*yBorder+ROW*YSIZE+yCaption+yMenu+3*BORDER+6*SHADOW+INFO;
if(!
RegisterClass(&cwnd))
{
MessageBox(NULL,"Errortoregisterthewindowclass!
","error",MB_ICONERROR);
return0;
}
hwnd=CreateWindow(szAppName,TEXT("扫雷"),WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX,CW_USEDEFAULT,CW_USEDEFAULT,xSize,ySize,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nShowCmd);
UpdateWindow(hwnd);
MSGmsg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
returnmsg.wParam;
}
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmsg,WPARAMwParam,LPARAMlParam)
{
HDChdc;
HBRUSHhBrush;
PAINTSTRUCTps;
POINTpt;
staticintx,y,i,j,di,dj,k,timer;
staticHINSTANCEhInstance;
staticintiSelection_RANK=ID_MENU_JUNIOR;
staticboollbutton,rbutton;
HMENUhMenu;
strcpy(heroTime[0].name,"unknownnamehero");
strcpy(heroTime[1].name,"unknownnamehero");
strcpy(heroTime[2].name,"unknownnamehero");
heroTime[0].time=heroTime[1].time=heroTime[2].time=999;
switch(msg)
{
caseWM_CREATE:
Init();
hInstance=((LPCREATESTRUCT)lParam)->hInstance;
for(i=0;i<8;i++)
hBitmap[i]=LoadBitmap(hInstance,TEXT(picname[i].c_str()));
return0;
caseWM_SIZE:
Grid.left=SHADOW+BORDER;
Grid.top=INFO+2*BORDER+SHADOW*3;
Grid.bottom=Grid.top+ROW*YSIZE+2*SHADOW;
Grid.right=Grid.left+COL*XSIZE+2*SHADOW;
rect_info.left=Grid.left;
rect_info.top=2*SHADOW+BORDER;
rect_info.right=Grid.right;
rect_info.bottom=rect_info.top+INFO;
rect_num.left=re