为什么程序会在窗口句柄那一栏显示访问冲突(初学MFC,不懂)
#include<windows.h> //底层实现窗口的头文件
//程序入口函数
//WINAPI 代表_stdcall 参数传递的顺序,从右到左,依次入栈,并且在函数返回前清空堆栈
int WINAPI WinMain(
HINSTANCE hInstance, //应用程序实例句柄(后面应用程序实例句柄传入的形参)
HINSTANCE hPrevInstance, //上一个应用程序句柄,在Win32环境下,参数一般为NULL,不起作用了
LPSTR lpCmdline, //char*argv[]
int nShowCmd) //显示命令 最大化 最小化 正常
{/*
1、设计窗口
2、注册窗口
3、创建窗口
4、显示和更新
5、通过循环取消息
6、处理消息(窗口过程)
*/
//1、设计窗口
// (窗口类)
WNDCLASS wc;
wc.cbClsExtra = 0; //类的额外的内存
wc.cbWndExtra = 0;//窗口的额外的内存
//(白色画笔,直接选择按F1在线跳转看,然后输入就行了)
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//设置背景
wc.hCursor = LoadCursor(NULL, IDC_HAND); //设置光标 如果第一个为NULL,代表使用系统设置的光标
wc.hIcon = LoadIcon(NULL, IDI_ERROR); //设置光标 如果第一个为NULL,代表使用系统设置的光标
wc.hInstance=hInstance; //应用程序实例句柄,传入WinMain中的形参即可
// wc.lpfnWndProc = WindowProc; //回调函数,窗口过程
wc.lpszClassName = TEXT("WIN"); //指定窗口类名称
wc.lpszMenuName = NULL; //菜单名称
wc.style = 0; //显示风格,0代表默认风格
//2、注册窗口类
RegisterClass(&wc);
//3、创建窗口
/*
lpClassName, 类名
lpWindowName, 标题名
dwStyle, WS_OVERLAPPEDWINDOW 风格
x, 显示坐标 CW_USEDEFAULT 默认值
y, 显示坐标 CW_USEDEFAULT 默认值
nWidth, 宽度 CW_USEDEFAULT 默认值
nHeight, 高度 CW_USEDEFAULT 默认值
hWndParent, 父窗口,NULL 以#号传出
hMenu, 菜单 NULL
hInstance, 实例句柄 hInstance
lpParam 附加值 鼠标附加值 NULL
*/
//窗口句柄
HWND hwnd=CreateWindow(wc.lpszClassName, TEXT("WINDOWS"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
//4、显示和更新
ShowWindow(hwnd, SW_SHOWNORMAL);
UpdateWindow(hwnd);
//5、通过循环取消息
/*
HWND hwnd; 主窗口句柄
UINT message; 具体消息名称
WPARAM wParam; 附加消息 键盘消息
LPARAM lParam; 附加消息 鼠标消息(鼠标左右键)
DWORD time; 消息产生的时间
POINT pt; 附加消息 鼠标消息(坐标点的消息)
*/
MSG msg;
while (1) {
/*
_Out_ LPMSG lpMsg, 封装好的消息的指针
_In_opt_ HWND hWnd, 捕获窗口, 填NULL代表捕获所有窗口
_In_ UINT wMsgFilterMin, 最小和最大的过滤消息,一般填0
_In_ UINT wMsgFilterMax 填0代表捕获所有的消息
*/
if (GetMessageW(&msg,NULL,0,0)==FALSE) {
break;
}
//翻译消息
TranslateMessage(&msg);
//不为false 则分发消息
DispatchMessage(&msg);
}
return 0;
}
可能是你用了重复的窗口类名,固定的类名WIN,试用一个唯一的窗口类名来标识你的窗口类。。
多媒体定时器是一种精度较高的定时器,其与won32传统的定时器有着一定程度上的区别,在工业生产中需要及时响应且要满足较高精度需求时常常会用到这种定时器,多媒体定时器不依赖于消息机制(也就是win32中的定时器,使用Settimer函数创建一个对象,通过消息WM_TIMER添加一个ontimer的消息响应函数,每过一个时间间隔时,系统就会调用这个ontimer函数中的功能),多媒体定时器则是另外开辟一个独立线程来执行定时器回调函数,相比于win32定时器响应更快,容错率更高,精度也更高。