急求~~~~哪错了?

xy01802314 2014-05-19 08:01:48
#include<windows.h>
#include<tchar.h>
#include<math.h>
typedef struct Time
{
int hour,min,sec;
}TimeStructure;
BOOLEAN InitWindowClass(HINSTANCE hInstance,int nCmdShow);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
void AdjustTime(TimeStructure *x);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
MSG msg;
if(!InitWindowClass(hInstance,nCmdShow))
{
MessageBox(NULL,L"创建窗口失败!",_T("创建窗口"),NULL);
return 1;
}
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return(int) msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
HBRUSH hBrush;
HPEN hPen;
RECT clientRect;
static TimeStructure x;
float sita=0;
int xOrg,yOrg,rSec,rMin,rHour,rClock,xBegin,xEnd,yBegin,yEnd;
switch(message)
{
case WM_CREATE:
SetTimer(hWnd,9999,1000,NULL);
break;
case WM_PAINT:
x.sec++;
AdjustTime(&x);
hDC=BeginPaint(hWnd,&ps);
GetClientRect(hWnd,&clientRect);
hPen=(HPEN)GetStockObject(BLACK_PEN);
hBrush=CreateSolidBrush(RGB(255,220,220));
SelectObject(hDC,hPen);
SelectObject(hDC,hBrush);
xOrg=(clientRect.left+clientRect.right)/2;
yOrg=(clientRect.top+clientRect.bottom)/2;
rClock=min(xOrg,yOrg)-50;
rSec=rClock*6/7;
rMin=rClock*5/6;
rHour=rClock*2/3;
Ellipse(hDC,xOrg-rClock,yOrg-rClock,xOrg+rClock,yOrg+rClock);
for(int i=0;i<60;i++)
{
if(i%5)
{
hPen=CreatePen(PS_SOLID,2,RGB(255,0,0));
SelectObject(hDC,hPen);
xBegin=xOrg+rClock*sin(2*3.1415926*i/60);
yBegin=yOrg+rClock*cos(2*3.1415926*i/60);
MoveToEx(hDC,xBegin,yBegin,NULL);
xEnd=xOrg+(rClock-20)*sin(2*3.1415926*i/60);
yEnd=yOrg+(rClock-20)*cos(2*3.1415926*i/60);
}
else
{
hPen=CreatePen(PS_SOLID,5,RGB(255,0,0));
SelectObject(hDC,hPen);
xBegin=xOrg+rClock*sin(2*3.1415926*i/60);
yBegin=yOrg+rClock*cos(2*3.1415926*i/60);
MoveToEx(hDC,xBegin,yBegin,NULL);
xEnd=xOrg+(rClock-20)*sin(2*3.1415926*i/60);
yEnd=yOrg+(rClock-20)*cos(2*3.1415926*i/60);
}
LineTo(hDC,xEnd,yEnd);
DeleteObject(hPen);
}
hPen=CreatePen(PS_SOLID,2,RGB(255,0,0));
SelectObject(hDC,hPen);
sita=2*3.1415926*x.sec/60;
xBegin=xOrg+(int)(rSec*sin(sita));
yBegin=yOrg-(int)(rSec+cos(sita));
xEnd=xOrg+(int)(rClock*sin(sita+3.1415936)/8);
yEnd=yOrg-(int)(rClock*cos(sita+3.1415936)/8);
MoveToEx(hDC,xBegin,yBegin,NULL);
LineTo(hDC,xEnd,yEnd);
hPen=CreatePen(PS_SOLID,10,RGB(0,0,0));
SelectObject(hDC,hPen);
sita=2*3.1415926*x.hour/12;
xBegin=xOrg+(int)(rHour*sin(sita));
yBegin=yOrg-(int)(rHour+cos(sita));
xEnd=xOrg+(int)(rClock*sin(sita+3.1415936)/8);
yEnd=yOrg-(int)(rClock*cos(sita+3.1415936)/8);
MoveToEx(hDC,xBegin,yBegin,NULL);
LineTo(hDC,xEnd,yEnd);
DeleteObject(hPen);
DeleteObject(hBrush);
EndPaint(hWnd,&ps);
break;
case WM_TIMER:
if(wParam==9999)
InvalidateRect(hWnd,NULL,true);
break;
case WM_SIZE:
InvalidateRect(hWnd,NULL,true);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
break;
}
return 0;
}
void AdjustTime(TimeStructure*x)
{
if(x->sec==60)
{
x->sec=0;
x->min++;
if(x->min==60)
{
x->min=0;
x->hour++;
if(x->hour==12)
x->hour=0;
}
}
}
BOOLEAN InitWindowClass(HINSTANCE hInstance,int nCmdShow)
{
WNDCLASSEX wcex;
HWND hWnd;
TCHAR szWindowClass[]=L"窗口示例";
TCHAR szTitle[]=L"模拟时钟";
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style =0;
wcex.lpfnWndProc =WndProc;
wcex.cbClsExtra =0;
wcex.cbWndExtra =0;
wcex.hInstance =hInstance;
wcex.hIcon =LoadIcon(hInstance,MAKEINTRESOURCE(IDI_APPLICATION));
wcex.hCursor =LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wcex.lpszMenuName =NULL;
wcex.lpszClassName=szWindowClass;
wcex.hIconSm =LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_APPLICATION));
if(!RegisterClassEx(&wcex))
return FALSE;
hWnd=CreateWindow(
szWindowClass,
szTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if(!hWnd)
return FALSE;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}


...全文
194 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xy01802314 2014-05-19
  • 打赏
  • 举报
回复
引用 13 楼 zhangyonghui2117 的回复:
[quote=引用 12 楼 xy01802314 的回复:] error LNK2001: unresolved external symbol _main 准备运行的时候出现这个 怎么破呀
我的也出现这样的问题,下面方法解决: [Project] --> [Settings] --> 选择"Link"属性页, 在Project Options中将/subsystem:console改成/subsystem:windows ,[/quote]找不到link属性页诶、工程---->设置--->然后呢?
「已注销」 2014-05-19
  • 打赏
  • 举报
回复
引用 12 楼 xy01802314 的回复:
error LNK2001: unresolved external symbol _main 准备运行的时候出现这个 怎么破呀
我的也出现这样的问题,下面方法解决: [Project] --> [Settings] --> 选择"Link"属性页, 在Project Options中将/subsystem:console改成/subsystem:windows ,
xy01802314 2014-05-19
  • 打赏
  • 举报
回复
error LNK2001: unresolved external symbol _main 准备运行的时候出现这个 怎么破呀
unituniverse2 2014-05-19
  • 打赏
  • 举报
回复
路过,顺便说一下,最好定时器不要选为1秒,而应该至少是1/10秒,不然会出现走一段时间秒针突然停上2秒左右的时间的问题。因为累积误差会导致有一秒内定时器消息发过来了但是取到的时间还处于和上次的是同一秒,所以看起来仿佛秒针没动一样
「已注销」 2014-05-19
  • 打赏
  • 举报
回复
引用 8 楼 xy01802314 的回复:
C:\Users\user\Desktop\LINSHI\11\2.cpp(16) : error C2664: 'MessageBoxA' : cannot convert parameter 2 from 'unsigned short [8]' to 'const char *' 还有这个错误 怎么改
MessageBox(NULL,_T("创建窗口失败!"),_T("创建窗口"),NULL);
「已注销」 2014-05-19
  • 打赏
  • 举报
回复


#include<windows.h>
#include<tchar.h>
#include<math.h>
typedef struct Time
{
int hour,min,sec;
}TimeStructure;
BOOLEAN InitWindowClass(HINSTANCE hInstance,int nCmdShow);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
void AdjustTime(TimeStructure *x);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
MSG msg;
if(!InitWindowClass(hInstance,nCmdShow))
{
MessageBox(NULL,_T("创建窗口失败!"),_T("创建窗口"),NULL);
return 1;
}
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return(int) msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
HBRUSH hBrush;
HPEN hPen;
RECT clientRect;
static TimeStructure x;
float sita=0;
int xOrg,yOrg,rSec,rMin,rHour,rClock,xBegin,xEnd,yBegin,yEnd;

switch(message)
{
case WM_CREATE:
SetTimer(hWnd,9999,1000,NULL);
break;
case WM_PAINT:

{


x.sec++;
AdjustTime(&x);
hDC=BeginPaint(hWnd,&ps);
GetClientRect(hWnd,&clientRect);
hPen=(HPEN)GetStockObject(BLACK_PEN);
hBrush=CreateSolidBrush(RGB(255,220,220));
SelectObject(hDC,hPen);
SelectObject(hDC,hBrush);
xOrg=(clientRect.left+clientRect.right)/2;
yOrg=(clientRect.top+clientRect.bottom)/2;
rClock=min(xOrg,yOrg)-50;
rSec=rClock*6/7;
rMin=rClock*5/6;
rHour=rClock*2/3;
Ellipse(hDC,xOrg-rClock,yOrg-rClock,xOrg+rClock,yOrg+rClock);

// !!!!!!switch()只能在最后一个case或default或case里定义变量,
// 除非用大括号包含case内容
// 百度关于switch case语句里初始化变量,
for(int i=0;i<60;i++)
{
if(i%5)
{
hPen=CreatePen(PS_SOLID,2,RGB(255,0,0));
SelectObject(hDC,hPen);
xBegin=xOrg+rClock*sin(2*3.1415926*i/60);
yBegin=yOrg+rClock*cos(2*3.1415926*i/60);
MoveToEx(hDC,xBegin,yBegin,NULL);
xEnd=xOrg+(rClock-20)*sin(2*3.1415926*i/60);
yEnd=yOrg+(rClock-20)*cos(2*3.1415926*i/60);
}
else
{
hPen=CreatePen(PS_SOLID,5,RGB(255,0,0));
SelectObject(hDC,hPen);
xBegin=xOrg+rClock*sin(2*3.1415926*i/60);
yBegin=yOrg+rClock*cos(2*3.1415926*i/60);
MoveToEx(hDC,xBegin,yBegin,NULL);
xEnd=xOrg+(rClock-20)*sin(2*3.1415926*i/60);
yEnd=yOrg+(rClock-20)*cos(2*3.1415926*i/60);
}
LineTo(hDC,xEnd,yEnd);
DeleteObject(hPen);
}
hPen=CreatePen(PS_SOLID,2,RGB(255,0,0));
SelectObject(hDC,hPen);
sita=2*3.1415926*x.sec/60;
xBegin=xOrg+(int)(rSec*sin(sita));
yBegin=yOrg-(int)(rSec+cos(sita));
xEnd=xOrg+(int)(rClock*sin(sita+3.1415936)/8);
yEnd=yOrg-(int)(rClock*cos(sita+3.1415936)/8);
MoveToEx(hDC,xBegin,yBegin,NULL);
LineTo(hDC,xEnd,yEnd);
hPen=CreatePen(PS_SOLID,10,RGB(0,0,0));
SelectObject(hDC,hPen);
sita=2*3.1415926*x.hour/12;
xBegin=xOrg+(int)(rHour*sin(sita));
yBegin=yOrg-(int)(rHour+cos(sita));
xEnd=xOrg+(int)(rClock*sin(sita+3.1415936)/8);
yEnd=yOrg-(int)(rClock*cos(sita+3.1415936)/8);
MoveToEx(hDC,xBegin,yBegin,NULL);
LineTo(hDC,xEnd,yEnd);
DeleteObject(hPen);
DeleteObject(hBrush);
EndPaint(hWnd,&ps);
break;

}
case WM_TIMER:
if(wParam==9999)
InvalidateRect(hWnd,NULL,true);
break;
case WM_SIZE:
InvalidateRect(hWnd,NULL,true);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
break;
}
return 0;
}
void AdjustTime(TimeStructure*x)
{
if(x->sec==60)
{
x->sec=0;
x->min++;
if(x->min==60)
{
x->min=0;
x->hour++;
if(x->hour==12)
x->hour=0;
}
}
}
BOOLEAN InitWindowClass(HINSTANCE hInstance,int nCmdShow)
{
WNDCLASSEX wcex;
HWND hWnd;
TCHAR szWindowClass[]=_T("窗口示例");
TCHAR szTitle[]=_T("模拟时钟");
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style =0;
wcex.lpfnWndProc =WndProc;
wcex.cbClsExtra =0;
wcex.cbWndExtra =0;
wcex.hInstance =hInstance;
wcex.hIcon =LoadIcon(hInstance,MAKEINTRESOURCE(IDI_APPLICATION));
wcex.hCursor =LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wcex.lpszMenuName =NULL;
wcex.lpszClassName=szWindowClass;
wcex.hIconSm =LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_APPLICATION));
if(!RegisterClassEx(&wcex))
return FALSE;
hWnd=CreateWindow(
szWindowClass,
szTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if(!hWnd)
return FALSE;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
xy01802314 2014-05-19
  • 打赏
  • 举报
回复
C:\Users\user\Desktop\LINSHI\11\2.cpp(16) : error C2664: 'MessageBoxA' : cannot convert parameter 2 from 'unsigned short [8]' to 'const char *' 还有这个错误 怎么改
xy01802314 2014-05-19
  • 打赏
  • 举报
回复
引用 6 楼 xy01802314 的回复:
[quote=引用 5 楼 ouyh12345 的回复:] 字符串赋值,用strcpy TCHAR szWindowClass[]=_T("窗口示例"); TCHAR szTitle[]=_T("模拟时钟");
那是在哪里改 我是新手对着书改写的 不太懂诶[/quote]知道了 谢谢
xy01802314 2014-05-19
  • 打赏
  • 举报
回复
引用 5 楼 ouyh12345 的回复:
字符串赋值,用strcpy TCHAR szWindowClass[]=_T("窗口示例"); TCHAR szTitle[]=_T("模拟时钟");
那是在哪里改 我是新手对着书改写的 不太懂诶
ouyh12345 2014-05-19
  • 打赏
  • 举报
回复
字符串赋值,用strcpy TCHAR szWindowClass[]=_T("窗口示例"); TCHAR szTitle[]=_T("模拟时钟");
xy01802314 2014-05-19
  • 打赏
  • 举报
回复
引用 1 楼 Symfund 的回复:
你连错误信息都不给出,人脑计算机表示很无奈!
已给出 大神帮忙看看
xy01802314 2014-05-19
  • 打赏
  • 举报
回复
C:\Users\user\Desktop\LINSHI\11\2.cpp(61) : warning C4244: '=' : conversion from 'double' to 'int', possible loss of data C:\Users\user\Desktop\LINSHI\11\2.cpp(62) : warning C4244: '=' : conversion from 'double' to 'int', possible loss of data C:\Users\user\Desktop\LINSHI\11\2.cpp(64) : warning C4244: '=' : conversion from 'double' to 'int', possible loss of data C:\Users\user\Desktop\LINSHI\11\2.cpp(65) : warning C4244: '=' : conversion from 'double' to 'int', possible loss of data C:\Users\user\Desktop\LINSHI\11\2.cpp(71) : warning C4244: '=' : conversion from 'double' to 'int', possible loss of data C:\Users\user\Desktop\LINSHI\11\2.cpp(72) : warning C4244: '=' : conversion from 'double' to 'int', possible loss of data C:\Users\user\Desktop\LINSHI\11\2.cpp(74) : warning C4244: '=' : conversion from 'double' to 'int', possible loss of data C:\Users\user\Desktop\LINSHI\11\2.cpp(75) : warning C4244: '=' : conversion from 'double' to 'int', possible loss of data C:\Users\user\Desktop\LINSHI\11\2.cpp(82) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data C:\Users\user\Desktop\LINSHI\11\2.cpp(91) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data C:\Users\user\Desktop\LINSHI\11\2.cpp(137) : error C2440: 'initializing' : cannot convert from 'unsigned short [5]' to 'char []' There is no context in which this conversion is possible C:\Users\user\Desktop\LINSHI\11\2.cpp(138) : error C2440: 'initializing' : cannot convert from 'unsigned short [5]' to 'char []' There is no context in which this conversion is possible
Symfund 2014-05-19
  • 打赏
  • 举报
回复
你连错误信息都不给出,人脑计算机表示很无奈!
「已注销」 2014-05-19
  • 打赏
  • 举报
回复

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧