TreeView 'e alt gruplar nasıl eklenir? Mesela aşağıdaki örnekte listboxun içindekileri nasıl ağaç görünümüne kavuştururum?
Yardım edenlere şimdiden teşekkür
Kod:
#include <windows.h>
#include <Tlhelp32.h>
#include <commctrl.h>
LRESULT CALLBACK PencereProseduru (HWND, UINT, WPARAM, LPARAM);
char YapiSinifAdi[ ] = "WindowsUygulamasi";
HWND Dugme1Tutmaci, Durgun1Tutmaci, LKutu1Tutmaci, Agac1Tutmaci;
HIMAGELIST ResimListesiTutmaci;
TV_ITEM AGNesnesi;
TV_INSERTSTRUCT AGYapisi;
int WINAPI WinMain (HINSTANCE AnaFonksiyonTutmaci, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{
HWND AnaPencereTutmaci;
MSG Mesajlar;
WNDCLASSEX PencereYapisi;
PencereYapisi.hInstance = AnaFonksiyonTutmaci;
PencereYapisi.lpszClassName = YapiSinifAdi;
PencereYapisi.lpfnWndProc = PencereProseduru;
PencereYapisi.style = CS_DBLCLKS;
PencereYapisi.cbSize = sizeof (WNDCLASSEX);
PencereYapisi.hIcon = LoadIcon (NULL, IDI_APPLICATION);
PencereYapisi.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
PencereYapisi.hCursor = LoadCursor (NULL, IDC_ARROW);
PencereYapisi.lpszMenuName = NULL;
PencereYapisi.cbClsExtra = 0;
PencereYapisi.cbWndExtra = 0;
PencereYapisi.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
if (!RegisterClassEx (&PencereYapisi))
return 0;
AnaPencereTutmaci = CreateWindowEx (
0,
YapiSinifAdi,
"Motor",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
800,
600,
HWND_DESKTOP,
NULL,
AnaFonksiyonTutmaci,
NULL
);
ShowWindow (AnaPencereTutmaci, nFunsterStil);
Dugme1Tutmaci = CreateWindowEx (
0,
"button",
"Çalıştır",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
2,
2,
170,
30,
AnaPencereTutmaci,
(HMENU)1,
AnaFonksiyonTutmaci,
NULL
);
Durgun1Tutmaci = CreateWindowEx (
0,
"static",
"Başlatmak için yukarıdaki düğmeye basınız",
WS_CHILD | WS_VISIBLE | WS_BORDER | SS_LEFT,
2,
35,
170,
35,
AnaPencereTutmaci,
(HMENU)2,
AnaFonksiyonTutmaci,
NULL
);
LKutu1Tutmaci = CreateWindowEx (
0,
"listbox",
"",
WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_MULTICOLUMN | LBS_SORT,
174,
2,
150,
300,
AnaPencereTutmaci,
(HMENU)3,
AnaFonksiyonTutmaci,
NULL
);
Agac1Tutmaci = CreateWindowEx (
0,
WC_TREEVIEW,
"Ağaç Görünümü",
WS_VISIBLE | WS_CHILD | WS_BORDER | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS,
400,
2,
150,
300,
AnaPencereTutmaci,
(HMENU)4,
AnaFonksiyonTutmaci,
NULL
);
AGNesnesi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
AGNesnesi.pszText = "Node da görünen Yazi";
AGNesnesi.iImage = 0;
AGNesnesi.iSelectedImage = 1;
AGYapisi.hParent = NULL;
AGYapisi.hInsertAfter = TVI_ROOT;
AGYapisi.item = AGNesnesi;
TreeView_InsertItem(Agac1Tutmaci, &AGYapisi);
TreeView_InsertItem (Agac1Tutmaci, &AGYapisi);
while (GetMessage (&Mesajlar, NULL, 0, 0))
{
TranslateMessage(&Mesajlar);
DispatchMessage(&Mesajlar);
}
return Mesajlar.wParam;
}
LRESULT CALLBACK PencereProseduru (HWND AnaPencereTutmaci, UINT message, WPARAM wParam, LPARAM lParam)
{
char Dugme1Ismi[256];
BOOL DuzMantik1;
PROCESSENTRY32 IslenenBilgisi = {sizeof (PROCESSENTRY32)};
HANDLE SipSakTutmaci;
TCHAR Saklayici[1024];
switch (message)
{ case WM_COMMAND:
if(LOWORD(wParam) == 1 && HIWORD(wParam) == BN_CLICKED)
{
GetWindowText(Dugme1Tutmaci, Dugme1Ismi, sizeof(Dugme1Ismi));
if (strcmp(Dugme1Ismi, "Durdur")== 0)
{ SetWindowText (Durgun1Tutmaci, "Başlamak için yukarıdaki düğmeye basınız");
SetWindowText (Dugme1Tutmaci,"Çalıştır");
SendMessage(LKutu1Tutmaci, LB_RESETCONTENT, 0, 0);
break;
}
else
{ SetWindowText (Durgun1Tutmaci,"Durmak için yukarıdaki düğmeye basınız");
SetWindowText (Dugme1Tutmaci, "Durdur");
SipSakTutmaci = CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
DuzMantik1 = Process32First (SipSakTutmaci, &IslenenBilgisi);
while (DuzMantik1)
{
wsprintf(Saklayici,"%s, %d, %d",IslenenBilgisi.szExeFile, IslenenBilgisi.cntThreads, IslenenBilgisi.th32ProcessID);(Saklayici,"%s, Thread = %d", IslenenBilgisi.szExeFile, IslenenBilgisi.cntThreads);
SendMessage (LKutu1Tutmaci, LB_ADDSTRING,0,(LPARAM)Saklayici);
DuzMantik1 = Process32Next (SipSakTutmaci, &IslenenBilgisi);
}
CloseHandle(SipSakTutmaci);
break;
}
}
break;
case WM_DESTROY:
PostQuitMessage (0);
break;
default:
return DefWindowProc (AnaPencereTutmaci, message, wParam, lParam);
}
return 0;
}
Yardım edenlere şimdiden teşekkür