在C ++对话框中混淆功能

时间:2011-02-18 18:59:07

标签: c++ windows winapi graphics

你可以向我解释这个功能是做什么的,我正在阅读一本编程书,我正在努力遵循这个功能。

从我可以收集的函数中获取窗口的句柄(在这种情况下是一个对话框),然后在第二个参数中传递信息,第三个参数是指向实际对象的指针。

为了给出一些上下文,我试图使用计算机具有的适配器填充组合框。

void AddItem(HWND hWnd, char *ch, void *pData) 
{
  WPARAM nI = (WPARAM)((int)(DWORD)SendMessage(hWnd,CB_ADDSTRING,0,(LPARAM)ch));

  SendMessage(hWnd,CB_SETITEMDATA, nI, (LPARAM)pData);
}

这是一个示例电话:

for (UINT a=0; a<m_dwNumAdapters; a++) 
{
   AddItem(m_hADAPTER, m_xAdapterInfo[a].d3dAdapterIdentifier.Description,
           &m_xAdapterInfo[a]);
}

感谢。

2 个答案:

答案 0 :(得分:1)

我之前使用类似的东西将项目添加到组合框中,我可能会有所帮助。

SendDlgItemMessage(hwnd, IDC_COMBOSTATUS, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) "Available");

hwnd处理对话框的地方,IDC_COMBOSTATUS是资源ID,其他很清楚。

尝试使用SendDlgItemMessage函数而不是SendMessage。

此致

Vajda

答案 1 :(得分:1)

它将一个字符串值和相关的整数添加到组合框中。

您可能缺少的方面是列表框,组合等在与文本标签列表平行的列表中存储整数值(与指针大小相同)。你可以把任何你喜欢的东西放在整数值中。例如,您可以输入指向包含更多信息的某些struct的指针。

当您需要响应用户的选择时,您只需读出所选的整数值,将其转换为指针,然后对该信息执行某些操作。

当然,许多列表和组合不需要任何这些(简单的字符串就足够了),因此通常会传递0