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

📄 winhead.c

📁 C#一个实例源代码
💻 C
字号:
#include <windows.h>

#define ID_LIST 1
#define ID_TEXT 2
#define DIRATTR (DDL_READWRITE|DDL_READONLY|DDL_DRIVES|DDL_DIRECTORY|DDL_ARCHIVE|DDL_HIDDEN)
#define MAXREAD 8192
#define DTFLAGS (DT_WORDBREAK|DT_EXPANDTABS|DT_NOCLIP|DT_NOPREFIX)


LRESULT CALLBACK WndProc(HWND ,UINT ,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdline,int iCmdShow)
{
	static TCHAR       szAppName[]=TEXT("WinHead");
	HWND               hwnd;
	MSG                msg;
	WNDCLASS           wndclass;

	wndclass.style         =CS_HREDRAW|CS_VREDRAW;
	wndclass.lpfnWndProc   =WndProc;
	wndclass.cbClsExtra    =0;
	wndclass.cbWndExtra    =0;
	wndclass.hInstance     =hInstance;
	wndclass.hIcon         =LoadIcon(NULL,IDI_APPLICATION);
	wndclass.hCursor       =LoadCursor(NULL,IDC_ARROW);
	wndclass.hbrBackground =(HBRUSH)(COLOR_BTNFACE+1);
	wndclass.lpszMenuName  =NULL;
	wndclass.lpszClassName=szAppName;

	if(!RegisterClass(&wndclass))
	{
		MessageBox(NULL,TEXT("This program must run in Windows NT!"),szAppName,MB_ICONERROR);
		return 0;
	}

	hwnd=CreateWindow(
		szAppName,
		szAppName,
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		NULL,
		NULL,
		hInstance,
		NULL);
	ShowWindow(hwnd,iCmdShow);
	UpdateWindow(hwnd);

	while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}



LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	static BOOL    bValidFile;
	HDC            hdc;
	static HWND    hwndList,hwndText;
	static int     cxChar,cyChar;
	static int     cxClient,cyClient;
	int            i;
	static TCHAR   *pVarName,*pVarValue,buffer[MAXREAD];
	TCHAR          szBuffer[MAX_PATH+1];
	static TCHAR          szFile[MAX_PATH+1];
	static RECT    rect;
	PAINTSTRUCT    ps;
	HANDLE         hFile;

	switch (message)
	{
	case WM_CREATE:
		cxChar=LOWORD(GetDialogBaseUnits());
		cyChar=HIWORD(GetDialogBaseUnits());

		rect.left=20*cxChar;
		rect.top=3*cyChar;

		hwndList=CreateWindow(
			TEXT("listbox"),
			NULL,
			WS_CHILD|WS_VISIBLE|LBS_STANDARD,
			cxChar,
			cyChar*3,
			cxChar*13,
			cyChar*10,
			
			hwnd,
			(HMENU)ID_LIST,
			(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),
			NULL);
        GetCurrentDirectory( MAX_PATH+1,szBuffer);                

		hwndText=CreateWindow(
			TEXT("static"),
			szBuffer,
			WS_CHILD|WS_VISIBLE|SS_LEFT,
			cxChar,cyChar,cxChar*MAX_PATH,cyChar,
			hwnd,
			(HMENU)ID_TEXT,
			(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),
			NULL);
		SendMessage(hwndList,LB_DIR,DIRATTR,(LPARAM)TEXT("*.*"));
	
		return 0;

	case WM_SIZE:
		rect.right  =LOWORD(lParam);
		rect.bottom =HIWORD(lParam);
					
		return 0;

	case WM_COMMAND:
		if(LOWORD(wParam)==ID_LIST&&HIWORD(wParam)==LBN_SELCHANGE)
		{
			if(LB_ERR==(i=SendMessage(hwndList,LB_GETCURSEL,0,0)))
				break;
			SendMessage(hwndList,LB_GETTEXT,i,(LPARAM)szBuffer);
            
			if(INVALID_HANDLE_VALUE!=(hFile=CreateFile(szBuffer,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL)))
			{                         
				CloseHandle(hFile);
				bValidFile=1;
				lstrcpy(szFile,szBuffer);
				GetCurrentDirectory(MAX_PATH+1,szBuffer);
				if(szBuffer[lstrlen(szBuffer)-1]!='\\')
					lstrcat(szBuffer,TEXT("\\"));
				SetWindowText(hwndText,lstrcat(szBuffer,szFile));
			}                       
			else
			{
				bValidFile=0;
				szBuffer[lstrlen(szBuffer)-1]='\0';

				if(!SetCurrentDirectory(szBuffer+1))
				{
					szBuffer[3]=':';
					szBuffer[4]='\0';
					SetCurrentDirectory(szBuffer+2);
				}
				GetCurrentDirectory(MAX_PATH,szBuffer);
				SetWindowText(hwndText,szBuffer);
				SendMessage(hwndList,LB_RESETCONTENT,0,0);
				SendMessage(hwndList,LB_DIR,DIRATTR,(LPARAM)TEXT("*.*"));
			}
			InvalidateRect(hwnd,NULL,TRUE);
		}

		return 0;
	case WM_PAINT: 
	    if(!bValidFile)
		
			break;
		
    	if(INVALID_HANDLE_VALUE==(hFile=CreateFile
			(szFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL)))
		{
			bValidFile=FALSE;
			break;
		}

		
		ReadFile(hFile,buffer,MAXREAD,&i,NULL);
		CloseHandle(hFile);
		hdc=BeginPaint(hwnd,&ps);

		SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
		SetTextColor(hdc,GetSysColor(COLOR_BTNTEXT));
		SetBkColor(hdc,GetSysColor(COLOR_BTNFACE));

		DrawTextA(hdc,buffer,i,&rect,DTFLAGS);
		
		EndPaint(hwnd,&ps);

		return 0;
	
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd,message,wParam,lParam);
}

⌨️ 快捷键说明

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