⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fastlist.cpp

📁 C语言编写的反汇编工具
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#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;//预留出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)//单击标题栏
				{
				}
				else if(nIndexRow==-1)//单击空区域
				{
				}
				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;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -