1.在用VC++6.0创建窗口时,我的步骤是这样的(跟着孙鑫教程里学的)。1,新建一个工程win32 application

确定,建一个空工程,确定。2,新建一个c++源文件,然后打代码。3,编译没问题,组建没问题,执行文件。达到效果后就退出(销毁)窗口,然后我改变代码中光标的value,换了另一种光标。接着编译没问题,组建出错了:
LINK : fatal error LNK1168: cannot open Debug/wenti.exe for writing
百度一下这个问题是因为wenti.exe这个 可执行文件没有关闭。打开进程的确是这个文件在运行,把这个文件关闭继续组建成功,执行顺利。
问题1:为什么我销毁了窗口(return 0,关闭了函数?)那个可执行文件还在运行?运行几次就会在管理器里看到几个相同的可执行文件运行?看孙鑫教程时管理器里运行的都是WinMain函数,我的程序运行时为什么任务管理器里没有这个函数?
2.关闭VC,从文件夹里打开C++源文件(用VC打开)编译成功,组建时出现问题:
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
百度了这个问题是因为没有建立win32 Application工程,想想也是。打开的只是代码,
通过工程->设置->连接,改变工程选项成功组建,执行。
问题2:win32 Application(32位操作系统应用程序)这个东西到底是什么,其实我在创建这个窗口的时候只是照着视频做,其中过程是再干什么根本不知道。我理解的是组建的过程是将cpp源程序与win32 Application这个工程连接起来,这个工程到底是什么东西?MFC,DLL这些是函数库?
问题3:程序文件夹里生成的那些后缀不同文件都是什么东西?Debug(组建)文件夹里的文件是组建生成的文件吧?那个*.exe文件是执行生成的吗,都是些什么东西?
问体很长,先感谢回答我问题的大虾嘞。。

#include <windows.h>
#pragma comment(lib,"user32.lib")
#pragma comment(lib,"Gdi32.lib")
LRESULT CALLBACK WndProc(
HWND hwnd
,UINT message
,WPARAM wParam
,LPARAM lParam
);
HWND hWnd;//窗口句柄,定义为全局
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
MSG msg;
WNDCLASS wnd;
wnd.style = 0;
wnd.cbClsExtra = 0;//应该0
wnd.cbWndExtra = 0;//均为0
wnd.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//背景填充颜色
wnd.hCursor = LoadCursor(NULL,IDC_ARROW);//光标,使用默认光标参数一为NULL
wnd.hIcon = LoadIcon(NULL,IDI_EXCLAMATION);//图标
wnd.hInstance = hInstance;//句柄
wnd.lpfnWndProc = WndProc;//消息处理
wnd.lpszClassName = "XP";//类名
wnd.lpszMenuName = NULL;//菜单名
RegisterClass(&wnd);//注册
hWnd = CreateWindow("XP","窗口",WS_OVERLAPPEDWINDOW,100,100,500,500,NULL,NULL,hInstance,NULL);//创建窗口,参考MSDN
ShowWindow(hWnd,SW_SHOWNORMAL);//显示
UpdateWindow(hWnd);//更新窗口
while(GetMessage(&msg,NULL,0,0))
{//消息循环
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
/*LRESULT CALLBACK WindowProc(HWND hwhd,uMsg,WPARAM wParam,LPARAM IParam)

消息响应函数定义

hwnd:指向窗口的句柄。

uMsg:指定消息类型。

wParam:消息

IParam:消息*/
LRESULT CALLBACK WndProc(
HWND hwnd
,UINT message
,WPARAM wParam
,LPARAM lParam
)
{
switch(message)
{
case WM_CLOSE://关闭
if(MessageBox(hWnd,"是否退出","询问",MB_YESNO)==IDYES)//使用全局消息框
PostQuitMessage(0);//将WM_QUIT加入消息队列中
break;
case WM_KEYDOWN://键盘按下,一种消息类型,MFC会更全
switch(wParam)
{
case VK_UP:
MessageBox(hWnd,"上","按下",MB_OK);
case VK_RBUTTON:
MessageBox(hWnd,"鼠标右键","按下",MB_OK);
break;
case VK_MENU:
MessageBox(hWnd,"Alt","按下",MB_OK);
break;
case VK_END:
MessageBox(hWnd,"END","按下",MB_OK);
break;
case VK_LEFT:
MessageBox(hWnd,"左","按下",MB_OK);
break;
case VK_RIGHT:
MessageBox(hWnd,"右","按下",MB_OK);
break;
case VK_DOWN:
MessageBox(hWnd,"下","按下",MB_OK);
break;
case VK_CONTROL:
MessageBox(hWnd,"Ctrl","按下",MB_OK);
break;
case VK_ESCAPE:
MessageBox(hWnd,"Esc","按下",MB_OK);
// PostQuitMessage(0);
break;
case VK_SHIFT:
MessageBox(hWnd,"SHIFT","按下",MB_OK);
break;
default: break;
}
default:
return DefWindowProc(hwnd,message,wParam,lParam);//缺省处理
}
return(0);
}
没有外部定义.......
MFC是标准的win32 Application文件
DLL为动态链接库Library,
连接文件
可以使用类进行封装窗口创建
MFC也是如此
可以加入afxwin.h头文件 对mfc库的调用
C++的半面向对象的思想mfc对基本数据也有所封装,
若果没有C基础,对其不熟悉,可能会进展不顺
对于一些函数传参不了,可以参考MSDN追问

我的GetMessage()参数写错了。错误的代码GetMessage(&msg,hwnd,0,0),改成GetMessage(&msg,NULL,0,0),错误解决!之前代码:
前面是一般的WinMain函数
while(GetMessage(&msg,hwnd,0,0))
{TranslateMessage(&msg);
DispatchMessage(&msg);}
return 0;//退出WainMain()函数,就是推出.exe执行进程?
是因为GetMessage(&msg,hwnd,0,0)错误的参数导致循环成死循环,return 0;不能执行?关闭之后没关闭的进程占CPU近50%

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-16
问题2,源代码是需要工作空间支持的。Win32 Application即(Win32 API)。所谓的这个工程,是把许多源代码组合在一起而已。编译时,将所有文件编译成相对应的*.o,组建的时候,将它们连接起来,再与系统库(如MFC)连接,组合成可执行文件
问题三
*.opt应该说是临时控件,对工程的修改都保存在这里,除非你保存文件。
plg是编译连接时产生的“日志”
obj就是编译成的目标文件
pdb、pch是编译时需要的文件本回答被提问者采纳
第2个回答  2011-08-12
第一个问题主要是:关闭窗口跟结束应用程序是有区别的
建议在看孙鑫的视频的时候结合一些书来看看,以前也是这样过来的。坚持,慢慢就会好地。
第3个回答  2011-08-12
一起来学习。

...我的步骤是这样的(跟着孙鑫教程里学的)。1,新建一个工程win32 applic...
RegisterClass(&wnd);\/\/注册 hWnd = CreateWindow("XP","窗口",WS_OVERLAPPEDWINDOW,100,100,500,500,NULL,NULL,hInstance,NULL);\/\/创建窗口,参考MSDN ShowWindow(hWnd,SW_SHOWNORMAL);\/\/显示 UpdateWindow(hWnd);\/\/更新窗口 while(GetMessage(&msg,NULL,0,0)){\/\/消息循环 TranslateMessage(&msg);...

在VC++6.0环境下如何编写一个小游戏?(贪吃蛇、五子棋...)
这些游戏一般是用MFC或者使用win32 api来实现的,所以你先学下win32编程,这是和控制台编程完全不同的方向,你现在只学了点语法知识还远远不够,建议你看下孙鑫的vc++视频,你会受益良多

在vc++6.0中新建了一个类,vc中自动生成的文件如下,请帮忙解释下每句话...
编译器就会跳到#endif之后 中间的代码就不会被编译了

本人菜鸟初学C语言,用的是vc++6.0,现在要做一个登陆界面要用什么画出来...
可以用MFC,你说的要弹框是消息响应,那个弹出对话框提示用户,用MessageBox这个,建议你看下孙鑫的MFC,从入门到精通,这个视频讲得很好,网上很容易找的到

vc++ mfc 怎么做界面啊???
1、首先在电脑中打开VC6.0->新建-,创建一个工作区,(工作区是用来保存工程)。2、在工作区里面添加工程,右击->添加工程到工作空间。3、选择MFC - exe 程序 。4、选择静态库,将程序发送给别人,可以直接运行。5、然后鼠标右键,选择编译程序。6、最后点击运行程序,程序就出来了。

谁的VC++6.0视频教程比较好,顺便把那个网址发过来,另外单片机后期学习...
我只看过孙鑫的那个,觉得讲的很不错。哪种语言学精通了都很有前途,而且编程思想很重要,语言是次级的

哪里有vc++6.0的视频使用教程?
如果你只想看视频教你用编译器,还真不好找,我介意你找个会用编译器的人教一下或者找一本VC++入门的书,那上面都有介绍。不是很难的。

我在学习vc++6.0的网络编程时,总显示“套接字绑定失败”的原因?
调试下 用GetLastErr()看看错误码是什么?VC下套接字需要引用ws2_32.lib 以及初始化套接字库 WSAStartup 你看看是不是你这两步没写?

孙鑫vc++视频教程中用的VC是哪一版
vusual c++6.0

用vc++6.0编程怎样生成可以直接使用的EXE程序
建立工程的时候选择MFC AppWizard[exe]或者Win32 Application,就可以生成可以直接使用的EXE程序

相似回答
大家正在搜