?? fastlist.cpp
字號(hào):
#include "fastlist.h"
/*void initFastListControl( HINSTANCE hInstance,HWND hWnd )
{
WNDCLASSEX wc;
wc.cbSize = sizeof( WNDCLASSEX );
wc.style = 0;
wc.lpfnWndProc = flWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 4;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)( COLOR_WINDOW+2);
wc.lpszMenuName = 0;
wc.lpszClassName = "FastList";
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wc);
RECT stRect;
GetClientRect(hWnd,&stRect);
HWND hWndChild = CreateWindowEx(NULL,"FastList","szFastList",WS_CHILD|WS_VISIBLE,stRect.left,stRect.top,stRect.right,stRect.bottom,hWnd,NULL,hInstance,NULL);
ShowWindow(hWndChild,SW_SHOWNORMAL);
UpdateWindow(hWndChild);
}*/
void initFastListControl(FLDATA &flData)
{
if(!flData.hInstance)
{
MessageBox(NULL,"lost hInstance!","Error",MB_OK);
}
if(!flData.hwnd)
{
MessageBox(NULL,"lost hwnd!","Error",MB_OK);
}
flData.dwNumberOfCol=0;
flData.dwNumberOfRow=0;
flData.flTheFirstRow = NULL;
flData.flTheFirstRowOfThePage = NULL;
flData.flTheLastRow = NULL;
flData.MouseDrag = false;
flData.flScrollbar.width = 20;
WNDCLASSEX wcBuf,wc;
wcBuf.cbSize = sizeof( WNDCLASSEX );
wcBuf.style = 0;
wcBuf.lpfnWndProc = flWndProcBuf;
wcBuf.cbClsExtra = 0;
wcBuf.cbWndExtra = 4;
wcBuf.hInstance = flData.hInstance;
wcBuf.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcBuf.hCursor = LoadCursor(NULL, IDC_ARROW);
wcBuf.hbrBackground = (HBRUSH)( COLOR_WINDOW);
wcBuf.lpszMenuName = 0;
wcBuf.lpszClassName = "FastListBuf";
wcBuf.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wcBuf);
GetClientRect(flData.hwnd,&flData.rtBuf);
flData.hwndBuf = CreateWindowEx(NULL,"FastListBuf","szFastListBuf",WS_CHILD|WS_VISIBLE,flData.rtBuf.left,flData.rtBuf.top,flData.rtBuf.right,flData.rtBuf.bottom,flData.hwnd,NULL,flData.hInstance,NULL);
flData.hdcBuf = GetDC(flData.hwndBuf);
wc.cbSize = sizeof( WNDCLASSEX );
wc.style = 0;
wc.lpfnWndProc = flWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 4;
wc.hInstance = flData.hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)( COLOR_WINDOW);
wc.lpszMenuName = 0;
wc.lpszClassName = "FastList";
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wc);
GetClientRect(flData.hwnd,&flData.rtClient);
flData.rtClient.right-=flData.flScrollbar.width;//預(yù)留出scrollbar的空間
flData.hwndClient = CreateWindowEx(NULL,"FastList","szFastList",WS_CHILD|WS_VISIBLE,flData.rtClient.left,flData.rtClient.top,flData.rtClient.right,flData.rtClient.bottom,flData.hwnd,NULL,flData.hInstance,NULL);
flData.hdcClient = GetDC(flData.hwndClient);
SetWindowLong(flData.hwndClient,0,(long)(&flData));
SetWindowLong(flData.hwndBuf,0,(long)(&flData));
//ShowWindow(flData.hwndClient,SW_SHOWNORMAL);
//ShowWindow(flData.hwndBuf,SW_SHOWNORMAL);
//ShowWindow(flData.hwndClient,SW_SHOWNORMAL);
//BringWindowToTop(flData.hwndClient);
//UpdateWindow(flData.hwndClient);
//UpdateWindow(flData.hwndBuf);
flData.flScrollbar.hwndscrollbar = CreateWindow("SCROLLBAR","scrollbar",WS_CHILD |WS_VISIBLE|SBS_VERT,flData.rtBuf.right-20,0,20,flData.rtBuf.bottom,flData.hwndBuf,NULL,flData.hInstance,NULL);
flData.flScrollbar.height = flData.rtBuf.bottom;
flData.Selected = NULL;
}
LRESULT CALLBACK flWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
{
//long style = GetWindowLong( hwnd, GWL_STYLE );
//SetWindowLong( hwnd, GWL_STYLE, style | WS_VSCROLL | WS_HSCROLL );
return 0;
}
break;
case WM_PAINT:
{
FLDATA *lpfldata = (FLDATA *)GetWindowLong(hwnd,0);
flDrawFastList((*lpfldata));
ValidateRect(lpfldata->hwndClient,&lpfldata->rtClient);
return 0;
}
break;
case WM_MOUSEMOVE:
{
FLDATA *lpfldata = (FLDATA *)GetWindowLong(hwnd,0);
int nIndexCol = flCheckClickBorder((*lpfldata),LOWORD(lParam));
if(nIndexCol>=0)
{
SetCursor( LoadCursor( 0, IDC_SIZEWE ) );
}
if(lpfldata->MouseDrag)
{
int nXpos = LOWORD(lParam);
nXpos -= lpfldata->flHeader.rect[lpfldata->dwMouseDragCol].left;
flSetWidthOfCol((*lpfldata),lpfldata->dwMouseDragCol,nXpos);
flRedrawFastList((*lpfldata));
}
return 0;
}
break;
case WM_LBUTTONDOWN:
{
FLDATA *lpfldata = (FLDATA *)GetWindowLong(hwnd,0);
int nIndexCol = flCheckClickBorder((*lpfldata),LOWORD(lParam));
if(nIndexCol>=0)
{
lpfldata->MouseDrag = true;
lpfldata->dwMouseDragCol = nIndexCol;
SetCursor( LoadCursor( 0, IDC_SIZEWE ) );
}
else
{
int nYpos = HIWORD(lParam);
int nIndexRow;
FLROW *pRow = flCheckClickRow((*lpfldata),nIndexRow,nYpos);
//MessageBox(NULL,"123","456",MB_OK);
if(nIndexRow==0)//單擊標(biāo)題欄
{
}
else if(nIndexRow==-1)//單擊空區(qū)域
{
}
else//單擊某行
{
if(lpfldata->Selected != NULL)
{
for(DWORD i=0;i<lpfldata->dwNumberOfCol;i++)
{
lpfldata->Selected->cols[i].dwBackColor = lpfldata->dwBackColor;
lpfldata->Selected->cols[i].dwFrontColor = RGB(0,0,0);
}
}
for(DWORD i=0;i<lpfldata->dwNumberOfCol;i++)
{
//if(pRow==NULL)return 0;
pRow->cols[i].dwBackColor = RGB(73,199,205);
pRow->cols[i].dwFrontColor = RGB(0,0,0);
}
lpfldata->Selected = pRow;
flRedrawFastList((*lpfldata));
}
}
}
break;
case WM_LBUTTONUP:
{
FLDATA *lpfldata = (FLDATA *)GetWindowLong(hwnd,0);
lpfldata->MouseDrag = false;
}
break;
case WM_VSCROLL:
{
int nScrollCode = LOWORD(wParam);
int nPos = HIWORD(wParam);
FLDATA *lpfldata = (FLDATA *)GetWindowLong(hwnd,0);
switch(nScrollCode)
{
case SB_THUMBPOSITION:
{
SetScrollPos(lpfldata->flScrollbar.hwndscrollbar,SB_CTL,nPos,true);
flSetNewView((*lpfldata),nPos);
flRedrawFastList((*lpfldata));
return 0;
}
break;
case SB_THUMBTRACK:
{
SetScrollPos(lpfldata->flScrollbar.hwndscrollbar,SB_CTL,nPos,true);
flSetNewView((*lpfldata),nPos);
flRedrawFastList((*lpfldata));
}
break;
case SB_PAGEDOWN:
{
return 0;
}
break;
case SB_PAGEUP:
{
return 0;
}
break;
case SB_LINEDOWN:
{
int nOldPos = GetScrollPos(lpfldata->flScrollbar.hwndscrollbar,SB_CTL);
if(nOldPos<(int)lpfldata->dwNumberOfRow)nOldPos+=1;
SetScrollPos(lpfldata->flScrollbar.hwndscrollbar,SB_CTL,nOldPos,true);
flSetNewView((*lpfldata),nOldPos);
flRedrawFastList((*lpfldata));
return 0;
}
break;
case SB_LINEUP:
{
int nOldPos = GetScrollPos(lpfldata->flScrollbar.hwndscrollbar,SB_CTL);
if(nOldPos>1)nOldPos-=1;
SetScrollPos(lpfldata->flScrollbar.hwndscrollbar,SB_CTL,nOldPos,true);
flSetNewView((*lpfldata),nOldPos);
flRedrawFastList((*lpfldata));
return 0;
}
break;
}
return 0;
}
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
LRESULT CALLBACK flWndProcBuf(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
{
//long style = GetWindowLong( hwnd, GWL_STYLE );
//SetWindowLong( hwnd, GWL_STYLE, style | WS_VSCROLL | WS_HSCROLL );
return 0;
}
break;
case WM_MOUSEMOVE:
{
FLDATA *lpfldata = (FLDATA *)flGetFlPointer(hwnd);
SendMessage(lpfldata->hwndClient,msg,wParam,lParam);
return 0;
}
break;
case WM_LBUTTONDOWN:
{
FLDATA *lpfldata = (FLDATA *)flGetFlPointer(hwnd);
SendMessage(lpfldata->hwndClient,msg,wParam,lParam);
return 0;
}
break;
case WM_LBUTTONUP:
{
FLDATA *lpfldata = (FLDATA *)flGetFlPointer(hwnd);
SendMessage(lpfldata->hwndClient,msg,wParam,lParam);
return 0;
}
break;
case WM_VSCROLL:
{
FLDATA *lpfldata = (FLDATA *)flGetFlPointer(hwnd);
SendMessage(lpfldata->hwndClient,msg,wParam,lParam);
//FLDATA *lpfldata = (FLDATA *)flGetFlPointer(hwnd);
/*
SCROLLINFO si;
si.cbSize = sizeof(si);
si.nPage = 1;
si.nMax = lpfldata->dwNumberOfRow;
si.nMin = 1;
switch(LOWORD(wParam))
{
case SB_THUMBTRACK:
{
si.nPos = si.nTrackPos;
}
break;
}
si.fMask = SIF_POS;
SetScrollInfo (lpfldata->flScrollbar.hwndscrollbar, SB_CTL, &si, TRUE);*/
return 0;
}
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -