Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2005-06-29

Re[3]: CListCtrl

Здравствуйте !

> Я извиняюсь, если можно, продублируйте ваше письмо, а то вместо текста
> пришли краколзяблики.

Нда... что то глюкнул оутлук... Дублирую:

> Кто нибудь, помогите присоеденить изображение в CListCtrl. Если есть
> пример кода, буду благодарен.

Надо создать Image List (в MFC есть класс CImageList), загрузить в него
картинки, установить его для контрола, и при добавлении, например,
итемов в лист указывать индекс изображений в ImageList-е.

Например, есть диалог CMyDialog, в нем - лист контрол (для него
создаем объект класса CListCtrl), в ресурсах есть, например,
bmp-шка 64x32 пиксела (ID ресурса IDB_BITMAP1), цветом фона этой
bmp-шки будем считать 0xFF00FF.

Файл MyDialog.h

class CMyDialog : public CDialog
{
...
CListCtrl m_wndList;
...
CImageList m_ilImageList;
...
}

Файл MyDialog.cpp

BOOL CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
...

m_ilImageList.Create(IDB_BITMAP1, 32, 2, RGB(0xFF, 0x00, 0xFF));

m_wndList.SetImageList(&m_ilImageList, LVSIL_NORMAL);

m_wndList.InsertItem(0, "Item 1", 0);
m_wndList.InsertItem(1, "Item 2", 1);
...
}

например, так.
З.Ы. Лист в режиме иконок.

--
С уважением, Вахтуров Виктор.

Номер выпуска : 4709
Возраст листа : 647 (дней)
Количество подписчиков : 521
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/393089
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-06-29 20:51:26 (#393089)

find and find_if

Подскажите пожалуйста кто работас с ф-ями find и find_if как
сделать правильный предикат... для вектора Vect
std::vector<std::pair<int,CString> > Vect

int i=1000;

std::vector<std::pair<int,CString> >::const_iterator it;
it = std::find_if(Vect.begin(),Vect.end(),greater);

как найти итератор it такой, что it->first == i ????

и как должна тогда выглядеть ф-я greater???

Номер выпуска : 4708
Возраст листа : 647 (дней)
Количество подписчиков : 521
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/393084
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-06-29 20:46:33 (#393084)

Смена стиля

Хай лист!

Как в с помощью Delphi сменить тему оформления Windows XP (стиль и
т.п.).
Знаю, что надо изменять значения в реестре, но как сделать чтоб ещё и
окошко выползало с надписью "пожалуйста подождите", как это делает
StyleXP?

   2005-06-29 16:44:49 (#392893)

Re[2]: CListCtrl

Здравствуйте, Victor.

Я извиняюсь, если можно, продублируйте ваше письмо, а то вместо текста
пришли краколзяблики.

   Виктор 2005-06-29 09:58:38 (#392733)

Каскадные изменения в Oracle

Почему при создании констраинта поддерживается опция on delete cascade, но не
поддерживается аналогичная on update.

// эта конструкция работает
ALTER TABLE SlaveTable ADD Constraint ST_FK
FOREIGN KEY (AnyKeyField) References MasterTable (AnyKeyField)
ON DELETE Cascade;

// Облом
ALTER TABLE SlaveTable ADD Constraint ST_FK
FOREIGN KEY (AnyKeyField) References MasterTable (AnyKeyField)
ON UPDATE Cascade;

Вроде оба варианта включены в SQL92.

Если 2 конструкция не работает, то можно ли сэмулировать ее в триггерах.
Заранее благодарен.

Номер выпуска : 4705
Возраст листа : 647 (дней)
Количество подписчиков : 521
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/392656
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   Олег Воеводский 2005-06-29 04:42:14 (#392656)

Re: CListCtrl

NO(C)NOХNOвNOСNOУNOгNOдNOУNOеNOЫNOдNOЦ !

> NONONOдNOа NOЯNOЪNOТNOеNOХNOо, NOбNOаNOЮNOаNOФNOЪNOдNOЦ NOбNOвNOЪNOгNOаNOЦNOХNOЦNOЯNOЪNOдNOо

NOЪNOЩNOаNOТNOвNOСNOШNOЦNOЯNOЪNOЦ NOУ CListCtrl. NO|NOгNOЭNOЪ NOЦNOгNOдNOо
> NOбNOвNOЪNOЮNOЦNOв NOЬNOаNOХNOС, NOТNOеNOХNOе NOТNOЭNOСNOФNOаNOХNOСNOвNOЦNOЯ.


NOINOСNOХNOа NOгNOаNOЩNOХNOСNOдNOо Image List (NOУ MFC NOЦNOгNOдNOо NOЬNOЭNOСNOгNOг

CImageList), NOЩNOСNOФNOвNOеNOЩNOЪNOдNOо NOУ NOЯNOЦNOФNOа
NOЬNOСNOвNOдNOЪNOЯNOЬNOЪ, NOеNOгNOдNOСNOЯNOаNOУNOЪNOдNOо NOЦNOФNOа NOХNOЭNOс
NOЬNOаNOЯNOдNOвNOаNOЭNOС, NOЪ
NOбNOвNOЪ NOХNOаNOТNOСNOУNOЭNOЦNOЯNOЪNOЪ, NOЯNOСNOбNOвNOЪNOЮNOЦNOв,
NOЪNOдNOЦNOЮNOаNOУ NOУ NOЭNOЪNOгNOд NOеNOЬNOСNOЩNOнNOУNOСNOдNOо NOЪNOЯNOХNOЦNOЬNOг

NOЪNOЩNOаNOТNOвNOСNOШNOЦNOЯNOЪNOЫ NOУ ImageList-NOЦ.

NOINOСNOбNOвNOЪNOЮNOЦNOв, NOЦNOгNOдNOо NOХNOЪNOСNOЭNOаNOФ CMyDialog, NOУ NOЯNOЦNOЮ
- NOЭNOЪNOгNOд
NOЬNOаNOЯNOдNOвNOаNOЭ (NOХNOЭNOс NOЯNOЦNOФNOа
NOгNOаNOЩNOХNOСNOЦNOЮ NOаNOТNOмNOЦNOЬNOд NOЬNOЭNOСNOгNOгNOС CListCtrl), NOУ NOвNOЦNOгNOеNOвNOгNOСNOз

NOЦNOгNOдNOо, NOЯNOСNOбNOвNOЪNOЮNOЦNOв,
bmp-NOкNOЬNOС 64x32 NOбNOЪNOЬNOгNOЦNOЭNOС (ID NOвNOЦNOгNOеNOвNOгNOС IDB_BITMAP1),

NOиNOУNOЦNOдNOаNOЮ NOжNOаNOЯNOС NOпNOдNOаNOЫ
bmp-NOкNOЬNOЪ NOТNOеNOХNOЦNOЮ NOгNOйNOЪNOдNOСNOдNOо 0xFF00FF.

NOPINOСNOЫNOЭ MyDialog.h

class CMyDialog : public CDialog
{
...
CListCtrl m_wndList;
...
CImageList m_ilImageList;
...
}

NOPINOСNOЫNOЭ MyDialog.cpp

BOOL CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
...

m_ilImageList.Create(IDB_BITMAP1, 32, 2, RGB(0xFF, 0x00, 0xFF));

m_wndList.SetImageList(&m_ilImageList, LVSIL_NORMAL);

m_wndList.InsertItem(0, "Item (C)ц1", 0);
m_wndList.InsertItem(1, "Item (C)ц2", 1);
...
}

NOЯNOСNOбNOвNOЪNOЮNOЦNOв, NOдNOСNOЬ.
NO(C).NOS. NO--NOЪNOгNOд NOУ NOвNOЦNOШNOЪNOЮNOЦ NOЪNOЬNOаNOЯNOаNOЬ.

--
NOi NOеNOУNOСNOШNOЦNOЯNOЪNOЦNOЮ, NOJNOСNOзNOдNOеNOвNOаNOУ NOJNOЪNOЬNOдNOаNOв.

Номер выпуска : 4704
Возраст листа : 647 (дней)
Количество подписчиков : 522
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/392638
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-06-29 01:52:26 (#392638)

Re[7]: Вопрос

Здравствуйте !

> Ещё вопрос. У меня не получается включить инструментальную подсказку
> над "Edit", "Check Box" и Radio Button". Над ними есть возможность
> включить подсказку?

Есть конечно.
Есть стандартный контрол Tool Tip в винде.
В MFC есть соответствующий класс CToolTipCtrl.
Так вот. Один способ "включить" подсказки в _любом_ окне - создать
окно тултипа, зарегистрировать "тулы" - задать области в которых будут
выводиться подсказки с помощью CToolTipCtrl::AddTool
(сообщение TTM_ADDTOOL), активизировать его, и ловить сообщения мыши
чтобы вызывать потом CToolTipCtrl::RelayEvent.

Как часто бывает, есть другой способ.

Фишка в том, что в MFC уже реализован механизм создания тултипа,
фильтрации и обработки сообщений мыши для работы с подсказками.
Указатель на экземпляр тултипа находится в структуре _AFX_THREAD_STATE -
в каждом потоке ядро MFC когда надо может создавать 1 экземпляр
этого контрола.
Для того, чтобы "включить" для некоторого окна _автоматическое_
отображение подсказок, надо вызвать для него CWnd::EnableToolTips, либо
CWnd::EnableTrackingToolTips.

Здесь я пишу "автоматическое"... на самом деле не все так просто.
В окне-рамке (понаследованном от CFrameWnd) все действительно будет
работать (если в таком окне создать дочерние контролы, а в таблице
строк будут строки с ID, равными ID этих контролов и эти строки
будут вида '\nПодсказка', то над дочерними контролами будут эти
подсказки выводиться). Если же попытаться что то подобное сделать
для другого окна - не прокатит.

Дело в том, что в CFrameWnd есть обработчик сообщения WM_NOTIFY
с кодами TTN_NEEDTEXTA и TTN_NEEDTEXTW. Этот обработчик как раз
и грузит строки из ресурсов и отдает их тултипу для отображения.

Так вот для решения Вашей задачи (отображения тултипов над дочерними
окнами в любом окне надо для этого окна вызвать EnableToolTips, а также
создать обработчик WM_NOTIFY с кодами TTN_NEEDTEXTA и TTN_NEEDTEXTW:

class CMyWindow : public CBaseClass
{
afx_msg BOOL OnToolTipText(UINT nID, NMHDR* pNMHDR,
LRESULT* pResult);
...
}

BEGIN_MESSAGE_MAP(CMyWindow, CBaseClass)
//{{AFX_MSG_MAP(CMyWindow)
...
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CMyWindow::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
...
}

Код OnToolTipText можно, конечно, полностью передрать из
CFrameWnd::OnToolTipText (это можно делать в случае, если, например,
проект на диалоге построен), а можно просто делегировать вызов
в метод окна, понаследованного от CFrameWnd (если проект - MFC
SDI или MDI проект, то главное окно - как раз и является наследником
CFrameWnd).

То есть что то типа:

BOOL CMyWindow::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
class CDummyFrame : public CFrameWnd
{
friend class CMyWindow;
};

return ((CDummyFrame *) AfxGetMainWnd())->OnToolTipText(0,
pNMHDR, pResult);
}

Это только если класс главного окна является потомком CFrameWnd

Все, пожалуй :)

--
С уважением, Вахтуров Виктор.

Номер выпуска : 4703
Возраст листа : 647 (дней)
Количество подписчиков : 522
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/392611
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-06-29 00:49:51 (#392611)