none
請問:如何在 ATL COM 的 Service 中使用 MFC RRS feed

  • 問題

  • 我用 VS 2005 建立一個 ATL 專案,

    選擇類型是 "服務(service)", (此選項的"支援MFC"被gray掉)

    因為我要用別人寫的class, 它有用到MFC的東西(e.g. CString),

    我就在 stdafx.h 中加入 "#include <afxwin.h>" or "#include <atlstr.h>",

    可是 compiler 出來都會出現:

    ..\Microsoft Visual Studio 8\VC\atlmfc\include\afxv_w32.h(16) : fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>

     

    請問各位, 有什麼辦法可以解決呢?

    謝謝!

     

    2007年7月16日 上午 06:17

解答

  • HI,

     

    有點難解決, 如果是要用CString類別的話, 可以改成:

     

    #include <cstringt.h>

    不要#include <afxwin.h>

     

    應該可以BUILD成功

     

    tihs

    2007年7月21日 上午 06:36

所有回覆

  • 2007年7月16日 上午 09:40
    版主
  • 小朱大大, 謝謝您的回覆.

    不過, 您說的是不是使用 VC6 的方式呢?

    我是用 VS 2005, 且是從頭開始建起的.

     

    當我改用 VC6 的 wizard 來建立一個 ATL COM 的 service project,

    只需要在 stdafx.h 中(在 #include <atlbase.h> 之前)加上"#include <afxwin.h>"

    並在setting->general中修改使用MFC這樣就可以使用 MFC的東西了.

     

    但是, 同樣在 VS 2005 建立的project 使用同樣的方式就會出現 error,

    我不懂位什麼會這樣呀?

    請知道的人告訴我要怎樣修改.

    謝謝!!

     

    2007年7月16日 下午 01:22
  • HI,

     

    請問您有在使用VS2005建立ATL專案時勾選[支援MFC]這個項目嗎?

     

    tihs

    2007年7月19日 上午 02:49
  • HI,

     

    勾選[支援MFC]項目會令VS 2005加入需要的include, 不需要自行加入

     

    tihs

    2007年7月19日 上午 02:50
  • Hi tihs,

    建立 ATL 專案有三種選項:

    1. DLL

    2. EXE

    3. Service (EXE)

     

    只有第一種才有 MFC 可以勾選, 另外兩個是沒有的.

     

    Thanks.

    2007年7月20日 上午 08:27
  • HI,

     

    有點難解決, 如果是要用CString類別的話, 可以改成:

     

    #include <cstringt.h>

    不要#include <afxwin.h>

     

    應該可以BUILD成功

     

    tihs

    2007年7月21日 上午 06:36