用SDK写的 一个程序 为什么会 一闪而过?

pengcao89 2010-05-10 07:50:09
#include<windows.h>
#include<stdlib.h>
#include <string.h>

BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nShowCmd);
HFONT CreateFont(HDC hDc,int nCharHeight,BOOL bItalic);
int i=0;
int x[11],y[11];
int color[11];
POINT pt;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
MSG Message;
if(!InitWindowsClass(hInstance))
return FALSE;
// if(!InitWindows(hInstance,nShowCmd))
// return FALSE;
// BOOL InitWindows(HINSTANCE hInstance,int nShowCmd)
// {
HWND hWnd;
hWnd=CreateWindow("shu biao-jian pan zong he ying yong shi li",
"Mouse Text Application",
WS_OVERLAPPEDWINDOW,
0,
0,
800,
600,
NULL,
NULL,
hInstance,
NULL);
if(!hWnd)
return FALSE;
ShowWindow(hWnd,nShowCmd);
UpdateWindow(hWnd);
// return true;
//}


while(GetMessage(&Message,0,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,UINT wParam,UINT lParam)
{
HDC hDC;
HFONT hF;
PAINTSTRUCT ps;
TEXTMETRIC tm;
char str[]="Hello VC ";
switch (iMessage)
{

case WM_CREATE:
SetTimer(hWnd,1,1110,NULL);
GetCursorPos(&pt);
for (i=0;i<11;i++)
{
x[i]=pt.x;
y[i]=pt.y;
color[i]=25*(i-1);
}
break;
case WM_PAINT:
hDC=BeginPaint(hWnd,&ps);
hF=CreateFont(hDC,40,0);
SelectObject(hDC,hF);
GetTextMetrics(hDC,&tm);
for (i=10;i>1;i--)
{
x[i]=x[i-1]+50;
y[i]=y[i-1];
}
GetCursorPos(&pt);
x[1]=pt.x;
y[1]=pt.y;
for (i=1;i<11;i++)
{
SetTextColor(hDC,RGB(255-color[i],color[i],255));
TextOut(hDC,x[i],y[i],&str[i],1);
}
color[1]=color[0];
for (i=10;i>1;i++)
color[i]=color[i-1];
DeleteObject(hF);
EndPaint(hWnd,&ps);
return 0;
case WM_TIMER:
InvalidateRect(hWnd,NULL,1);
break;
case WM_DESTROY:
PostQuitMessage(0);
KillTimer(hWnd,1);
return 0;
default:
return (DefWindowProc(hWnd,iMessage,wParam,lParam));

}

return 0;
}
/*
BOOL InitWindows(HINSTANCE hInstance,int nShowCmd)
{
HWND hWnd;
hWnd=CreateWindow("shu biao-jian pan zong he ying yong shi li",
"Mouse Text Application",
WS_OVERLAPPEDWINDOW,
0,
0,
800,
600,
NULL,
NULL,
hInstance,
NULL);
if(!hWnd)
return FALSE;
ShowWindow(hWnd,nShowCmd);
UpdateWindow(hWnd);
return true;
}
*/
BOOL InitWindowsClass(HINSTANCE hInstance)
{
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=(WNDPROC)WndProc;
Wndclass.lpszClassName="shu biao-jian pan zong he ying yong shi li";
Wndclass.lpszMenuName=NULL;
Wndclass.style=0;
return RegisterClass(&Wndclass);
}

HFONT CreateFont(HDC hDc,int nCharHeight,BOOL bItalic)
{
HFONT hFont;
hFont=CreateFont(
nCharHeight,
0,
0,
0,
400,
bItalic,
0,
0,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|FF_DONTCARE,
"Arial"
);
if(hFont==NULL)
return NULL;
else
return hFont;
}



以上 是 源代码
...全文
98 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengcao89 2010-05-18
  • 打赏
  • 举报
回复
getchar();尝试过..
再不同的地方加上printf();来判断程序的运行 我也经常用..
可是 这里 好像不行..这个 不像纯粹的C语言程序..非结构化..
十分的棘手..有可能是在那里 某些参数 弄错了
xiaokang007 2010-05-18
  • 打赏
  • 举报
回复
if(!InitWindowsClass(hInstance))
printf("错误信息");
return FALSE;
----------------------------------

如果debug操作不熟练,建议 在每个return 之前 加入 print信息 ,程序退出时 可以知道 它跑到 那里了。



念茜 2010-05-16
  • 打赏
  • 举报
回复
getchar();
pengcao89 2010-05-11
  • 打赏
  • 举报
回复
不行啊..
这到底是 怎么一回事..
赵4老师 2010-05-11
  • 打赏
  • 举报
回复
单步调试和设断点调试是程序员必须掌握的技能之一。
skyworth98 2010-05-10
  • 打赏
  • 举报
回复
你最好用调试器看看哪个函数调用失败了

[Quote=引用楼主 cpwolaichile 的回复:]
#include<windows.h>
#include<stdlib.h>
#include <string.h>

BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nShowCmd);
HFONT CreateFont(HDC hDc,int nCharHeig……
[/Quote]
lovesi3344 2010-05-10
  • 打赏
  • 举报
回复
一闪而过???

system("pause");
或者
#include<conio.h>
...
getch();

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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