如何知道WM_DEVICECHANGE
到达?捕捉WM_DEVICECHANGE
WndProc
被覆盖。我收到了大量的消息,但没有一个是WM_DEVICECHANGE
。 RegisterDeviceNotification
使连接器抱怨它无法找到该功能!所以我被困在这个巫术魔术中。请帮助。
P.S .:当然,我一直在使用google搜索和堆栈(大声笑)所有这些东西大约8个小时。
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
LPTSTR lolclassname = "lolclass";
WNDCLASS lolclass;
HWND lolwindow;
MSG lolmsg;
UINT msgstatus;
lolclass.style = CS_VREDRAW;
lolclass.lpfnWndProc = &lol_wnd_proc;
lolclass.cbClsExtra = 0;
lolclass.cbWndExtra = 0;
lolclass.hInstance = hInstance;
lolclass.hIcon = NULL;
lolclass.hCursor = NULL;
lolclass.hbrBackground = (HBRUSH)(COLOR_BACKGROUND + 1);
lolclass.lpszMenuName = NULL;
lolclass.lpszClassName = lolclassname;
if(!RegisterClass(&lolclass)) fail("RegisterClassEx");
lolwindow = CreateWindow("lolclass", NULL, WS_MINIMIZE, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
HWND_MESSAGE, NULL, hInstance, NULL);
if(lolwindow == NULL) fail("CreateWindowEx");
/*ShowWindow(lolwindow, nCmdShow);
UpdateWindow(lolwindow);*/
do {
/* if(!SetWindowPos(lolwindow, HWND_TOPMOST, 1, 1, 1, 1,
SWP_HIDEWINDOW))
fail("SetWindowPos");*/
msgstatus = GetMessage(&lolmsg, lolwindow, 0, 0);
if(!msgstatus) break;
if(msgstatus == - 1) fail("GetMessage");
TranslateMessage(&lolmsg);
DispatchMessage(&lolmsg);
Sleep(1000);
} while(1);
return lolmsg.wParam;
}
lol_wnd_pro
c的执行,但从来没有当它应该(在课程的设备变化,我是清楚了吗?)
我想描述不清晰。如果可能,请重新组织并显示一些代码 – 2012-04-16 04:50:44
为什么您尝试自己编写样板代码,而不是使用广泛分布的样本之一? – 2012-04-16 08:43:52
*是*前缀与'大声笑'的一切问题。即使是操作系统也不会认真对待你。大声笑。 – 2012-04-16 11:03:49