#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPSTR lpszClass="MyListCtrl";
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
if(!hPrevInstance) {
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=(WNDPROC)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
}
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
#include <commctrl.h>
#include "resource.h"
HWND hList;
HIMAGELIST hImgSm, hImgLa;
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
LVCOLUMN COL;
LVITEM LI;
switch(iMessage) {
case WM_CREATE:
InitCommonControls();
// 리스트 컨트롤을 자세히 보기로 만든다.
hList=CreateWindow(WC_LISTVIEW,NULL,WS_CHILD | WS_VISIBLE | WS_BORDER |
LVS_REPORT,10,10,500,200,hWnd,NULL,g_hInst,NULL);
// 크기별로 두 종류의 이미지 리스트를 만들고 리스트 컨트롤에 연결한다.
hImgSm=ImageList_LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BIT16),
16, 1, RGB(255,255,255));
hImgLa=ImageList_LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BIT32),
32, 1, RGB(255,255,255));
SendMessage(hList, LVM_SETIMAGELIST, (WPARAM)LVSIL_SMALL, (LPARAM)hImgSm);
SendMessage(hList, LVM_SETIMAGELIST, (WPARAM)LVSIL_NORMAL, (LPARAM)hImgLa);
// 헤더를 추가한다.
COL.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT |LVCF_SUBITEM;
COL.fmt=LVCFMT_LEFT;
COL.cx=150;
COL.pszText="이름"; // 첫번째 헤더
COL.iSubItem=0;
SendMessage(hList, LVM_INSERTCOLUMN, 0,(LPARAM)&COL);
COL.pszText="전화번호"; // 두번째 헤더
COL.iSubItem=1;
SendMessage(hList, LVM_INSERTCOLUMN, 1,(LPARAM)&COL);
COL.cx=300;
COL.pszText="주소"; // 세번째 헤더
COL.iSubItem=2;
SendMessage(hList, LVM_INSERTCOLUMN, 2,(LPARAM)&COL);
// 텍스트와 이미지를 가진 아이템들을 등록한다.
LI.mask=LVIF_TEXT | LVIF_IMAGE;
LI.state=0;
LI.stateMask=0;
LI.iImage=0;
LI.iSubItem=0;
LI.iItem=0;
LI.pszText="박미영"; // 첫번째 아이템
SendMessage(hList, LVM_INSERTITEM, 0, (LPARAM)&LI);
LI.iImage=-1;
LI.iSubItem=1;
LI.pszText="123-4567";
SendMessage(hList, LVM_SETITEM, 0, (LPARAM)&LI);
LI.iSubItem=2;
LI.pszText="서울시 논현동";
SendMessage(hList, LVM_SETITEM, 0, (LPARAM)&LI);
LI.iImage=0;
LI.iItem=1;
LI.iSubItem=0;
LI.pszText="권진숙"; // 두번째 아이템
SendMessage(hList, LVM_INSERTITEM, 0, (LPARAM)&LI);
LI.iImage=-1;
LI.iSubItem=1;
LI.pszText="543-9876";
SendMessage(hList, LVM_SETITEM, 0, (LPARAM)&LI);
LI.iSubItem=2;
LI.pszText="부산시 대신동";
SendMessage(hList, LVM_SETITEM, 0, (LPARAM)&LI);
LI.iImage=1;
LI.iItem=2;
LI.iSubItem=0;
LI.pszText="허수진"; // 세번째 아이템
SendMessage(hList, LVM_INSERTITEM, 0, (LPARAM)&LI);
LI.iImage=-1;
LI.iSubItem=1;
LI.pszText="101-0920";
SendMessage(hList, LVM_SETITEM, 0, (LPARAM)&LI);
LI.iSubItem=2;
LI.pszText="부산시 장전동";
SendMessage(hList, LVM_SETITEM, 0, (LPARAM)&LI);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPSTR lpszClass="MyListCtrl";
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
if(!hPrevInstance) {
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=(WNDPROC)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
}
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
#include <commctrl.h>
#include "resource.h"
HWND hList;
HIMAGELIST hImgSm, hImgLa;
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
LVCOLUMN COL;
LVITEM LI;
switch(iMessage) {
case WM_CREATE:
InitCommonControls();
// 리스트 컨트롤을 자세히 보기로 만든다.
hList=CreateWindow(WC_LISTVIEW,NULL,WS_CHILD | WS_VISIBLE | WS_BORDER |
LVS_REPORT,10,10,500,200,hWnd,NULL,g_hInst,NULL);
// 크기별로 두 종류의 이미지 리스트를 만들고 리스트 컨트롤에 연결한다.
hImgSm=ImageList_LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BIT16),
16, 1, RGB(255,255,255));
hImgLa=ImageList_LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BIT32),
32, 1, RGB(255,255,255));
SendMessage(hList, LVM_SETIMAGELIST, (WPARAM)LVSIL_SMALL, (LPARAM)hImgSm);
SendMessage(hList, LVM_SETIMAGELIST, (WPARAM)LVSIL_NORMAL, (LPARAM)hImgLa);
// 헤더를 추가한다.
COL.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT |LVCF_SUBITEM;
COL.fmt=LVCFMT_LEFT;
COL.cx=150;
COL.pszText="이름"; // 첫번째 헤더
COL.iSubItem=0;
SendMessage(hList, LVM_INSERTCOLUMN, 0,(LPARAM)&COL);
COL.pszText="전화번호"; // 두번째 헤더
COL.iSubItem=1;
SendMessage(hList, LVM_INSERTCOLUMN, 1,(LPARAM)&COL);
COL.cx=300;
COL.pszText="주소"; // 세번째 헤더
COL.iSubItem=2;
SendMessage(hList, LVM_INSERTCOLUMN, 2,(LPARAM)&COL);
// 텍스트와 이미지를 가진 아이템들을 등록한다.
LI.mask=LVIF_TEXT | LVIF_IMAGE;
LI.state=0;
LI.stateMask=0;
LI.iImage=0;
LI.iSubItem=0;
LI.iItem=0;
LI.pszText="박미영"; // 첫번째 아이템
SendMessage(hList, LVM_INSERTITEM, 0, (LPARAM)&LI);
LI.iImage=-1;
LI.iSubItem=1;
LI.pszText="123-4567";
SendMessage(hList, LVM_SETITEM, 0, (LPARAM)&LI);
LI.iSubItem=2;
LI.pszText="서울시 논현동";
SendMessage(hList, LVM_SETITEM, 0, (LPARAM)&LI);
LI.iImage=0;
LI.iItem=1;
LI.iSubItem=0;
LI.pszText="권진숙"; // 두번째 아이템
SendMessage(hList, LVM_INSERTITEM, 0, (LPARAM)&LI);
LI.iImage=-1;
LI.iSubItem=1;
LI.pszText="543-9876";
SendMessage(hList, LVM_SETITEM, 0, (LPARAM)&LI);
LI.iSubItem=2;
LI.pszText="부산시 대신동";
SendMessage(hList, LVM_SETITEM, 0, (LPARAM)&LI);
LI.iImage=1;
LI.iItem=2;
LI.iSubItem=0;
LI.pszText="허수진"; // 세번째 아이템
SendMessage(hList, LVM_INSERTITEM, 0, (LPARAM)&LI);
LI.iImage=-1;
LI.iSubItem=1;
LI.pszText="101-0920";
SendMessage(hList, LVM_SETITEM, 0, (LPARAM)&LI);
LI.iSubItem=2;
LI.pszText="부산시 장전동";
SendMessage(hList, LVM_SETITEM, 0, (LPARAM)&LI);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
'Windows > Windows API' 카테고리의 다른 글
트리 뷰 (tree view) (0) | 2013.10.01 |
---|---|
리스트뷰 (listview) (0) | 2013.10.01 |
이미지 리스트 (ImageList_Draw) (0) | 2013.10.01 |
드래그 (drag, ImageList_BeginDrag, ClientToScreen, ImageList_DragEnter, ImageList_DragMove, ImageList_DragLeave, ImageList_EndDrag) (0) | 2013.10.01 |
오버레이 이미지 (overlay) (0) | 2013.10.01 |