给DROPDOWNLIST加上TOOLTIP的效果

DropDownList美化技巧

 今天在做项目的时候,突然遇到如果一个DROPDOWNLIST里面的ITEM太长会将DROPDONLIST的宽度拉得很宽,这样影响美观的效果,于是我考虑到给DROPDOWNLIST的每个ITEM都加上一个TOOLTIP,当用户将鼠标放上去的时候就能显示那个ITEM的全部内容: 代码如下: 

 

如果大家有更好的方法,也欢迎提出来,让我们大家一起进步~~~

下面程序的主界面上加上一个文本输入框,一个文本框,一个列表(含有广东各地地名),一个复选键,一个按钮(按键后在文本框显示文本输入框和列表选中内容)#include <windows.h> #include <commdlg.h> #include <stdio.h> // 菜单命令标识符 #define IDM_OPEN 1001 #define IDM_SAVE 1002 #define IDM_EXIT 1003 #define IDM_ABOUT 1004 // 窗口过程函数 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_COMMAND: { // 处理菜单命令 switch (LOWORD(wParam)) { case IDM_OPEN: { // 创建打开文件对话框 OPENFILENAMEW ofn; wchar_t szFile[260] = { 0 }; ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hWnd; ofn.lpstrFile = szFile; ofn.nMaxFile = sizeof(szFile); ofn.lpstrFilter = L"文本文件 (*.txt)\0*.txt\0所有文件 (*.*)\0*.*\0"; ofn.nFilterIndex = 1; ofn.lpstrTitle = L"选择要打开的文件"; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; if (GetOpenFileNameW(&ofn)) { MessageBoxW(hWnd, szFile, L"已选择文件", MB_OK | MB_ICONINFORMATION); } break; } case IDM_SAVE: { // 创建保存文件对话框 OPENFILENAMEW ofn; wchar_t szFile[260] = { 0 }; ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hWnd; ofn.lpstrFile = szFile; ofn.nMaxFile = sizeof(szFile); ofn.lpstrFilter = L"文本文件 (*.txt)\0*.txt\0所有文件 (*.*)\0*.*\0"; ofn.nFilterIndex = 1; ofn.lpstrDefExt = L"txt"; ofn.lpstrTitle = L"保存文件"; ofn.Flags = OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST; if (GetSaveFileNameW(&ofn)) { wchar_t message[300]; swprintf(message, 300, L"文件已保存到:\n%s", szFile); MessageBoxW(hWnd, message, L"保存成功", MB_OK | MB_ICONINFORMATION); } break; } case IDM_EXIT: PostQuitMessage(0); break; case IDM_ABOUT: MessageBoxW(hWnd, L"Windows GUI 示例程序\n版本 1.0", L"关于", MB_OK | MB_ICONINFORMATION); break; } break; } case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); // 绘制窗口内容 RECT rect; GetClientRect(hWnd, &rect); DrawTextW(hdc, L"欢迎使用 Windows GUI 程序", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint(hWnd, &ps); break; } case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProcW(hWnd, msg, wParam, lParam); } return 0; } // 创建主菜单 HMENU CreateMainMenu() { HMENU hMenu = CreateMenu(); HMENU hFileMenu = CreatePopupMenu(); HMENU hHelpMenu = CreatePopupMenu(); // 文件菜单 AppendMenuW(hFileMenu, MF_STRING, IDM_OPEN, L"打开(&O)"); AppendMenuW(hFileMenu, MF_STRING, IDM_SAVE, L"保存(&S)"); AppendMenuW(hFileMenu, MF_SEPARATOR, 0, NULL); AppendMenuW(hFileMenu, MF_STRING, IDM_EXIT, L"退出(&X)"); // 帮助菜单 AppendMenuW(hHelpMenu, MF_STRING, IDM_ABOUT, L"关于(&A)"); // 主菜单栏 AppendMenuW(hMenu, MF_POPUP, (UINT_PTR)hFileMenu, L"文件(&F)"); AppendMenuW(hMenu, MF_POPUP, (UINT_PTR)hHelpMenu, L"帮助(&H)"); return hMenu; } // 程序入口点 int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) { // 注册窗口类 const wchar_t CLASS_NAME[] = L"MainWindowClass"; WNDCLASSW wc = { 0 }; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.lpszClassName = CLASS_NAME; wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.hCursor = LoadCursor(NULL, IDC_ARROW); if (!RegisterClassW(&wc)) { MessageBoxW(NULL, L"窗口类注册失败!", L"错误", MB_ICONERROR); return 1; } // 创建菜单 HMENU hMenu = CreateMainMenu(); // 创建窗口 HWND hWnd = CreateWindowExW( 0, CLASS_NAME, L"Windows GUI 示例程序", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 600, 400, NULL, hMenu, // 附菜单 hInstance, NULL ); if (hWnd == NULL) { MessageBoxW(NULL, L"窗口创建失败!", L"错误", MB_ICONERROR); return 1; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // 消息循环 MSG msg; while (GetMessageW(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessageW(&msg); } return (int)msg.wParam; }
最新发布
09-28
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值