2013-11-26 59 views
1

即时通讯尝试将Microsoft eMbedded Visual C++的WinCE 5.0应用程序传输到Visual Studio 2008.我在VS2008中为我的SDK-Platform创建了一个Dialog应用程序。大多数情况下工作到目前为止只有很小的变化但我仍然有一个问题: “老”的应用程序使用VS2008嵌入式应用程序GetDlgItem()

MainDialog.cpp: 

hListBox = GetDlgItem(hDlg, IDC_LISTBOX); 

得到一个列表框,应显示流驱动器的数据的句柄。列表框手柄全局声明在头文件:

App.h: 

HWND hListBox; 

在另一C++ - 文件此手柄用于经由SendMessage消息()的自己的线程内,以将数据写入到该列表框:

App.cpp: 

SendMessage(hListBox, ...); 

这很好,但在VisualStudio 2008中,函数CWND :: GetDlgItem()和CWND :: SendMessage()现在完全不同了。什么是在VS 2008中处理这个问题的好方法?

问候

+2

他们没有什么不同,这些成员函数只是不包括HWND参数自CWnd类已经知道了手柄。根本不太可能你应该使用CWnd类。这是一个MFC类,将您的旧应用程序转换为MFC将是一项主要工作。确保你不只是看错了MSDN文章。 –

回答

0

如果你使用MFC的CWND::xyz,则该句柄是CWnd派生类的成员变量,不会被指定。在你的例子中,看起来你想要这些函数的基础Win32 API版本。尝试指定默认名称空间。

例如:

::GetDlgItem(hDlg, IDC_LISTBOX); 

::SendMessage(hListBox, ...); 
+0

为了让OP更清楚,'指定默认命名空间'意味着'在函数调用前放置两个冒号' –