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

📄 wacmenu.cpp

📁 一个DOS下的菜单
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		m_OldMousePosButton = -1;
	}
	return TRUE;
}

void ProcKeyDown(int wParam)
{
	switch(wParam){
	case 27:
		g_bExit = TRUE;
		break;
	case 13:		// Enter
	case 32:		// Space
		{
			if(g_Window.m_bPushed)
				break;
//			g_Window.SetDefaultButton(g_Window.);
			g_Window.SetCheckButton(g_Window.m_NewDefaultButton);
			g_Window.RedrawButton(g_Window.m_NewDefaultButton);

		}
		break;
	case 9:			// Tab
		{
		int NewDefButton;
		NewDefButton = (g_Window.m_NewDefaultButton+1) % BUTTON_COUNT;
		g_Window.SetDefaultButton(NewDefButton);
		g_Window.RedrawButton(NewDefButton);
		g_Window.DrawRemark(NewDefButton);
		break;
		}
	case 37:		// Left
		{
		if(g_Window.m_NewDefaultButton < BUTTON_COUNT / 2)
			break;
		int NewDefButton;
		NewDefButton = g_Window.m_NewDefaultButton - BUTTON_COUNT /2;
		g_Window.SetDefaultButton(NewDefButton);
		g_Window.RedrawButton(NewDefButton);
		g_Window.DrawRemark(NewDefButton);
		break;
		}
	case 38:		// Up
		{
		int NewDefButton;
		NewDefButton = g_Window.m_NewDefaultButton - 1;
		if(g_Window.m_NewDefaultButton == BUTTON_COUNT / 2)
			NewDefButton = BUTTON_COUNT - 1;
		if(g_Window.m_NewDefaultButton == 0)
			NewDefButton = BUTTON_COUNT / 2 - 1;
		g_Window.SetDefaultButton(NewDefButton);
		g_Window.RedrawButton(NewDefButton);
		g_Window.DrawRemark(NewDefButton);
		break;
		}
	case 39:		// Right
		{
		if(g_Window.m_NewDefaultButton >= BUTTON_COUNT / 2)
			break;
		int NewDefButton;
		NewDefButton = g_Window.m_NewDefaultButton + BUTTON_COUNT /2;
		g_Window.SetDefaultButton(NewDefButton);
		g_Window.RedrawButton(NewDefButton);
		g_Window.DrawRemark(NewDefButton);
		break;
		}
	case 40:		// Down
		{
		int NewDefButton;
		NewDefButton = g_Window.m_NewDefaultButton + 1;
		if(g_Window.m_NewDefaultButton == BUTTON_COUNT - 1)
			NewDefButton = BUTTON_COUNT / 2;
		if(g_Window.m_NewDefaultButton == BUTTON_COUNT / 2 - 1)
			NewDefButton = 0;
		g_Window.SetDefaultButton(NewDefButton);
		g_Window.RedrawButton(NewDefButton);
		g_Window.DrawRemark(NewDefButton);
		break;
		}
	case 87:		// w
		{
				g_Window.SetDefaultButton(0);
				g_Window.RedrawButton(0);
				ProcCheckButton(0);
		break;
		}
	case 82:		// r
		{
				g_Window.SetDefaultButton(1);
				g_Window.RedrawButton(1);
				ProcCheckButton(1);
		break;
		}
	case 84:		// t
		{
				g_Window.SetDefaultButton(2);
				g_Window.RedrawButton(2);
				ProcCheckButton(2);
		break;
		}
	case 77:		// m
		{
				g_Window.SetDefaultButton(3);
				g_Window.RedrawButton(3);
				ProcCheckButton(3);
		break;
		}
	case 67:		// c
		{
				g_Window.SetDefaultButton(4);
				g_Window.RedrawButton(4);
				ProcCheckButton(4);
		break;
		}
	case 71:		// g
		{
				g_Window.SetDefaultButton(5);
				g_Window.RedrawButton(5);
				ProcCheckButton(5);
		break;
		}
	case 83:		// s
		{
				g_Window.SetDefaultButton(6);
				g_Window.RedrawButton(6);
				ProcCheckButton(6);
		break;
		}
	case 69:		// e
		{
				g_Window.SetDefaultButton(7);
				g_Window.RedrawButton(7);
				ProcCheckButton(7);
		break;
		}
	case 66:		// b
		{
				g_Window.SetDefaultButton(8);
				g_Window.RedrawButton(8);
				ProcCheckButton(8);
		break;
		}
	case 80:		// p
		{
				g_Window.SetDefaultButton(9);
				g_Window.RedrawButton(9);
				ProcCheckButton(9);
		break;
		}
	case 78:		// n
		{
				g_Window.SetDefaultButton(10);
				g_Window.RedrawButton(10);
				ProcCheckButton(10);
		break;
		}
	case 85:		// u
		{
				g_Window.SetDefaultButton(11);
				g_Window.RedrawButton(11);
				ProcCheckButton(11);
			break;
		}
	case 73:		// i
		{
				g_Window.SetDefaultButton(12);
				g_Window.RedrawButton(12);
				ProcCheckButton(12);
			break;
		}
	case 81:		// q
		{
				g_Window.SetDefaultButton(13);
				g_Window.RedrawButton(13);
				ProcCheckButton(13);
		break;
		}
	}
}

BOOL ProcCheckButton(int SelectID)
{
		switch (SelectID) {
			case 13:
				g_bExit = TRUE;
				break;
			case 12:
				return(StartApp("sysinfo.exe"));
				break;
			case 11:
				return(StartApp("userman.exe"));
				break;
			case 0:
				return(StartApp("WacExplorer.exe"));
				break;
			case 6:
				return(StartApp("svcman.exe"));
				break;
			case 1:
				return(StartApp("regview.exe"));
				break;
			case 7:
				return(StartApp("eventview.exe"));
				break;
			case 2:
				return(StartApp("edit.exe"));
				break;
			case 8:
				return(StartApp("binedit.exe"));
				break;
			case 3:
				return(StartApp("inbox.exe"));
				break;
			case 9:
				return(StartApp("procview.exe"));
				break;
			case 4:
				return(StartApp("phone.exe"));
				break;
			case 10:
				return(StartApp("sesman.exe"));
				break;
			case 5:
				return(StartApp("config.exe"));
				break;
		}
		return FALSE;
}

LRESULT CALLBACK EditMessageProc(
        HWND hwnd,      // 窗口标识
        UINT uMsg,      // 消息类型编号
        WPARAM wParam,  // 消息的第一个参数
        LPARAM lParam   // 消息的第二个参数
)
{
    switch (uMsg) 
    {
        case    WM_COMMAND:
				break;
		case	WM_INITMENUPOPUP:
				break;
        case	WM_SYSKEYUP:
 				break;
        case	WM_SYSKEYDOWN:
				break;
        case    WM_CHAR:
				uMsg=uMsg;
                break;
        case    WM_KEYDOWN:
				ProcKeyDown(wParam);
                break;
        case    WM_KEYUP:
				if(wParam==32 || wParam==13){
					if(!g_Window.m_bPushed)
						break;
					g_Window.SetCheckButton(-1);
					g_Window.RedrawButton(g_Window.m_NewDefaultButton);
					ProcCheckButton(g_Window.m_NewDefaultButton);
				}
                break;
        case    WM_LBUTTONDOWN:
			{
				int ret = g_Window.GetButtonID(LOWORD(lParam), HIWORD(lParam));
				if(ret == -1)
					break;
				g_Window.SetDefaultButton(ret);
				g_Window.SetCheckButton(ret);
//				g_Window.m_bPushed = TRUE;
				g_Window.RedrawButton(ret);
                break;
			}
        case    WM_LBUTTONUP:
			{
				int ret = g_Window.GetButtonID(LOWORD(lParam), HIWORD(lParam));
				if(ret == g_Window.m_CheckButton){
					ProcCheckButton(ret);
				}
				g_Window.SetCheckButton(-1);
				g_Window.RedrawButton(g_Window.m_NewDefaultButton);
                break; 
			}
        case    WM_MOUSEMOVE:
			{
				static ButtonID = 0;
				int buttonid = g_Window.GetButtonID(LOWORD(lParam), HIWORD(lParam));
				if(buttonid == ButtonID){
				}else{
					if (g_TimerId != 0)
						KillTimer(NULL, g_TimerId);
					g_TimerId = SetTimer(NULL, 1, 10000, NULL);
					g_TimerId = 0;
					ButtonID = buttonid;
				ProcTimer(LOWORD(lParam), HIWORD(lParam), wParam & MK_LBUTTON);
				}
                break;
			}
        case    WM_TIMER:
                break;
        default:
                break; 
    }
	return 0;
}

int main(int argc, char* argv[])
{
	// 初始化数据
    ConInit();
	ConSetCursorInfo(15,FALSE);
	::GetModuleFileName(NULL, g_ExePath, MAX_PATH);
	int len = strlen(g_ExePath);
	for (int i = len; i > 2; i --)
		if (g_ExePath[i] == '\\') {
			g_ExePath[i] = 0;
			break;
		}
	// 首先清屏
	InitButtonData();
	InitScreen();
    // 进入消息循环
    ConSetProc(EditMessageProc);    // 设定主消息处理函数
    while (1)
    {
        MSG msg;
        ::GetMessage(&msg, NULL, 0, 0);
        ConDispatchMessage(&msg);       // 处理这个消息
        if (g_bExit) 
			break;
    }
	// 清屏
    ConClearScreen(0,0,g_Buffer.dwSize.X,g_Buffer.dwSize.Y,0);
	ConSetCursorInfo(15,TRUE);
	return 0;
}

⌨️ 快捷键说明

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