📄 newtoolbar.c
字号:
pta.x = 0; pta.y = rc.bottom - 1; ptb.x = rc.right; ptb.y = pta.y; line_a2b (hdc, &pta, &ptb, COLOR_darkgray); pta.y += 1; ptb.y = pta.y; line_a2b (hdc, &pta, &ptb, COLOR_lightwhite); /* draw two separator lines */ pta.x = 2; pta.y = MARGIN_VERT; ptb.x = pta.x; ptb.y = rc.bottom - MARGIN_VERT - 1; line_a2b (hdc, &pta, &ptb, COLOR_darkgray); pta.x += 1; ptb.x = pta.x; line_a2b (hdc, &pta, &ptb, COLOR_lightwhite); pta.x = 5; pta.y = MARGIN_VERT; ptb.x = pta.x; ptb.y = rc.bottom - MARGIN_VERT - 1; line_a2b (hdc, &pta, &ptb, COLOR_darkgray); pta.x += 1; ptb.x = pta.x; line_a2b (hdc, &pta, &ptb, COLOR_lightwhite); /* draw separator line between bitmap and text *//* if ((ntb_data->style & NTBS_WITHTEXT) && !(ntb_data->style & NTBS_TEXTRIGHT)) { pta.x = MARGIN_HORZ; pta.y = rc.bottom - GetFontHeight (hdc) - GAP_BMP_TEXT_VERT; ptb.x = rc.right; ptb.y = pta.y; line_a2b (hdc, &pta, &ptb, COLOR_darkgray); pta.y += 1; ptb.y = pta.y; line_a2b (hdc, &pta, &ptb, COLOR_lightwhite); } */#endif /* _FLAT_WINDOW_STYLE */ item = ntb_data->head; while (item) { if ( (item->flags & NTBIF_TYPEMASK) == NTBIF_NEWLINE ) item = item->next; l = item->rc_item.left; t = item->rc_item.top; r = item->rc_item.right; b = item->rc_item.bottom; w = ntb_data->w_cell; h = ntb_data->h_cell; if ((item->flags & NTBIF_TYPEMASK) == NTBIF_SEPARATOR) { if (ntb_data->style & NTBS_DRAWSEPARATOR) {#ifdef _FLAT_WINDOW_STYLE pta.x = l + 2; pta.y = t; ptb.x = pta.x; ptb.y = rc.bottom - MARGIN_VERT; line_a2b (hdc, &pta, &ptb, COLOR_black);#else pta.x = l + 1; pta.y = t; ptb.x = pta.x; ptb.y = rc.bottom - MARGIN_VERT; line_a2b (hdc, &pta, &ptb, COLOR_darkgray); pta.x += 1; pta.y = t; ptb.x = pta.x; ptb.y = rc.bottom - MARGIN_VERT; line_a2b (hdc, &pta, &ptb, COLOR_lightwhite);#endif } item = item->next; continue; } if (item->flags & NTBIF_DISABLED) { if (ntb_data->nr_cols == 4) FillBoxWithBitmapPart (hdc, l, t, w, h, 0, 0, ntb_data->image, w * 3, h * item->bmp_cell); else FillBoxWithBitmapPart (hdc, l, t, w, h, 0, 0, ntb_data->image, 0, h * item->bmp_cell); } else if ( item->flags & NTBIF_CHECKED) { if (ntb_data->nr_cols >= 3) FillBoxWithBitmapPart (hdc, l, t, w, h, 0, 0, ntb_data->image, w * 2, h * item->bmp_cell); else if ( ntb_data->nr_cols >=2 ) FillBoxWithBitmapPart (hdc, l, t, w, h, 0, 0, ntb_data->image, w, h * item->bmp_cell); else { FillBoxWithBitmapPart (hdc, l, t, w, h, 0, 0, ntb_data->image, 0, h * item->bmp_cell); r = l + w ; b = t + h ; pta.x = l; pta.y = t; ptb.x = l; ptb.y = b; line_a2b (hdc, &pta, &ptb, COLOR_black); pta.x = l; pta.y = t; ptb.x = r; ptb.y = t; line_a2b (hdc, &pta, &ptb, COLOR_black); pta.x = r; pta.y = t; ptb.x = r; ptb.y = b; line_a2b (hdc, &pta, &ptb, COLOR_black); pta.x = l; pta.y = b; ptb.x = r; ptb.y = b; line_a2b (hdc, &pta, &ptb, COLOR_black); } } else { if (item == ntb_data->sel_item) { if (ntb_data->btn_down && ntb_data->nr_cols >= 3) FillBoxWithBitmapPart (hdc, l, t, w, h, 0, 0, ntb_data->image, w * 2, h * item->bmp_cell); else if (!ntb_data->btn_down && ntb_data->nr_cols >= 2) FillBoxWithBitmapPart (hdc, l, t, w, h, 0, 0, ntb_data->image, w, h * item->bmp_cell); else FillBoxWithBitmapPart (hdc, l, t, w, h, 0, 0, ntb_data->image, 0, h * item->bmp_cell); } else FillBoxWithBitmapPart (hdc, l, t, w, h, 0, 0, ntb_data->image, 0, h * item->bmp_cell); } if (ntb_data->style & NTBS_DRAWSTATES) { if ((ntb_data->style & NTBS_WITHTEXT) && !(ntb_data->style & NTBS_TEXTRIGHT)) { r = l + w; b = t + h; } else { r--; b--; } if (!(item->flags & NTBIF_DISABLED) && item == ntb_data->sel_item) { if (ntb_data->btn_down) { pta.x = l; pta.y = t; ptb.x = l; ptb.y = b; line_a2b (hdc, &pta, &ptb, COLOR_darkgray); pta.x = l; pta.y = t; ptb.x = r; ptb.y = t; line_a2b (hdc, &pta, &ptb, COLOR_darkgray); pta.x = r; pta.y = t; ptb.x = r; ptb.y = b; line_a2b (hdc, &pta, &ptb, COLOR_lightwhite); pta.x = l; pta.y = b; ptb.x = r; ptb.y = b; line_a2b (hdc, &pta, &ptb, COLOR_lightwhite); } else { pta.x = l; pta.y = t; ptb.x = l; ptb.y = b; line_a2b (hdc, &pta, &ptb, COLOR_lightwhite); pta.x = l; pta.y = t; ptb.x = r; ptb.y = t; line_a2b (hdc, &pta, &ptb, COLOR_lightwhite); pta.x = r; pta.y = t; ptb.x = r; ptb.y = b; line_a2b (hdc, &pta, &ptb, COLOR_darkgray); pta.x = l; pta.y = b; ptb.x = r; ptb.y = b; line_a2b (hdc, &pta, &ptb, COLOR_darkgray); } } } if (ntb_data->style & NTBS_WITHTEXT) { DWORD format = DT_SINGLELINE | DT_VCENTER; if (ntb_data->style & NTBS_TEXTRIGHT) format |= DT_LEFT; else format |= DT_CENTER; SetBkMode (hdc, BM_TRANSPARENT); DrawText (hdc, item->text, -1, &item->rc_text, format); } item = item->next; }}static NTBITEM* get_item_by_pos (PNTBCTRLDATA ntb_data, int posx, int posy){ NTBITEM* item; item = ntb_data->head; while (item) { if (!(item->flags & NTBIF_DISABLED) && PtInRect (&item->rc_item, posx, posy)) { return item; } item = item->next; } return NULL;}static void append_new_item (HWND hwnd, NTBCTRLDATA* ntb_data, NTBITEM* new_item){ HDC hdc; hdc = GetClientDC (hwnd); if (! (ntb_data->style & NTBS_VERTICAL) ) { //horizontal if (ntb_data->tail == NULL ) { new_item->rc_item.top = MARGIN_VERT; new_item->rc_item.left = MARGIN_HORZ; } else if ( (new_item->flags & NTBIF_TYPEMASK ) == NTBIF_NEWLINE ) { new_item->rc_item.top = ntb_data->tail->rc_item.bottom + GAP_ITEM_ITEM_VERT; new_item->rc_item.left = MARGIN_HORZ; new_item->rc_item.bottom = new_item->rc_item.top; new_item->rc_item.right = new_item->rc_item.left; goto end; } else { new_item->rc_item.top = ntb_data->tail->rc_item.top; if ( (ntb_data->tail->flags & NTBIF_TYPEMASK) == NTBIF_NEWLINE ) new_item->rc_item.left = MARGIN_HORZ; else new_item->rc_item.left = ntb_data->tail->rc_item.right + GAP_ITEM_ITEM_HORZ; } switch (new_item->flags & NTBIF_TYPEMASK) { case NTBIF_PUSHBUTTON: case NTBIF_CHECKBUTTON: case NTBIF_HOTSPOTBUTTON: if (ntb_data->style & NTBS_WITHTEXT) { if (ntb_data->style & NTBS_TEXTRIGHT) { SIZE sz_text; GetTextExtent (hdc, new_item->text, -1, &sz_text); new_item->rc_item.bottom = new_item->rc_item.top + ntb_data->h_cell + 1; new_item->rc_text.left = new_item->rc_item.left + ntb_data->w_cell + GAP_BMP_TEXT_HORZ; new_item->rc_text.right = new_item->rc_text.left + sz_text.cx; new_item->rc_text.top = new_item->rc_item.top; new_item->rc_text.bottom = new_item->rc_item.bottom; new_item->rc_item.right = new_item->rc_text.right + GAP_BMP_TEXT_HORZ + 1; } else { new_item->rc_item.right = new_item->rc_item.left + ntb_data->w_cell + 1; new_item->rc_text.left = new_item->rc_item.left; new_item->rc_text.right = new_item->rc_item.right; new_item->rc_text.top = new_item->rc_item.top + ntb_data->h_cell + GAP_BMP_TEXT_VERT; new_item->rc_text.bottom = new_item->rc_text.top + GetFontHeight (hdc); new_item->rc_item.bottom = new_item->rc_text.bottom + 1; } } else { new_item->rc_item.right = new_item->rc_item.left + ntb_data->w_cell + 1; new_item->rc_item.bottom = new_item->rc_item.top + ntb_data->h_cell + 1; } break; case NTBIF_NEWLINE: case NTBIF_SEPARATOR: default: if (ntb_data->style & NTBS_DRAWSEPARATOR) new_item->rc_item.right = new_item->rc_item.left + WIDTH_SEPARATOR; else new_item->rc_item.right = new_item->rc_item.left + WIDTH_SEPARATOR * 2; new_item->rc_item.bottom = new_item->rc_item.top + ntb_data->h_cell; break; } } else { // vertical if (ntb_data->tail == NULL ) { new_item->rc_item.top = MARGIN_V_VERT; new_item->rc_item.left = MARGIN_V_HORZ; } else if ( (new_item->flags & NTBIF_TYPEMASK ) == NTBIF_NEWLINE ) { new_item->rc_item.left = ntb_data->tail->rc_item.right + GAP_ITEM_ITEM_HORZ; new_item->rc_item.top = MARGIN_V_VERT; new_item->rc_item.bottom = new_item->rc_item.top; new_item->rc_item.right = new_item->rc_item.left; goto end; } else { if ( (ntb_data->tail->flags & NTBIF_TYPEMASK) == NTBIF_NEWLINE ) new_item->rc_item.top = MARGIN_V_VERT; else new_item->rc_item.top = ntb_data->tail->rc_item.bottom + GAP_ITEM_ITEM_VERT; new_item->rc_item.left = ntb_data->tail->rc_item.left; } switch (new_item->flags & NTBIF_TYPEMASK) { case NTBIF_PUSHBUTTON: case NTBIF_CHECKBUTTON: case NTBIF_HOTSPOTBUTTON: if (ntb_data->style & NTBS_WITHTEXT) { if (ntb_data->style & NTBS_TEXTRIGHT) { SIZE sz_text; GetTextExtent (hdc, new_item->text, -1, &sz_text); new_item->rc_item.bottom = new_item->rc_item.top + ntb_data->h_cell + 1; new_item->rc_text.left = new_item->rc_item.left + ntb_data->w_cell + GAP_BMP_TEXT_HORZ; new_item->rc_text.right = new_item->rc_text.left + sz_text.cx; new_item->rc_text.top = new_item->rc_item.top; new_item->rc_text.bottom = new_item->rc_item.bottom; new_item->rc_item.right = new_item->rc_text.right + GAP_BMP_TEXT_HORZ + 1; } else { new_item->rc_item.right = new_item->rc_item.left + ntb_data->w_cell + 1; new_item->rc_text.left = new_item->rc_item.left; new_item->rc_text.right = new_item->rc_item.right; new_item->rc_text.top = new_item->rc_item.top + ntb_data->h_cell + GAP_BMP_TEXT_VERT; new_item->rc_text.bottom = new_item->rc_text.top + GetFontHeight (hdc); new_item->rc_item.bottom = new_item->rc_text.bottom + 1; } } else { new_item->rc_item.right = new_item->rc_item.left + ntb_data->w_cell + 1; new_item->rc_item.bottom = new_item->rc_item.top + ntb_data->h_cell + 1; } break; case NTBIF_SEPARATOR: default: if (ntb_data->style & NTBS_DRAWSEPARATOR) new_item->rc_item.bottom = new_item->rc_item.top + WIDTH_SEPARATOR; else new_item->rc_item.bottom = new_item->rc_item.top + WIDTH_SEPARATOR * 2; new_item->rc_item.right = new_item->rc_item.left + ntb_data->w_cell; break; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -