Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| |
[C++] Как сделать вид типа CListBox? 31.05.01 17:31 Число просмотров: 961
Автор: myrmidon Статус: Незарегистрированный пользователь
|
Окно сделалось, но пустое, че то сам листбокс не создаёца
вроде надо его создавать функцией OnCreate(LPCREATESTRUCT lpCreateStruct)
но как?
есть пример с CListCtrl, там он образован от класса CListView
и в вызове OnCreate(LPCREATESTRUCT lpCreateStruct) пишеца так:
if(CListView::OnCreate(lpCreateStruct) == -1)
{
return -1;
}
CListCtrl & lc = GetListCtrl();
lc.InsertColumn(0, "Col 1", LVCFMT_LEFT, 100);
И ещо, весь вид должен быть образован с помощью вот такой муйни - IMPLEMENT_DYNCREATE
что бы потом запихнуть его в окно используя RUNTIME_CLASS
|
<programming>
|
[C++] Как сделать вид типа CListBox? 30.05.01 20:58
Автор: myrmidon Статус: Незарегистрированный пользователь
|
Делаю SDI прогу с несколькими видами, разделённые сплиттером
В каждую панель вставляю вид, который описан отдель в классе, так:
splitter.CreateView(0, 0, RUNTIME_CLASS(CView), pContext);
CView сделан от класса CEditView
Хочю сделать так же, но с классом CListBox
Пока ничо не выходит, кто нить знает, как можно это сделать?
|
|
[C++] Как сделать вид типа CListBox? 31.05.01 01:30
Автор: kabanchik Статус: Незарегистрированный пользователь
|
> Делаю SDI прогу с несколькими видами, разделённые > сплиттером > В каждую панель вставляю вид, который описан отдель в > классе, так: > splitter.CreateView(0, 0, RUNTIME_CLASS(CView), pContext); > CView сделан от класса CEditView > Хочю сделать так же, но с классом CListBox > Пока ничо не выходит, кто нить знает, как можно это > сделать?
если с помощью MFC, попробуй:
class CListBoxView : public CCtrlView
{
public:
CListBoxView();
}
CListBoxView::CListBoxView()
: CCtrlView("LISTBOX", LBS_STANDARD & (~WS_BORDER)) // убираем бордер если он есть,
// стиль пропиши на усмотрение или потом поменяй
{
}
ну и все остальное пальчиками набери. вроде должно сработать
|
| |
[C++] Как сделать вид типа CListBox? 31.05.01 17:31
Автор: myrmidon Статус: Незарегистрированный пользователь
|
Окно сделалось, но пустое, че то сам листбокс не создаёца
вроде надо его создавать функцией OnCreate(LPCREATESTRUCT lpCreateStruct)
но как?
есть пример с CListCtrl, там он образован от класса CListView
и в вызове OnCreate(LPCREATESTRUCT lpCreateStruct) пишеца так:
if(CListView::OnCreate(lpCreateStruct) == -1)
{
return -1;
}
CListCtrl & lc = GetListCtrl();
lc.InsertColumn(0, "Col 1", LVCFMT_LEFT, 100);
И ещо, весь вид должен быть образован с помощью вот такой муйни - IMPLEMENT_DYNCREATE
что бы потом запихнуть его в окно используя RUNTIME_CLASS
|
| | |
[C++] Как сделать вид типа CListBox? 31.05.01 18:21
Автор: kabanchik Статус: Незарегистрированный пользователь
|
> Окно сделалось, но пустое, че то сам листбокс не создаёца > вроде надо его создавать функцией OnCreate(LPCREATESTRUCT > lpCreateStruct) > но как?
нееее. это тут не причем.
"поиграй" со стилями. не забудь обязательно добавить WS_CHILD | WS_VISIBLE. а GetListBox(), можешь сделать так.
и на всякий, хотя не играет роли, добавь PreCreateWindow()б и надо еше RuntimeClass:
class CListBoxView : public CCtrlView
{
DECLARE_DYNCREATE(CListBoxView)
public:
CListBoxView();
virtual ~CListBoxView();
public:
const CListBox& GetListBox() const;
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
};
IMPLEMENT_DYNCREATE(CListBoxView, CCtrlView)
CListBoxView::CListBoxView()
: CCtrlView(_T("LISTBOX"), (LBS_STANDART | WS_CHILD | WS_VISIBLE) & (~WS_BORDER))
{
}
CListBoxView::~CListBoxView()
{
}
const CListBox& CListBoxView::GetListBox() const
{
return *((CListBox *) this);
}
BOOL CListBoxView::PreCreateWindow(CREATESTRUCT& cs)
{
return CCtrlView::PreCreateWindow(cs);
}
короче, если что не получится, меняй стили в конструкторе
|
| | | |
и еще 31.05.01 18:54
Автор: kabanchik Статус: Незарегистрированный пользователь
|
> CListBoxView::CListBoxView() > : CCtrlView(_T("LISTBOX"), (LBS_STANDART | WS_CHILD | > WS_VISIBLE) & (~WS_BORDER)) > { > } > вот тут, пусть WS_BORDER - не будет для тебя догмой, его тоже попробуй.
|
|
|