****当局者迷啊,大虾们帮我看看到底有什么错!(很容易得分的哦!)%%%%%%%%

jfzsl 2001-07-11 03:18:14
WINDOWS 程序设计 一书的第三章的例子,我按着书上的输入进去就是不对,但把原光盘上的考过去就行了!苦恼啊!大家帮我看看错在哪里?我的程序执行后弹出对话框,提示:"This program requires Windows NT!".我的环境是WIN2000,原程序我拷贝过来是可以的!

/************************************MY PROGRAM***********************/

#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstace,
PSTR szCmdLine,int iCmdShow)
{
static TCHAR szAppName[] = TEXT("3_1"); /* 我的工程名 */
HWND hwnd;
MSG msg;
WNDCLASS wndclass;

wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbClsExtra = 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("This program requires Windows NT!"),szAppName,MB_ICONERROR);
return 0;
}
hwnd = CreateWindow(szAppName,
TEXT("The Hello Program"),
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);
}
return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;

switch(message){
case WM_CREATE:
PlaySound(TEXT("hellowin.wav"),NULL,SND_FILENAME | SND_ASYNC);
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rect);
DrawText(hdc,TEXT("Hello,Windows 98!"),-1,&rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}

/*******************************SOURCE FILE*************************/


/*------------------------------------------------------------
HELLOWIN.C -- Displays "Hello, Windows 98!" in client area
(c) Charles Petzold, 1998
------------------------------------------------------------*/

#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("3_1") ; /* 原来TEXT中的内容为 "hellowin" */
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;

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 ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}

hwnd = CreateWindow (szAppName, // window class name
TEXT ("The Hello Program"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters

ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;

switch (message)
{
case WM_CREATE:
PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
return 0 ;

case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;

GetClientRect (hwnd, &rect) ;

DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

EndPaint (hwnd, &ps) ;
return 0 ;

case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
...全文
143 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jfzsl 2001-07-11
  • 打赏
  • 举报
回复
TO:microstar
没关系,有时候这种刺激能让一个麻木的人清醒一些!
microstar 2001-07-11
  • 打赏
  • 举报
回复
jfzsl:不好意思了。
wjyasd 2001-07-11
  • 打赏
  • 举报
回复
microstar 还是提点建设性的意见好! 不犯错误就不是程序员了!哈哈
wjyasd 2001-07-11
  • 打赏
  • 举报
回复
一边又一边的看……嘿嘿!

F11
jfzsl 2001-07-11
  • 打赏
  • 举报
回复
TO:microstar(microstar) 
大哥,不要打击我了好吗?我学(想学)VC很久了,但一直没有系统的学习。主要原因是我的工作范围用不到。再着,手边又时不时的有些烂活,我又不得不去应付,所以 ......!
以后还望多多指教!
jfzsl 2001-07-11
  • 打赏
  • 举报
回复
剿匪总司令激动的拉着wjyasd(即使用FPE改了钱,也绝不能忘记艰苦朴)的手,久久的说不出一句话。最后说:“还是给你分吧”!

BTW:你是怎么找出来的?我可是看了半天都没有找出来!
microstar 2001-07-11
  • 打赏
  • 举报
回复
真烂,你是怎么做程序员的呀,你的wndClass.cbClsExtra被设了两遍,可你的cbWndExtra呢,你不会用GetLastError ()跟一把吗?
vcbacker 2001-07-11
  • 打赏
  • 举报
回复
faint,真没面子,扯乎
vcbacker 2001-07-11
  • 打赏
  • 举报
回复

wndclass.cbClsExtra = 0;
wndclass.cbClsExtra = 0;
改为:
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
你输入错误,仔细看看不就得了吗/
wjyasd 2001-07-11
  • 打赏
  • 举报
回复
这里错了!

你的程序:
wndclass.cbClsExtra = 0;
wndclass.cbClsExtra = 0;

原程序:

wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ; 《-------这里;

改过来就可以了!~ ^&^

jfzsl 2001-07-11
  • 打赏
  • 举报
回复
你们用行的是哪个程序?是第一个吗?我问的是第一个程序的问题。我把第二个拷贝过来改一下名字也是好用的,可是我自己输入的第一个程序就是提示:This program requires Windows NT!
vcbacker 2001-07-11
  • 打赏
  • 举报
回复
程序有问题才怪!
我不是大明 2001-07-11
  • 打赏
  • 举报
回复
程序没有问题,只可能是你系统的问题。
我运行没有问题!
yajunmao 2001-07-11
  • 打赏
  • 举报
回复
what difference bwteen copy and CHAO
jfzsl 2001-07-11
  • 打赏
  • 举报
回复
也就是 说前一个程序RegisterClass(&wndclass) 出错,而第二个正确!我看了半天也不知那里不一样啊!

16,548

社区成员

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

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

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