Запутывающая функция в диалогах C ++ - PullRequest
1 голос
/ 18 февраля 2011

Привет, может кто-нибудь объяснить мне, что делает эта функция, я сейчас читаю книгу по программированию и пытаюсь следовать этой функции.

Из того, что я могу собрать, функция обращается к окну.(в данном случае диалоговое окно), затем информация передается во втором параметре, а третий параметр является указателем на фактический объект.

Чтобы дать некоторый контекст, я пытаюсь заполнить поле со списком с помощьюадаптеры, которые есть у компьютера.

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 ]

1 голос
/ 18 февраля 2011

Добавляет строковое значение и соответствующее целое число в поле со списком.

Аспект, который вы можете упустить, заключается в том, что списки, комбинации и т. Д. Хранят целочисленное значение (такого же размера, как указатель) всписок параллельно списку текстовых меток.Вы можете поместить все что угодно в целочисленное значение.Например, вы можете вставить указатель на некоторую struct, содержащую дополнительную информацию.

Когда вам нужно ответить на выбор пользователя, вы просто считываете выбранное целочисленное значение, приводите его к указателю и делаетечто-то с этой информацией.

Конечно, многим спискам и комбинациям это не нужно (достаточно простой строки), поэтому 0 обычно передается.

1 голос
/ 18 февраля 2011

Раньше я использовал что-то подобное, чтобы добавить элементы в поле со списком, возможно, я помогу.

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

Где hwnd - это дескриптор диалога, IDC_COMBOSTATUS - идентификатор ресурса, а другие довольно понятны.

Попробуйте функцию SendDlgItemMessage, а не SendMessage.

С уважением,

Вайда

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...