Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 202 203 204 [ 205 ] 206 207 208 ... 210


m bCreated=FALSE;

Теперь мы можем использовать ProgressBar в строке статуса, естественно не забыв создать этот объект. Предположим, у нас есть функция CMainFrame::OnWork(). Она будет выглядеть примерно так:

void CMainFrame::OnWork() {

RECT rc;

m wndStatusBar.GetItemRect(0,&rc); if (m bCreated==FALSE)

создаем m progress

m progress.Create(WS VISIBLEWS CHILD, rc,&m wndStatusBar,

Устанавливаем размер от 0 до 100 m progress.SetRange(0,100); m progress.SetStep(1); m bCreated=TRUE;

for (int I = 0; I < 100;

Sleep(20);

m progress.StepIt();

Если откомпилировать проект на этой фазе, то все будет работать, но при изменении размера окна линейка ProgressBarа размеры менять не будет, поэтому необходимо перекрыть событие OnSize:

void CMainFrame::OnSize(UINT nType, int cx, int cy)

CFrameWnd::OnSize(nType, cx, cy); if (m bCreated)

RECT rc;

m wndStatusBar.GetItemRect(0,&rc); m progress.SetWindowPos(&wndTop, rc.left, rc.top,



rc.right - rc.left,rc.bottom - rc.top, 0);

Вот теперь все. Откомпилируйте проект и убедитесь, что все работает.

Как использовать CTreeCtrl для построения дерева каталогов диска, как в Проводнике? Неужели необходимо рекурсивно просмотреть диск, а потом прописать ручками все Итемы данного контрола??

Это тормозно и глючно. На больших дисках это займет

несколько минут. Если каталоги добавляются или удаляются

другими приложениями во время работы твоего контрола, то

будешь весь в проблемах. Все гораздо проще. Никаких рекурсий.

Просматриваем корневой каталог на предмет наличия подкаталогов и создаем итемы первого уровня, в которых создаем по одному фиктивному итему (чтобы крестик был и итем можно было раскрыть).

+ Каталог 1 + Каталог 2 + Каталог 3

Как только юзер пытается раскрыть итем, соответствующий некому каталогу, мы удаляем из него фиктивный итем, просматриваем этот подкаталог и добавляем соответствующие итемы со своими фиктивными внутри.

-Каталог 1

+ Каталог 4

+ Каталог 5

+ Каталог 6 + Каталог 2 + Каталог 3

Как только юзер закрывает итем, мы удаляем из него все дочерние итемы и обратно добавляем фиктивный. Если структура каталогов изменилась, для обновления юзеру достаточно просто закрыть и открыть соответствующую ветку.

Именно так и работает Проводник .

Есть класс - потомок CListView. Как изменить стиль у объекта CListCtrl, принадлежащего к этому *view (например установить стиль Report)?

Для этого пишите в OnInitialUpdate вашего вида:

void CMyListView::OnInitialUpdate()



CListView::OnInitialUpdate();

CListCtrl& theCtrl = GetListCtrl();

DWORD dwStyle=GetWindowLong(theCtrl.m hWnd,GWL STYLE);

SetWindowLong(theCtrl.m hWnd,GWL STYLE,dwStyleLVS REPORT);

Гораздо проще перекрыть PreCreateWindow (лучше всего воспользоваться C1assWizard-ом) и поковырять переданный по сс1лке CREATESTRUCT типа такого:

BOOL CMyListView::PreCreateWindow(CREATESTRUCT& cs)

cs.style=LVS REPORT; так мы добавляем стиль cs.style&=LVS REPORT; а вот так снимаем

return CMyListView::PreCreateWindow(cs);

Как CString привести к char *?

#include <atlbase.h> USES CONVERSION; CString strData( T( Some Data ));

char* lpszString = T2A((LPTSTR)(LPCTSTR)strData);

CString tmp str; char* st;

st=tmp str.GetBuffer(tmp str.GetLength()) важно то, что если с tmp str что-либо сделать, то необходимо опять получить указатель на внутренний буфер CString.

Какие библиотеки Freeware/Commercial существуют для Visual C++?

1. BCG Contro1 Library (freeware)

2. CJLibrary (freeware)

Фирма Stringray Software производит библиотеки дя Visua1 C++ (MFC, ATL):

1. Stingray Objective Too1kit (PRO) - набор различных компонентов для MFC и ATL.



1 ... 202 203 204 [ 205 ] 206 207 208 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика