又来提问 ~~~哥哥姐姐们帮帮忙~~~~

ranhujia 2008-07-30 12:11:11
我是新手 刚学几天vc 下面是我写得代码
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int X=0;

LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)

{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WindowProc;
wndclass.lpszClassName="ran003";
wndclass.lpszMenuName=NULL;
wndclass.style=0;

RegisterClass(&wndclass);

hwnd=CreateWindow("ran003","动呀动",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,600,450,NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);

while(GetMessage(&Msg,hwnd,NULL,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return 0;
}

LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
HDC hdc;
HBRUSH hBrush;
HPEN hp;
PAINTSTRUCT ps;
int Y=X*X;


switch(uMsg)
{
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
SetMapMode(hdc,MM_ANISOTROPIC);
SetWindowExtEx(hdc,400,300,NULL);
SetViewportExtEx(hdc,600,450,NULL);
SetViewportOrgEx(hdc,300,200,NULL);

hBrush=CreateSolidBrush(RGB(255,0,255));
SelectObject(hdc,hBrush);
hp=CreatePen(PS_SOLID,1,RGB(255,0,255));
SelectObject(hdc,hp);
Ellipse(hdc,Y-5,X-5,Y+5,X+5);

X++;Y++;
Sleep(1000);
InvalidateRect(hwnd,NULL,1);
EndPaint(hwnd,&ps);

return 0;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
这里有两个问题 第一是我每次把这个窗口关了后,可是进程里却还有“ran003.exe”,可能是sleep出了问题 我不知道怎么该 看了一天set/ontimer 硬是没学会 试了一个晚上也不行 我要重绘
第二是 我不知道那两个变量X Y 到底要放在那儿 因为这两个变量是在不断变化的 我每次改变两个 这个圆却只在一条直线上运动
谢谢各位了~~~~
...全文
64 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2008-07-30
  • 打赏
  • 举报
回复
又见经典错误:
while(GetMessage(&Msg,hwnd,NULL,0))
改为
while(GetMessage(&Msg,NULL,NULL,0))

你的X是全局的,何不把Y也改成全局的?
11000000 2008-07-30
  • 打赏
  • 举报
回复

同意1楼的说法,用vc6不是挺好,界面什么都有现成的了。
而且卸载资源什么的都给你做了,其实挺好。

如果是sleep有问题,过一段时间之后,进程里就应该没有“ran003.exe”文件了。
你看看。

如果用这个程序,干脆把x,y做成全程变量好了。
nieoding 2008-07-30
  • 打赏
  • 举报
回复
刚开始搞vc,别从这个工程开始研究
向导生成对话框或者SDI程序比较简单

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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