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

2025-04-30 23:25:35
推荐回答(4个)
回答1:

#include
#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

回答2:

问题2,源代码是需要工作空间支持的。Win32 Application即(Win32 API)。所谓的这个工程,是把许多源代码组合在一起而已。编译时,将所有文件编译成相对应的*.o,组建的时候,将它们连接起来,再与系统库(如MFC)连接,组合成可执行文件
问题三
*.opt应该说是临时控件,对工程的修改都保存在这里,除非你保存文件。
plg是编译连接时产生的“日志”
obj就是编译成的目标文件
pdb、pch是编译时需要的文件

回答3:

第一个问题主要是:关闭窗口跟结束应用程序是有区别的
建议在看孙鑫的视频的时候结合一些书来看看,以前也是这样过来的。坚持,慢慢就会好地。

回答4:

一起来学习。