此種情況一般適應於由於該工程加了某些限制,導致某些功能不能在此工程裏實現,或者該工程爲主工程,不項工程文件太大,所以把要實現的功能通過發送消息的方式發給子工程,是某些功能在子工程裏實現;
一、 工程文件中所要做的處理(即發消息的文件)
(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中實現相應功能;