dll 工程給exe 發消息

此種情況一般適應於由於該工程加了某些限制,導致某些功能不能在此工程裏實現,或者該工程爲主工程,不項工程文件太大,所以把要實現的功能通過發送消息的方式發給子工程,是某些功能在子工程裏實現;

一、 工程文件中所要做的處理(即發消息的文件)

(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中實現相應功能;


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章