file_list_wnd_proc (pstruct -w reply, p_program_state -&w state, p_msg msg)
                if (msg->message == WM_BEGIN_DRAG)
{
  mouse_action = (ulong) msg->mp1;
  ...
  dg = alloc_drag_info (msg->window, mouse_action, record_count);
  ...
  records_in (array, record_count, (pstruct pointer) {
                                                       add_item (dg, &drag_item, -_),
                                                       {
                                                         drag_item = {
                                                                       ...
                                                                     }
                                                       }
                                                     });
  begin_drag (dg, mouse_action);
}
/
{
  free (&dg);
}

file_list_wnd_proc (pstruct -w reply, p_program_state -&w state, p_msg msg)
                if (msg->message == WM_DRAG_RENDER, WM_DISCARD_OBJECT, WM_PRINT_OBJECT)
{
  ...
}

file_list_wnd_proc (pstruct -w reply, p_program_state -&w state, p_msg msg)
                if (msg->message == WM_DRAG_COMPLETE)
{
  dg = (hdraginfo) msg->mp1;
  item_id = (ulong) msg->mp2;

  ...

}
