MFC
От: Аноним  
Дата: 26.10.02 11:40
Оценка:
Какой стиль нужно установить окну, чтобы можно было менять его размеры?
Re: MFC
От: Denwer Россия  
Дата: 26.10.02 13:55
Оценка:
Здравствуйте Аноним, Вы писали:

А>Какой стиль нужно установить окну, чтобы можно было менять его размеры?


Смотри MSDN флаг WS_THICKFRAME
Re[2]: MFC
От: Аноним  
Дата: 26.10.02 14:16
Оценка:
Denwer, если бы все было так просто я бы не спрашивал — не дурней паровоза, наверное. Трабл в следующем — получить по нажатию мыши на комбобокс HWND выпадающего листбокса по WM_CTLCOLORLISTBOX и затем модифицировать его как resizable. Сколько со стилями не игрался — не получается. Точнее сам то бордер для изменения размера появляется, а вот Курсор при подведении на границу не изменяется и тянуться тоже не хочет.

Но, за помощь спасибо огромное, ценю...
Re[3]: MFC
От: akela  
Дата: 27.10.02 07:48
Оценка:
Здравствуйте Аноним, Вы писали:

А>Denwer, если бы все было так просто я бы не спрашивал — не дурней паровоза, наверное. Трабл в следующем — получить по нажатию мыши на комбобокс HWND выпадающего листбокса по WM_CTLCOLORLISTBOX и затем модифицировать его как resizable. Сколько со стилями не игрался — не получается. Точнее сам то бордер для изменения размера появляется, а вот Курсор при подведении на границу не изменяется и тянуться тоже не хочет.


А>Но, за помощь спасибо огромное, ценю...


Вот здесь есть пример. Там, правда, делается не sublassing, а создается новое окно, которое маскируется под листбокс. Но мне стало интересно — получить resizeable просто listbox у меня сходу как-то не получилось. Это в принципе-то возможно? Можь у него в оконной процедуре этого и нету?

P.S. Просьба не наезжать, если совет глупый. По описанию проблемы (особенно в первом сообщении) понять проблему не так просто .
Re[4]: MFC
От: DiMaster  
Дата: 28.10.02 06:53
Оценка:
Короче, тот самый Аноним — это я.

Отвечаю на вопрос:
HWND выпадающего листбокса можно получить, сделав следующее:
1) Создать свой собственный экземпляр CComboBox и ассоциировать его с нужным ресурсом на форме;
2) В своем комбобоксе прописать в карте сообщений:

BEGIN_MESSAGE_MAP(CComboBoxExt, CComboBox)
    //{{AFX_MSG_MAP(CComboBoxExt)
    ON_MESSAGE(WM_CTLCOLORLISTBOX, OnCtlColorListBox)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()


3) прописать саму функциевину:

LRESULT CComboBoxExt::OnCtlColorListBox(WPARAM wParam, LPARAM lParam) 
{
    HWND hWnd = (HWND)lParam;
    if (m_hListBox == 0) 
    {
        //HWND hWnd = (HWND)lParam;

        if (hWnd != 0 && hWnd != m_hWnd) 
        {
            m_hListBox = hWnd;
    
            CWnd* pWnd = FromHandle( hWnd );

            pWnd->ModifyStyle(WS_CHILD, WS_POPUP|WS_THICKFRAME);
        }
    }

    

    return DefWindowProc(WM_CTLCOLORLISTBOX, wParam, lParam);
}


4) в h-файле для своего комбобокса:


        HWND m_hListBox;
        .....
        //{{AFX_MSG(CComboBoxExt)
    LRESULT OnCtlColorListBox(WPARAM wParam, LPARAM lParam);
    //}}AFX_MSG
Re[5]: MFC
От: akela  
Дата: 29.10.02 06:51
Оценка:
Здравствуйте DiMaster, Вы писали:

DM>Короче, тот самый Аноним — это я.


DM>Отвечаю на вопрос:

DM>HWND выпадающего листбокса можно получить, сделав следующее:
DM>1) Создать свой собственный экземпляр CComboBox и ассоциировать его с нужным ресурсом на форме;
DM>2) В своем комбобоксе прописать в карте сообщений:

Теперь моя очередь писать, что я не дурней паровоза. Я это все делать умею (мне был нужен комбобокс с множественным выбором). Разумеется, HWND listbox'a ловился именно таким образом, и ему делался sublassing. Вопрос в другом: ты где-нибудь когда-нибудь resizable listbox видел? Просто я — нет. Я не пытаюсь сказать, что это невозможно, я этого просто не знаю. Можь проблема-то вовсе не в стилях и т.д.?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.