Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Добавить запись в Листбокс


Автор: max-@ 18.1.2005, 16:01
Я делаю так, этот метод не катит.........может я где-нибудь ошибся!?...............

Код

hListBox = CreateWindow(szWindowClass, szTitle, WS_CHILD | LBS_STANDARD, 0, 0, Width, Height, hWnd, NULL, hInstance, NULL);
ShowWindow(hListBox, SW_SHOW);
.........................................................................................................
SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)"Hardware");

Автор: NiJazz 18.1.2005, 17:29
max-@
А чем MFC не устравивает?
Код

CListBox*  lb = (CListBox*)GetDlgItem(IDC_LIST2);
lb->AddString("Hardware");


Автор: max-@ 18.1.2005, 20:32
Это конечно хорошо, но мне надо на WinApi

Автор: Fixin 18.1.2005, 23:11
А что именно не работает? На первый взгляд подозрительно вот тут:
Код
hListBox = CreateWindow(szWindowClass, szTitle,

В смысле что в здесь szWindowClass должно быть "listbox". С заголовком сам разберайся.
и еще вместо ShowWindow(hListBox, SW_SHOW); можно указать стиль WS_VISIBLE.

Автор: S.A.P. 18.1.2005, 23:26
Попробуй так.
Код

hListBox = CreateWindow("LISTBOX", NULL,
            LBS_OWNERDRAWFIXED | LBS_WANTKEYBOARDINPUT |
               WS_VSCROLL,
            0, 0, Width, Height,
            hwndParent, NULL, _hInstance, NULL);
. . . . .
SendMessage(hListBox, LB_ADDSTRING, NULL, lParam);


в lParam указатель на строку.


Автор: max-@ 19.1.2005, 00:57
Perchilla товой пример тоже не прет............


Fixin не работает само добавление в ListBox..........
Код

char *szWindowClass, *szTitle;
szWindowClass="MAX";
szTitle="max";

Автор: S.A.P. 19.1.2005, 01:17
Цитата(max @ 19.1.2005, 00:57)
Perchilla товой пример тоже не прет............
я не проверял. На что хоть ругается и как ты его вставляешь в проект? Работать вроде должно.

Автор: max-@ 19.1.2005, 01:22
Код

hInst = hInstance;
Left = GetSystemMetrics(SM_CXSCREEN)-Width;
Top = GetSystemMetrics(SM_CYSCREEN)-Height;
Left/=2; Top/=2;
hWnd = CreateWindow(szWindowClass, szTitle, WS_POPUP | WS_EX_TOPMOST, Left, Top, Width, Height, NULL, NULL, hInstance, NULL);
//hListBox = CreateWindow(szWindowClass, "listbox", WS_CHILD | WS_VISIBLE | LBS_STANDARD, 0, 0, Width, Height, hWnd, NULL, hInstance, NULL);
hListBox = CreateWindow("listbox", NULL, WS_CHILD | LBS_HASSTRINGS | WS_BORDER | LBS_OWNERDRAWFIXED | LBS_WANTKEYBOARDINPUT | WS_VSCROLL | WS_VISIBLE |, 0, 0, Width, Height, hWnd, NULL, hInstance, NULL);
if(!hWnd)return FALSE;
ShowWindow(hWnd, SW_HIDE);
SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)"LISTBOX");

Автор: bel_nikita 19.1.2005, 01:37
Печатает в любом листбоксе, только Id нужный указать
Код

/************************************************************************/
/* FUNCTION    : CTest                                                  */
/* OBJECT      : printf(char *Format,...)                               */
/* PURPOSE     : print                                                  */
/* PARAMETERS  : none                                                   */
/* RETURN VALUE: none                                                   */
/* COMMENT     : none                                                   */
/************************************************************************/
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));
}

/************************************************************************/
/* FUNCTION    : CTest                                                  */
/* OBJECT      : _print(char *Str,int Len)                              */
/* PURPOSE     : print                                                  */
/* PARAMETERS  : none                                                   */
/* RETURN VALUE: none                                                   */
/* COMMENT     : none                                                   */
/************************************************************************/
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,"Loading image...");
Printf(IDC_LIST2,"Testing LIST 2");

Автор: max-@ 19.1.2005, 17:18
Всем огромное спасибо, все получилось.........ошибка: Первый параметор в CreateWindow "LISTBOX"

Автор: sOckets 4.9.2006, 21:06
Блин вот нашумели... =\
Код

hListBox = CreateWindow("Listbox", NULL, WS_CHILD | LBS_STANDARD, 0, 0, Width, Height, hWnd, NULL, hInstance, NULL);
ShowWindow(hListBox, SW_SHOW);
.........................................................................................................
SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)"Hardware");

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