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

📄 newtoolbar.c

📁 有了操作系统、TCP/IP协议栈、文件系统
💻 C
📖 第 1 页 / 共 4 页
字号:
                    if (item_info->which & MTB_WHICH_CELL)                        item_info->bmp_cell = item->bmp_cell;                    if (item_info->which & MTB_WHICH_HOTSPOT) {                        item_info->hotspot_proc = item->hotspot_proc;                        item_info->rc_hotspot = item->rc_hotspot;                    }                    if (item_info->which & MTB_WHICH_ADDDATA)                        item_info->add_data = item->add_data;                    if (item_info->which & MTB_WHICH_TEXT)                        strncpy (item_info->text, item->text, NTB_TEXT_LEN);                    if (item_info->which & MTB_WHICH_TIP)                        strncpy (item_info->tip, item->tip, NTB_TIP_LEN);                    return NTB_OKAY;                }                item = item->next;            }            return NTB_ERR;        }        case NTBM_SETITEM:        {            int id = wParam;            PNTBITEMINFO item_info = (PNTBITEMINFO) lParam;            NTBITEM* item = NULL;            if (!item_info)                return NTB_ERR;            item = ntb_data->head;            while (item) {                if (id == item->id) {                    if (item_info->which & MTB_WHICH_FLAGS) {                        item->flags = item_info->flags;                        InvalidateRect (hwnd, &item->rc_item, TRUE);                    }                    if (item_info->which & MTB_WHICH_ID)                        item->id = item_info->id;                    if (item_info->which & MTB_WHICH_CELL) {                        item->bmp_cell = item_info->bmp_cell;                        InvalidateRect (hwnd, &item->rc_item, TRUE);                    }                    if (item_info->which & MTB_WHICH_HOTSPOT) {                        item->hotspot_proc = item_info->hotspot_proc;                        item->rc_hotspot = item_info->rc_hotspot;                    }                    if (item_info->which & MTB_WHICH_ADDDATA)                        item->add_data = item_info->add_data;                    if (item_info->which & MTB_WHICH_TEXT) {                        strncpy (item->text, item_info->text, NTB_TEXT_LEN);                        if (ntb_data->style & NTBS_WITHTEXT) {                            if (ntb_data->style & NTBS_TEXTRIGHT) {                                recalc_items (hwnd, ntb_data);                                InvalidateRect (hwnd, NULL, TRUE);                            }                            else {                                InvalidateRect (hwnd, &item->rc_text, TRUE);                            }                        }                    }                    if (item_info->which & MTB_WHICH_TIP)                        strncpy (item->tip, item_info->tip, NTB_TIP_LEN);                    return NTB_OKAY;                }                item = item->next;            }            return NTB_ERR;        }        case NTBM_ENABLEITEM:        {            int id = wParam;            BOOL enable = lParam;            PNTBITEM item = NULL;            item = ntb_data->head;            while (item) {                if (id == item->id) {                    if (enable && (item->flags & NTBIF_DISABLED)) {                        item->flags &= ~NTBIF_DISABLED;                        InvalidateRect (hwnd, &item->rc_item, TRUE);                    }                    else if (!enable && !(item->flags & NTBIF_DISABLED)) {                        item->flags |= NTBIF_DISABLED;                        InvalidateRect (hwnd, &item->rc_item, TRUE);                    }                    return NTB_OKAY;                }                item = item->next;            }            return NTB_ERR;        }                case NTBM_SETBITMAP:        {            NTBINFO *ntb_newdata = NULL;            ntb_newdata = (NTBINFO *) lParam;            if (!ntb_newdata)                return NTB_ERR;            ntb_data->image = ntb_newdata->image;            ntb_data->nr_cells =ntb_newdata->nr_cells;            ntb_data->nr_cols = ntb_newdata->nr_cols;            if (ntb_newdata->nr_cols == 0)                ntb_data->nr_cols = 4;            ntb_data->w_cell = ntb_newdata->w_cell;            if (ntb_data->w_cell == 0)                ntb_data->w_cell = ntb_newdata->image->bmWidth / ntb_data->nr_cols;            ntb_data->h_cell = ntb_newdata->h_cell;            if (ntb_newdata->h_cell == 0)                ntb_data->h_cell = ntb_newdata->image->bmHeight / ntb_data->nr_cells;            InvalidateRect(hwnd, NULL, FALSE);                        return NTB_OKAY;        }        case MSG_PAINT:        {            HDC hdc = BeginPaint (hwnd);            if ( ! (ntb_data->style & NTBS_VERTICAL))            {                draw_tool_bar_horz (hwnd, hdc, ntb_data);            }            else            {                draw_tool_bar_vert (hwnd, hdc, ntb_data);            }            EndPaint (hwnd, hdc);            return 0;        }        case MSG_MOUSEMOVEIN:        {            if (!wParam && ntb_data->sel_item) {                InvalidateRect (hwnd, &ntb_data->sel_item->rc_item, TRUE);                ntb_data->sel_item = NULL;            }            break;        }        case MSG_MOUSEMOVE:        {            PNTBITEM item;            int x, y;            x = LOSWORD(lParam);            y = HISWORD(lParam);            if (GetCapture () == hwnd)                break;            if ((item = get_item_by_pos (ntb_data, x, y))) {                if (ntb_data->sel_item != item) {                    if (ntb_data->sel_item)                        InvalidateRect (hwnd, &ntb_data->sel_item->rc_item, TRUE);                    ntb_data->sel_item = item;                    InvalidateRect (hwnd, &ntb_data->sel_item->rc_item, TRUE);                }                break;            }            break;        }        case MSG_LBUTTONDBLCLK:        {                int sx, sy, x, y;            PNTBITEM item;            sx = x = LOSWORD(lParam);            sy = y = HISWORD(lParam);            if ( (item = get_item_by_pos (ntb_data, x, y)) )  {                NotifyParent (hwnd, myself->id, item->id | 0x4000 );            }                }        break;        case MSG_LBUTTONDOWN:        {            int posx, posy;            NTBITEM* item;            posx = LOSWORD (lParam);            posy = HISWORD (lParam);            if ((item = get_item_by_pos (ntb_data, posx, posy)) == NULL)                break;                            if (GetCapture () == hwnd)                break;            SetCapture (hwnd);            ntb_data->sel_item = item;            ntb_data->btn_down = TRUE;            InvalidateRect (hwnd, &item->rc_item, TRUE);        }        break;        case MSG_LBUTTONUP:        {            int sx, sy, x, y;            PNTBITEM item;            sx = x = LOSWORD(lParam);            sy = y = HISWORD(lParam);            ntb_data->btn_down = FALSE;            if (GetCapture() != hwnd)                break;            ReleaseCapture ();            ScreenToClient (hwnd, &x, &y);            if ((item = get_item_by_pos (ntb_data, x, y))                             && item == ntb_data->sel_item) {                if ((item->flags & NTBIF_TYPEMASK) == NTBIF_HOTSPOTBUTTON                                 && item->hotspot_proc) {                    RECT rc_hotspot = item->rc_hotspot;                    OffsetRect (&rc_hotspot, item->rc_item.left, item->rc_item.top);                    if (PtInRect (&rc_hotspot, x, y)) {                        RECT rc_item = item->rc_item;                                                    ClientToScreen (hwnd, &rc_item.left, &rc_item.top);                        ClientToScreen (hwnd, &rc_item.right, &rc_item.bottom);                        item->hotspot_proc (hwnd, item->id, &rc_item, sx, sy);                        InvalidateRect (hwnd, &item->rc_item, TRUE);                        break;                    }                }                if ( ( item->flags&NTBIF_TYPEMASK ) == NTBIF_CHECKBUTTON ) {                    if ( item->flags & NTBIF_CHECKED )                        item->flags &= ~NTBIF_CHECKED;                    else                        item->flags |= NTBIF_CHECKED;                }                NotifyParent (hwnd, myself->id, item->id);                InvalidateRect (hwnd, &item->rc_item, TRUE);            }            else if (ntb_data->sel_item) {                InvalidateRect (hwnd, &ntb_data->sel_item->rc_item, TRUE);                ntb_data->sel_item = NULL;            }            break;        }        case MSG_RBUTTONDOWN:        {            int posx, posy;            NTBITEM* item;            posx = LOSWORD (lParam);            posy = HISWORD (lParam);            if ((item = get_item_by_pos (ntb_data, posx, posy)) == NULL)                break;            if (GetCapture () == hwnd)                break;            SetCapture (hwnd);            ntb_data->sel_item = item;            ntb_data->btn_down = TRUE;            InvalidateRect (hwnd, &item->rc_item, TRUE);        }        break;        case MSG_RBUTTONUP:        {            int sx, sy, x, y;            PNTBITEM item;            sx = x = LOSWORD(lParam);            sy = y = HISWORD(lParam);            ntb_data->btn_down = FALSE;            if (GetCapture() != hwnd)                break;            ReleaseCapture ();            ScreenToClient (hwnd, &x, &y);            if ((item = get_item_by_pos (ntb_data, x, y))                             && item == ntb_data->sel_item) {                if ((item->flags & NTBIF_TYPEMASK) == NTBIF_HOTSPOTBUTTON                                 && item->hotspot_proc) {                    RECT rc_hotspot = item->rc_hotspot;                    OffsetRect (&rc_hotspot, item->rc_item.left, item->rc_item.top);                    if (PtInRect (&rc_hotspot, x, y)) {                        RECT rc_item = item->rc_item;                                                    ClientToScreen (hwnd, &rc_item.left, &rc_item.top);                        ClientToScreen (hwnd, &rc_item.right, &rc_item.bottom);                        item->hotspot_proc (hwnd, item->id, &rc_item, sx, sy);                        InvalidateRect (hwnd, &item->rc_item, TRUE);                        break;                    }                }                NotifyParent (hwnd, myself->id, item->id | 0x8000);                InvalidateRect (hwnd, &item->rc_item, TRUE);            }            else if (ntb_data->sel_item) {                InvalidateRect (hwnd, &ntb_data->sel_item->rc_item, TRUE);                ntb_data->sel_item = NULL;            }            break;        }                default:            break;    }    return DefaultControlProc (hwnd, message, wParam, lParam);}#endif /* _CTRL_NEWTOOLBAR */

⌨️ 快捷键说明

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