Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как выводить (добавлять) текст в любой ListBox Вашей программы


Автор: bel_nikita 1.6.2005, 00:04
 Этот код выводит (добавляет) текст в любой ListBox Вашей программы. Пояснять функции Printf и Print думаю не имеет смыслаsmile На вход функций подается ID ListBox и текст:
Код

void Print(UINT nID, char *Str,int Len);
void Printf(UINT nID, const char *Format,...);

void Printf(UINT nID, const char *Format,...)
{
    char Str[500];
    va_list arg;
    va_start(arg,Format);
    wvsprintf(Str,Format,arg);
    va_end(arg);
    Print(nID,Str,strlen(Str));
}

void Print(UINT nID, char *Str,int Len)
{
    char *PtrB,*PtrE;

    {
        //Parse Str for Search Control Symbols
        PtrB=PtrE=Str;
        while(*PtrE)
        {
            if(((*PtrE) == 0x0A) || ((*PtrE) == 0x0D))
            {
                *PtrE=0;
                if(SendDlgItemMessage(nID,LB_ADDSTRING,0,(LPARAM)PtrB) == LB_ERRSPACE)
                {
                    SendDlgItemMessage(nID,LB_DELETESTRING,0,0);
                    SendDlgItemMessage(nID,LB_ADDSTRING,0,(LPARAM)PtrB);
                }
                PtrE++;
                if(((*PtrE) == 0x0A) || ((*PtrE) == 0x0D)) PtrE++;
                PtrB=PtrE;
            }
            else PtrE++;
        }

        if(*PtrB)
        {
            if(SendDlgItemMessage(nID,LB_ADDSTRING,0,(LPARAM)PtrB) == LB_ERRSPACE)
            {
                SendDlgItemMessage(nID,LB_DELETESTRING,0,0);
                SendDlgItemMessage(nID,LB_ADDSTRING,0,(LPARAM)PtrB);
            }
        }
    }
    SendDlgItemMessage(nID,LB_SETTOPINDEX,SendDlgItemMessage(nID,LB_GETCOUNT,0,0)-1,0);
}

Пишем в листбокс:
Код

 Printf(IDC_LIST1, "Hello world..."); // IDC_LIST1 - ID листбокса №1
 Printf(IDC_LIST2, "Hello world..."); // IDC_LIST2 - ID листбокса №2
 

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