WTL CDialogResize - не работает, не пойму почему
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 29.09.13 19:47
Оценка:
Здравствуйте!

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

struct CSelClipboardFormatValue
{
    UINT                          formatId;
    std::basic_string< TCHAR >         formatTitle;
};



class CSelectClipboardFormatsDlg 
               : public CDialogImpl<CSelectClipboardFormatsDlg>
               //, public CWinDataExchange<CClipboardStripperDlg>
               , public CDialogResize<CSelectClipboardFormatsDlg>
{
    const CSelClipboardFormatValue *pInputValues;
          CSelClipboardFormatValue *pOutputValues;

    std::basic_string< TCHAR >    dialogTitle;
    bool                          multisel;

public:

    enum { IDD = IDD_SELECT_CLIPBRD_FORMATS_DLG };

    void setupTitle()
       {
        if (dialogTitle.empty())
           {
            const TCHAR *defStrs[2] = { _T("Select clipboard format")
                                      , _T("Select clipboard formats")
                                      };
            //UINT strId = IDS_SELECT_CLIPBOARD_FORMAT_TITLE;
            UINT i = 0;
            if (multisel) i = 1;
            dialogTitle = win32LoadResourseString(IDS_SELECT_CLIPBOARD_FORMAT_TITLE+i, defStrs[i], moduleInstance );
           }
        ::SendMessage( m_hWnd, WM_SETTEXT, 0 /* wParam */, (LPARAM)dialogTitle.c_str() );  
       }


    CSelectClipboardFormatsDlg ( const CSelClipboardFormatValue &inputs
                               ,       CSelClipboardFormatValue &results
                               , bool  ms
                               , const TCHAR *pStrDialogTitle = 0
                               ) 
       : CDialogImpl<CSelectClipboardFormatsDlg>()
       , CDialogResize<CSelectClipboardFormatsDlg>()
       , pInputValues(&inputs)
       , pOutputValues(&results)
       , multisel(ms)
       , dialogTitle(pStrDialogTitle?pStrDialogTitle:_T(""))
       {
       }

    CSelectClipboardFormatsDlg ( const CSelClipboardFormatValue &inputs
                               ,       CSelClipboardFormatValue &results
                               , bool  ms
                               , const std::basic_string< TCHAR > &dlgTitle
                               ) 
       : CDialogImpl<CSelectClipboardFormatsDlg>()
       , CDialogResize<CSelectClipboardFormatsDlg>()
       , pInputValues(&inputs)
       , pOutputValues(&results)
       , multisel(ms)
       , dialogTitle(dlgTitle)
       {
       }

    ~CSelectClipboardFormatsDlg () 
        {
        }

    BEGIN_MSG_MAP(CSelectClipboardFormatsDlg)

        MSG_WM_INITDIALOG(OnInitDialog)
        COMMAND_ID_HANDLER_EX(IDOK, OnOK)
        COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel)
        CHAIN_MSG_MAP(CDialogResize<CSelectClipboardFormatsDlg>)
        REFLECT_NOTIFICATIONS()

    END_MSG_MAP()

    BEGIN_DLGRESIZE_MAP(CSelectClipboardFormatsDlg)  

        DLGRESIZE_CONTROL(IDC_GRID   , DLSZ_SIZE_X|DLSZ_SIZE_Y)

        DLGRESIZE_CONTROL(IDC_CHECK_ALL    , DLSZ_MOVE_Y)
        DLGRESIZE_CONTROL(IDC_UNCHECK_ALL  , DLSZ_MOVE_Y)
        DLGRESIZE_CONTROL(IDOK             , DLSZ_MOVE_X|DLSZ_MOVE_Y)
        DLGRESIZE_CONTROL(IDCANCEL         , DLSZ_MOVE_X|DLSZ_MOVE_Y)

    END_DLGRESIZE_MAP()


    LRESULT OnInitDialog ( HWND hwndFocus, LPARAM lParam )
    {
        setupTitle();
        DlgResize_Init( true, true, WS_CLIPCHILDREN | WS_THICKFRAME );//();
        CenterWindow();
        return TRUE;
    }

    void OnOK ( UINT uCode, int nID, HWND hWndCtl )
       {
        EndDialog(nID);
       }

    void OnCancel ( UINT uCode, int nID, HWND hWndCtl )
       {
        EndDialog(nID);
       }

};
Маньяк Робокряк колесит по городу
Re: WTL CDialogResize - не работает, не пойму почему
От: RedApe Беларусь  
Дата: 18.12.13 09:41
Оценка:
Здравствуйте, Marty, Вы писали:

M>
M>        DlgResize_Init( true, true, WS_CLIPCHILDREN | WS_THICKFRAME );//();
M>


Здесь уже поздно устанавливать стиль WS_THICKFRAME он должен быть установлен
при создании диалога.
--
RedApe
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.