请问如何在屏幕上显示一个数字或是一个倒计时
不是指在控制台窗口上,是在电脑屏幕上;
GDI可不,但是只是画出来,但是怎么有重影;请问还有其他方法吗?
#include <math.h>
#include <windows.h>
#include "resource.h"
#define KUAN 360
#define WS_EX_LAYERED 0x80000
#define HUDU(a) (3.1415*(a)/180.0)
typedef BOOL (WINAPI*FPT)(HWND,int,BOOL,DWORD);
FPT fp;
HINSTANCE hInst;
HPEN hPen[7];
HBRUSH hBrush[7];
int cxscreen,cyscreen;
SYSTEMTIME tm;
int iJiaoDuShiZhen,iJiaoDuFenZhen,iJiaoDuMiaoZhen,iJiaoDuHaoMiao;
HDC hdcMem;
HBITMAP hBitMap;
HANDLE hMut;
int i;
BOOL WINAPI Pro2(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
if(msg==WM_COMMAND)
{
if(wParam==IDOK)EndDialog(hWnd,0);
return 1;
}
return 0;
}
LRESULT WINAPI Pro(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
static int iTouMing=255;
static int iJiaJianTouMingDu=-10;
static int r[7];
int j;
char sz[32];
POINT pts[4];
HMENU hMenu;
static BOOL bBeiJing;
HPEN hPenj;
static int icolors[]={0xff,0xff00,0xff0000,0xffff,0xffff00,0xff00ff,0x99ff};
switch(msg)
{
case WM_CREATE:
hPen[0]=CreatePen(6
[解决办法]
PS_ENDCAP_ROUND,1,0xff);
hPen[1]=CreatePen(6
[解决办法]
PS_ENDCAP_ROUND,1,0xff00);
hPen[2]=CreatePen(6
[解决办法]
PS_ENDCAP_ROUND,1,0xff0000);
hPen[3]=CreatePen(6
[解决办法]
PS_ENDCAP_ROUND,1,0xffff);
hPen[4]=CreatePen(6
[解决办法]
PS_ENDCAP_ROUND,1,0xffff00);
hPen[5]=CreatePen(6
[解决办法]
PS_ENDCAP_ROUND,1,0xff00ff);
hPen[6]=CreatePen(6
[解决办法]
PS_ENDCAP_ROUND,1,1);
hBrush[0]=CreateSolidBrush(0xff);
hBrush[1]=CreateSolidBrush(0xff00);
hBrush[2]=CreateSolidBrush(0xff0000);
hBrush[3]=CreateSolidBrush(0xffff);
hBrush[4]=CreateSolidBrush(0xffff00);
hBrush[5]=CreateSolidBrush(0xff00ff);
hBrush[6]=CreateSolidBrush(0x99ff);
hdcMem=CreateCompatibleDC(NULL);
SetBkMode(hdcMem,0);
SetTextAlign(hdcMem,TA_CENTER);
SetTimer(hWnd,1,40,NULL);
break;
case WM_SIZE:
if(hBitMap)
{
SelectObject(hdcMem,(HBITMAP)NULL);
DeleteObject(hBitMap);
}
hdc=GetDC(hWnd);
hBitMap=CreateCompatibleBitmap(hdc,KUAN,KUAN);
ReleaseDC(hWnd,hdc);
SelectObject(hdcMem,hBitMap);
break;
case WM_RBUTTONDOWN:
GetCursorPos(pts);
hMenu=LoadMenu(hInst,LPCSTR(IDR_MENU1));
hMenu=GetSubMenu(hMenu,0);
TrackPopupMenu(hMenu,TPM_LEFTALIGN,pts[0].x,pts[0].y,0,hWnd,NULL);
break;
case WM_MOUSEMOVE:
bBeiJing=75;
break;
case WM_COMMAND:
switch(wParam)
{
case ID_TUICHU:
PostQuitMessage(0);
break;
case ID_GUANYU:
DialogBoxParam(hInst,LPCSTR(IDD_DIALOG1),hWnd,Pro2,0);
break;
}
break;
case WM_TIMER:
fp(hWnd,0,iTouMing,3);
iTouMing+=iJiaJianTouMingDu;
if(iTouMing>=230){iTouMing=230;iJiaJianTouMingDu=-6;}
if(iTouMing<=20)
{
SetTextColor(hdcMem,RGB(rand()%200+55,rand()%200+55,rand()%200+55));
iTouMing=20;
iJiaJianTouMingDu=6;
for (i=0;i<7;i++)
{
SuiJi:
r[i]=rand()%7;
for (j=0;j<i;j++)
{
if(r[i]==r[j])goto SuiJi;
}
}
}
SelectObject(hdcMem,GetStockObject(BLACK_BRUSH));
PatBlt(hdcMem,0,0,KUAN,KUAN,PATCOPY);
if(bBeiJing)
{
bBeiJing--;
SelectObject(hdcMem,GetStockObject(DKGRAY_BRUSH));
Ellipse(hdcMem,0,0,KUAN,KUAN);
}
SelectObject(hdcMem,hBrush[r[0]]);
BeginPath(hdcMem);
Ellipse(hdcMem,0,0,KUAN,KUAN);
Ellipse(hdcMem,KUAN/20,KUAN/20,KUAN-KUAN/20,KUAN-KUAN/20);
EndPath(hdcMem);
FillPath(hdcMem);
//未完待续