菜鸟求教!!(回答给分)

spl1982 2004-03-28 03:46:37
我现在在看黄维通的《vc visual c++面向对象与可视化程序设计》,看到第74—76页3.1这个程序时发现在vc上编译不能通过,请高手帮我看看!!
#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInst,
LPSTR lpszmdLine,
int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]="窗口";
char lpszClassTitle[]="my windows";
wndclass.style=0;
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=GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=lpszClassName;
if (!RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE;
}
hwnd=CreateWindow(lpszClassName,
lpszClassTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd,nCmdShow);
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)
{
switch(message)
{ case WM_DESTROY:
PostQuitMessage(0);
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}


在线等待请路过的高手都看看,告诉我为什么么??
还有这个程序中只是定义了hInstance为HINSTANCE类型没有赋一定的值,作为后面的函数的参数有什么用??以hInstance为参数的函数怎么样运行?比如下面这个函数
hwnd=CreateWindow(lpszClassName,
lpszClassTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,————————————这个参数未赋值
NULL);
还有这个地方 wndclass.hInstance=hInstance;——————hInstance未赋值

问题很菜,希望高手能指导指导我这个菜鸟,万分感谢!!

...全文
19 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
spl1982 2004-03-28
  • 打赏
  • 举报
回复
谢谢
我的邮箱是spl325@163.com
李马 2004-03-28
  • 打赏
  • 举报
回复
titilima@163.com
http://home.ncust.edu.cn/~titilima

一起交流
spl1982 2004-03-28
  • 打赏
  • 举报
回复
哦,谢谢!能告诉我你的邮箱或者qq么
我能不能遇到问题发邮件问你??
谢谢,一个菜鸟初学者
李马 2004-03-28
  • 打赏
  • 举报
回复
在VC6下,如果你用单独的cpp编译方法,那么VC会为你生成一个默认的Win32 Console工程,所以编译不能通过。
DevCPP我没有用过,估计也是类似这样的原因。

再次指出,这个程序没有错误。
spl1982 2004-03-28
  • 打赏
  • 举报
回复
我就把这个程序当作一个独立的cpp文件进行编译的

提示 20 E:\work\windows\winapi窗口.cpp
invalid conversion from `void*' to `

E:\work\windows\winapi窗口.cpp
[ Warning] In function `int WinMain(HINSTANCE__*,:
我用的是DEV-CPP
用vc编译的错误提示和这个差不多
李马 2004-03-28
  • 打赏
  • 举报
回复
这个程序完全没有问题。

在VC6下面,需要建立一个Win32 Application工程,不知道你是不是用了Win32 Console。

一般来说,像WinMain的参数和窗口回调过程的参数都是不需要人为赋值的。
enoloo 2004-03-28
  • 打赏
  • 举报
回复
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInst,
LPSTR lpszmdLine,
int nCmdShow)//hInstance是这个程序的入口地址,由操作系统传入参数。

///
说一下哪里出错了。是什么错误。是不是工程设置有问题?
spl1982 2004-03-28
  • 打赏
  • 举报
回复
那我的程序有什么问题列,在vc6和DEV-CPP下都通不过
还有那些参数是不需要我们赋值的
谢谢
李马 2004-03-28
  • 打赏
  • 举报
回复
hInstance是程序运行时由WinMain传入的参数,代表本进程的实例句柄。

比如main中的参数argv,也是由命令行传入的参数,并不需要你去为它赋值。

16,473

社区成员

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

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

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