Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Как такое сделать-имя,размер,дата...


Автор: PuLN 24.8.2006, 20:48
user posted image
как такое сделать в VC6.0?
очень надо.. smile 

Автор: Romikgy 24.8.2006, 21:00
по слову header поищи

Автор: PuLN 24.8.2006, 21:13
ты хочешь сказать,что это именно прописывается?
то есть рисование тут ни при чем?

Автор: Antropoid 24.8.2006, 22:43
Что значит "такое сделать?" Ты имеешь ввиду таблицу? тогда CListCtrl - лучшее решение...Ты имеешь ввиду информацию о файле?тогда CFile - лучшее решение...

Автор: PuLN 25.8.2006, 13:06
я имею ввиду таблицу с кнопочками на заголовках+окошко под ней(для дерева файлов)
а этого нет в Controls? 

Автор: Romikgy 25.8.2006, 13:36
Код

// DoCreateHeader - creates a header control that is positioned along  
//     the top of the parent window's client area. 
// Returns the handle of the header control. 
// hwndParent - handle of the parent window 
// 
// Global variable 
//    g_hinst - handle of the application instance 
extern HINSTANCE g_hinst; 
 
HWND DoCreateHeader(HWND hwndParent) 
{ 
        HWND hwndHeader; 
        RECT rcParent; 
        HD_LAYOUT hdl; 
        WINDOWPOS wp; 
 
        // Ensure that the common control DLL is loaded, and then create 

        // the header control. 
        InitCommonControls(); 
 
        if ((hwndHeader = CreateWindowEx(0, WC_HEADER, (LPCTSTR) NULL, 
                WS_CHILD | WS_BORDER | HDS_BUTTONS | HDS_HORZ, 
                0, 0, 0, 0, hwndParent, (HMENU) ID_HEADER, g_hinst, 
                (LPVOID) NULL)) == NULL) 
            return (HWND) NULL; 
 
        // Retrieve the bounding rectangle of the parent window's 
        // client area, and then request size and position values 

        // from the header control. 
        GetClientRect(hwndParent, &rcParent); 
 
        hdl.prc = &rcParent; 
        hdl.pwpos = ℘ 
        if (!SendMessage(hwndHeader, HDM_LAYOUT, 0, (LPARAM) &hdl)) 
            return (HWND) NULL; 
 
        // Set the size, position, and visibility of the header control. 
        SetWindowPos(hwndHeader, wp.hwndInsertAfter, wp.x, wp.y, 
            wp.cx, wp.cy, wp.flags | SWP_SHOWWINDOW); 
 
        return hwndHeader; 

} 
 

Код

You can create a header control by using the CreateWindowEx function, 
specifying the WC_HEADER window class. This window class is registered 
when the common control dynamic-link library (DLL) is loaded. To ensure that 
this DLL is loaded, use the InitCommonControls function. After you create a header 
control, you can divide it into parts, set the text in each part, and control the 
appearance of the window by using header window messages.

Автор: Kelliout 25.8.2006, 15:56
это что?
что в результате будет?
так,я там немножко выше кое что спросил....код генерит таблицу или же все таки 
ее можно вставить из Controls??

Автор: PuLN 25.8.2006, 15:58
пардон,вопрос относится ко мне,за своего брата зашел...

Автор: Antropoid 25.8.2006, 18:36
Можно и из Конторолса и из кода. Раз тебе нужно из контролса, то ---> CListCtrl(View - Report).

Автор: PuLN 25.8.2006, 18:42
да..до этого я уже докопался..
теперь бьюсь над тем чтобы поместить название в шапку и разделитель... smile 

Автор: Antropoid 25.8.2006, 18:48
А из контрола этого не сделать...дальше создаешь переменную, ассоциированную с твоим СЛистКтрл и...
Код

int n=0;
m_myLC->InsertColumn( n++, "Имя" , LVCFMT_LEFT,  150);
m_myLC->InsertColumn( n++, "Тип" , LVCFMT_LEFT,  50);
m_myLC->InsertColumn( n++, "Размер" , LVCFMT_LEFT,  210);


    

Автор: PuLN 25.8.2006, 19:12
переменная и есть m_myLC?

Автор: Antropoid 25.8.2006, 19:40
Да

Автор: PuLN 25.8.2006, 20:15
есть новости:
-делаю так проект FTPUpdate MFC(ехе)->dialog; 
-добавляю из Controls(перетаскиванием) List Control;
-в классе FTPUpdate добавляю protected мембер mylistCtrl;
-в FTPUpdate.h  делаю ее static;
-в FTPUpdate.cpp объявляю  CListCtrl CFTPUpdateDlg::mylistCtrl;
-в методе OnInitDialog пишу mylistCtrl.InsertColumn(0,"Name",LVCFMT_LEFT,120);

ииии F7...
шлеп а там:
user posted image

что прикажете делать? smile 

Автор: Antropoid 25.8.2006, 20:33
Цитата(PuLN @  25.8.2006,  20:15 Найти цитируемый пост)
-в классе FTPUpdate добавляю protected мембер mylistCtrl;

а ничего вручную добавлять не надо. Добавление переменой отдай в распоряжение ClassWizard...

Автор: PuLN 25.8.2006, 20:37
ты хочешь сказать,что после прописки,в классе все само добавится?

Автор: Antropoid 25.8.2006, 20:43
Само собой добавится - только не ошибись, когда будешь указывать к какому классу тебе ее прикреплять

Автор: PuLN 25.8.2006, 21:22
все прописал...тоже самое... smile  smile 

Автор: Antropoid 25.8.2006, 23:21
А то, что сам прописывал убрал?

Автор: PuLN 26.8.2006, 13:13
вобщем смотри..
Код

CListCtrl CFtpUpdateDlg::myListCtrl;
class CAboutDlg : public CDialog
{
public:
    CAboutDlg();

// Dialog Data
    //{{AFX_DATA(CAboutDlg)
    enum { IDD = IDD_ABOUTBOX };
    //}}AFX_DATA

    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CAboutDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    //}}AFX_VIRTUAL

// Implementation
protected:
    //{{AFX_MSG(CAboutDlg)
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
    //{{AFX_DATA_INIT(CAboutDlg)
    //}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CAboutDlg)
    //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    //{{AFX_MSG_MAP(CAboutDlg)
        // No message handlers
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFtpUpdateDlg dialog

CFtpUpdateDlg::CFtpUpdateDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CFtpUpdateDlg::IDD, pParent)
{
    //{{AFX_DATA_INIT(CFtpUpdateDlg)
        // NOTE: the ClassWizard will add member initialization here
    //}}AFX_DATA_INIT
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CFtpUpdateDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CFtpUpdateDlg)
        // NOTE: the ClassWizard will add DDX and DDV calls here
    //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CFtpUpdateDlg, CDialog)
    //{{AFX_MSG_MAP(CFtpUpdateDlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFtpUpdateDlg message handlers

BOOL CFtpUpdateDlg::OnInitDialog()
{
    
    CDialog::OnInitDialog();

    // Add "About..." menu item to system menu.
    myListCtrl.InsertColumn(0,"Name",LVCFMT_LEFT,60);

    // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        CString strAboutMenu;
        strAboutMenu.LoadString(IDS_ABOUTBOX);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);            // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon
    
    // TODO: Add extra initialization here
    return CDialog::OnInitDialog();
    return TRUE;  // return TRUE  unless you set the focus to a control
}


и в недер файле вот это

protected:
static    CListCtrl myListCtrl;

Автор: PuLN 26.8.2006, 17:57
 smile  smile  smile 
как же я хочу,чтоб работало... smile 

Автор: Romikgy 26.8.2006, 19:00
PuLN, первая же ссылка в поисковике
http://www.codeguru.com/cpp/controls/listview/headercontrol/article.php/c1071/

Добавлено @ 19:07 
http://forum.vingrad.ru/index.php?act=Search&CODE=show&searchid=f6779642c2408cf9e616b2db1fb13ce4&search_in=posts&result_type=topics&flag=search&debug=&highlite=header+and+listview&skipped=
короче поищи в любом поисковике по словам
header listview

Автор: PuLN 26.8.2006, 21:10
Romikgy, спасибо тебе за наставления,ушел работать! smile 

Автор: Antropoid 26.8.2006, 21:27
Че это за 
Код

protected:
static    CListCtrl myListCtrl;

? Ну пусть ты в Мастере прописал protected-модификатор(хотя не знаю на кой?), но static, - явно твоих рук дело...Сразу видно, что ниче у тебя не добавлено Мастером...У меня VS .NET 2003 и делает мастер такое
Код

void CFtpUpdateDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
[B]DDX_Control(pDX, IDC_LIST1, myListCtrl);[/B]
}

т.к. у тебя VC++ 6.0, то код будет выглядеть немного иначе, но сама суть - у тебя в файле нет никакой информации о том, что ты создал свой контрол, со своим ID и прилепил его к переменной myListCtrl

Автор: PuLN 27.8.2006, 13:01
все с этой проблемкой разобрался!
все Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)