📄 testlib.c
字号:
#include <windows.h>
#include "..\coolsb\coolscroll.h"
#include "resource.h"
LRESULT CommandHandler(HWND hwnd, WPARAM wParam, LPARAM lParam);
extern HWND hwndCtrl;
#define VERT_GRIPPER 700
#define GRIPPER 1
#define BUT1 2
#define BUT2 3
HDC hdcSkin;
HBITMAP hSkinBmp;
BOOL fCustomDraw = FALSE;
BOOL fButtons = FALSE;
BOOL fThumbAlways = FALSE;
BOOL fLeftScroll = FALSE;
BOOL fEnableCSB = TRUE;
void InitTest(void)
{
hdcSkin = CreateCompatibleDC(0);
hSkinBmp = (HBITMAP)LoadImage(0, "skin01.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
SelectObject(hdcSkin, hSkinBmp);
// DeleteEnhMetaFile(hemf);
}
void RedrawNC(HWND hwnd)
{
SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE|
SWP_FRAMECHANGED|SWP_DRAWFRAME);
}
void ToggleMenuCheck(HMENU menu, UINT menuid)
{
MENUITEMINFO mii;
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_STATE;
GetMenuItemInfo(menu, menuid, FALSE, &mii);
if(mii.fState & MFS_CHECKED)
CheckMenuItem(menu, menuid, MF_UNCHECKED);
else
CheckMenuItem(menu, menuid, MF_CHECKED);
}
void MenuCheckMark (HMENU hmenu, int id, BOOL bCheck)
{
int iState;
iState = (bCheck) ? MF_CHECKED : MF_UNCHECKED;
CheckMenuItem(hmenu, id, iState);
}
void InsertButtons(HWND hwnd)
{
SCROLLBUT sbut;
HINSTANCE hInst = GetModuleHandle(0);
//
// Horizontal buttons
//
sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT;// | SBBF_CURSOR;
sbut.uCmdId = 0;
sbut.nSize = 7;
sbut.uPlacement = SBBP_LEFT;
sbut.uButType = SBBT_FIXED;
// sbut.hCurs = LoadCursor(hInst, MAKEINTRESOURCE(IDC_SIZELR));
CoolSB_InsertButton(hwnd, SB_HORZ, (UINT)-1, &sbut);
sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT;
sbut.uCmdId = 650;
sbut.nSize = -1;
sbut.uPlacement = SBBP_LEFT;
sbut.uButType = SBBT_PUSHBUTTON | SBBM_LEFTARROW;
CoolSB_InsertButton(hwnd, SB_HORZ, (UINT)-1, &sbut);
sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT;
sbut.uCmdId = 651;
sbut.nSize = -1;
sbut.uPlacement = SBBP_LEFT;
sbut.uButType = SBBT_PUSHBUTTON | SBBM_RIGHTARROW;
CoolSB_InsertButton(hwnd, SB_HORZ, (UINT)-1, &sbut);
sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT ;
sbut.uCmdId = 666;
sbut.nSize = 120;
sbut.uPlacement = SBBP_LEFT;
sbut.uButType = SBBT_OWNERDRAW | SBBM_RESIZABLE;//SBBT_PUSHBUTTON2;
sbut.nMinSize = 0;
sbut.nMaxSize = (UINT)-1;
CoolSB_InsertButton(hwnd, SB_HORZ, (UINT)-1, &sbut);
sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT;// | SBBF_CURSOR;
sbut.uCmdId = 668;
sbut.nSize = 5;
sbut.uPlacement = SBBP_LEFT;
sbut.uButType = SBBT_FIXED;
//sbut.hCurs = LoadCursor(hInst, MAKEINTRESOURCE(IDC_SIZELR));
CoolSB_InsertButton(hwnd, SB_HORZ, (UINT)-1, &sbut);
//
// Vertical buttons
//
sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT | SBBF_BITMAP;
sbut.uCmdId = 680;
sbut.nSize = -1;
sbut.uPlacement = SBBP_RIGHT;
sbut.uButType = SBBT_PUSHBUTTON | SBBM_TYPE2 | SBBM_RECESSED;
sbut.hBmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));
CoolSB_InsertButton(hwnd, SB_VERT, (UINT)-1, &sbut);
sbut.uCmdId = 681;
sbut.nSize = -1;
sbut.uPlacement = SBBP_RIGHT;
sbut.uButType = SBBT_TOGGLEBUTTON | SBBM_TYPE2 | SBBM_RECESSED;
CoolSB_InsertButton(hwnd, SB_VERT, (UINT)-1, &sbut);
sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT;// | SBBF_CURSOR;
sbut.uCmdId = VERT_GRIPPER;
sbut.nSize = 7;
sbut.uPlacement = SBBP_LEFT;
sbut.uButType = SBBT_FIXED;
//sbut.hCurs = LoadCursor(hInst, MAKEINTRESOURCE(IDC_SIZEUD));
CoolSB_InsertButton(hwnd, SB_VERT, (UINT)-1, &sbut);
// InitMetaFile();
CoolSB_ModifyButton(hwnd, SB_HORZ, (UINT)-1,0, &sbut);
}
void RemoveButtons(HWND hwnd)
{
CoolSB_RemoveButton(hwnd, SB_HORZ, 0, FALSE);
CoolSB_RemoveButton(hwnd, SB_HORZ, 0, FALSE);
CoolSB_RemoveButton(hwnd, SB_HORZ, 0, FALSE);
CoolSB_RemoveButton(hwnd, SB_HORZ, 0, FALSE);
CoolSB_RemoveButton(hwnd, SB_HORZ, 0, FALSE);
CoolSB_RemoveButton(hwnd, SB_VERT, 0, FALSE);
CoolSB_RemoveButton(hwnd, SB_VERT, 0, FALSE);
CoolSB_RemoveButton(hwnd, SB_VERT, 0, FALSE);
}
LRESULT CommandHandler(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
HMENU hmenu = GetMenu(hwnd);
if(LOWORD(wParam) == VK_ESCAPE)
{
EndDialog(hwnd, 0);
return 0;
}
switch(LOWORD (wParam))
{
case ID_VIEW_NORMAL:
CoolSB_SetStyle(hwndCtrl, SB_BOTH, CSBS_NORMAL);
MenuCheckMark(hmenu, ID_VIEW_NORMAL, TRUE);
MenuCheckMark(hmenu, ID_VIEW_FLAT, FALSE);
MenuCheckMark(hmenu, ID_VIEW_HOTTRACKED, FALSE);
return 0;
case ID_VIEW_FLAT:
CoolSB_SetStyle(hwndCtrl, SB_BOTH, CSBS_FLAT);
MenuCheckMark(hmenu, ID_VIEW_NORMAL, FALSE);
MenuCheckMark(hmenu, ID_VIEW_FLAT, TRUE);
MenuCheckMark(hmenu, ID_VIEW_HOTTRACKED, FALSE);
return 0;
case ID_VIEW_HOTTRACKED:
CoolSB_SetStyle(hwndCtrl, SB_BOTH, CSBS_HOTTRACKED);
MenuCheckMark(hmenu, ID_VIEW_NORMAL, FALSE);
MenuCheckMark(hmenu, ID_VIEW_FLAT, FALSE);
MenuCheckMark(hmenu, ID_VIEW_HOTTRACKED, TRUE);
return 0;
case ID_VIEW_CUSTOMDRAW:
fCustomDraw = !fCustomDraw;
ToggleMenuCheck(hmenu, ID_VIEW_CUSTOMDRAW);
if(fCustomDraw)
{
CoolSB_SetSize(hwndCtrl, SB_BOTH, 18, 18);
CoolSB_SetMinThumbSize(hwndCtrl, SB_BOTH, 18);
}
else
{
CoolSB_SetSize(hwndCtrl, SB_BOTH, SYSTEM_METRIC, SYSTEM_METRIC);
CoolSB_SetMinThumbSize(hwndCtrl, SB_BOTH, (UINT)-1);
}
RedrawNC(hwndCtrl);
return 0;
case ID_VIEW_INSERTEDBUTTONS:
fButtons = !fButtons;
ToggleMenuCheck(hmenu, ID_VIEW_INSERTEDBUTTONS);
if(fButtons)
InsertButtons(hwndCtrl);
else
RemoveButtons(hwndCtrl);
RedrawNC(hwndCtrl);
return 0;
case ID_VIEW_THUMBALWAYS:
fThumbAlways = !fThumbAlways;
ToggleMenuCheck(hmenu, ID_VIEW_THUMBALWAYS);
CoolSB_SetThumbAlways(hwndCtrl, SB_BOTH, fThumbAlways);
RedrawNC(hwndCtrl);
return 0;
case ID_VIEW_ENABLE:
fEnableCSB = !fEnableCSB;
ToggleMenuCheck(hmenu, ID_VIEW_ENABLE);
if(fEnableCSB)
InitializeCoolSB(hwndCtrl);
else
UninitializeCoolSB(hwndCtrl);
return 0;
case ID_VIEW_LEFTSCROLLBAR:
fLeftScroll = !fLeftScroll;
ToggleMenuCheck(hmenu, ID_VIEW_LEFTSCROLLBAR);
if(fLeftScroll)
SetWindowLong(hwndCtrl, GWL_EXSTYLE, WS_EX_CLIENTEDGE | WS_EX_LEFTSCROLLBAR);
else
SetWindowLong(hwndCtrl, GWL_EXSTYLE, WS_EX_CLIENTEDGE & ~WS_EX_LEFTSCROLLBAR);
return 0;
case IDM_FILE_ABOUT:
MessageBox(hwnd, "Cool Scrollbar library\n\rBy J Brown", "CoolScroll Demo", MB_OK | MB_ICONINFORMATION);
return 0;
case IDCANCEL:
EndDialog(hwnd, 0);
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -