此种情况一般适应于由于该工程加了某些限制,导致某些功能不能在此工程里实现,或者该工程为主工程,不项工程文件太大,所以把要实现的功能通过发送消息的方式发给子工程,是某些功能在子工程里实现;
一、 工程文件中所要做的处理(即发消息的文件)
(1)在dll工程定义消息
#define WM_INCRESS_VOLUME WM_USER + 102
(2)
HWND hWnd;
hWnd = FindWindow(_T("VOLUMESET"),NULL); //查找子工程的窗口类名 或窗口名 参考FindWindow参数1,2 的意义
PostMessage(hWnd,WM_INCRESS_VOLUME,0,0); //给查到的窗口发送消息
return SSN_OK;
二、子工程要做的处理
建一个有窗口的工程,运行时要把窗口隐藏 ,一般为Win32 Project工程;
(1)同样要定义 一样的消息
#define WM_INCRESS_VOLUME WM_USER + 102
(2)在消息循环中判断添加的消息;
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
EndPaint(hWnd, &ps);
break;
case WM_INCRESS_VOLUME:
IncreaseVolume();
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
(3)在IncreaseVolume中实现相应功能;