Местоположение набора MessageBox?

Что относительно того, чтобы просто добавить пустую ячейку, которая работает распорной деталью? Вы могли использовать тег седла как указано выше, чтобы дать пустым ячейкам определенную ширину

<col/>
<col style="width:20px"/>
<col/>
<col style="width:20px"/>
<col/>
<tr>
  <td>Data</td>
  <td>& nbsp;</td>
  <td>Data</td>
  <td>& nbsp;</td>
  <td>Data</td>
</tr>

Или если Вы хотите сделать больше с ними, просто добавьте классы к ним вместо того, чтобы использовать встроенное моделирование...

10
задан Mick 7 October 2009 в 09:58
поделиться

4 ответа

Шаг 1: Создайте ловушку CBT для перехвата создания окна сообщения:

// global hook procedure
HHOOK hhookCBTProc = 0;

LRESULT CALLBACK pfnCBTMsgBoxHook(int nCode, WPARAM wParam, LPARAM lParam)
{
  if (nCode == HCBT_CREATEWND)
  {
    CREATESTRUCT *pcs = ((CBT_CREATEWND *)lParam)->lpcs;

    if ((pcs->style & WS_DLGFRAME) || (pcs->style & WS_POPUP))
    {
      HWND hwnd = (HWND)wParam;

      // At this point you have the hwnd of the newly created 
      // message box that so you can position it at will
      SetWindowPos(hwnd, ...);
    }
  }

  return (CallNextHookEx(hhookCBTProc, nCode, wParam, lParam));
}

Шаг 2: Установите / удалите ловушку до и после показа окна сообщения :

// set hook to center the message box that follows
hhookCBTProc = SetWindowsHookEx(WH_CBT, 
                                pfnCBTMsgBoxHook, 
                                0, GetCurrentThreadId());

int sResult = MessageBox(hwndParent, pszMsg, pszTitle, usStyle);

// remove the hook
UnhookWindowsHookEx(hhookCBTProc);
13
ответ дан 3 December 2019 в 18:34
поделиться

Если мне требовалось дополнительное поведение для Messagebox, я всегда создавал свое собственное окно и делал его похожим на стандартный MessageBox. Вы делаете это правильно один раз, и всегда можете повторно использовать это в других проектах.

4
ответ дан 3 December 2019 в 18:34
поделиться

MessageBox - это в основном набор значений по умолчанию. Они не нравятся? Принести свой собственный. Если вам не нужно настоящее окно со всеми его сложностями, но MessageBox слишком ограничивает, создайте диалог.

3
ответ дан 3 December 2019 в 18:34
поделиться

Вы можете сделать это с помощью процедуры подключения CBT. В MSDN есть статья о том, как это сделать в VB, но преобразовать ее в C ++ не составит труда.

http://support.microsoft.com/kb/180936

1
ответ дан 3 December 2019 в 18:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: