winstyles.h

来自「管理项目进度工具的原代码」· C头文件 代码 · 共 591 行 · 第 1/3 页

H
591
字号
#if !defined(AFX_STYLES_H__46AFC4E3_CC43_4E69_B5D3_2B6D1F501D0E__INCLUDED_)
#define AFX_STYLES_H__46AFC4E3_CC43_4E69_B5D3_2B6D1F501D0E__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <richedit.h>

struct Style
{
	LPCTSTR szStyle; // style name
	DWORD dwStyle; // style value
};

#define STYLE(s) #s, (DWORD)s

static Style ClassStyles[] = 
{
	{ STYLE(CS_VREDRAW) }, //		0x0001
	{ STYLE(CS_HREDRAW) }, //		0x0002
	{ STYLE(CS_DBLCLKS) }, //		0x0008
	{ STYLE(CS_OWNDC) }, //			0x0020
	{ STYLE(CS_CLASSDC) }, //		0x0040
	{ STYLE(CS_PARENTDC) }, //		0x0080
	{ STYLE(CS_NOCLOSE) }, //		0x0200
	{ STYLE(CS_SAVEBITS) }, //		0x0800
	{ STYLE(CS_BYTEALIGNCLIENT) },//0x1000
	{ STYLE(CS_BYTEALIGNWINDOW) },//0x2000
	{ STYLE(CS_GLOBALCLASS) }, //	0x4000
	{ STYLE(CS_IME) }, //			0x00010000
};

///////

static Style WindowStyles[] = 
{
	{ STYLE(WS_OVERLAPPED) }, //	0x00000000L
	{ STYLE(WS_POPUP) }, //			0x80000000L
	{ STYLE(WS_CHILD) }, //			0x40000000L
	{ STYLE(WS_MINIMIZE) }, //		0x20000000L
	{ STYLE(WS_VISIBLE) }, //		0x10000000L
	{ STYLE(WS_DISABLED) }, //		0x08000000L
	{ STYLE(WS_CLIPSIBLINGS) }, //	0x04000000L
	{ STYLE(WS_CLIPCHILDREN) }, //	0x02000000L
	{ STYLE(WS_MAXIMIZE) }, //		0x01000000L
	{ STYLE(WS_CAPTION) }, //		0x00C00000L
	{ STYLE(WS_BORDER) }, //		0x00800000L
	{ STYLE(WS_DLGFRAME) }, //		0x00400000L
	{ STYLE(WS_VSCROLL) }, //		0x00200000L
	{ STYLE(WS_HSCROLL) }, //		0x00100000L
	{ STYLE(WS_SYSMENU) }, //		0x00080000L
	{ STYLE(WS_THICKFRAME) }, //	0x00040000L
	{ STYLE(WS_GROUP) }, //			0x00020000L
	{ STYLE(WS_TABSTOP) }, //		0x00010000L
	{ STYLE(WS_MINIMIZEBOX) },//	0x00020000L
	{ STYLE(WS_MAXIMIZEBOX) },//	0x00010000L
//	{ STYLE(WS_TILED) }, // duplicate
//	{ STYLE(WS_ICONIC) }, // duplicate
//	{ STYLE(WS_SIZEBOX) }, // duplicate
//	{ STYLE(WS_TILEDWINDOW) }, // duplicate
//	{ STYLE(WS_OVERLAPPEDWINDOW) }, // aggregate style
//	{ STYLE(WS_POPUPWINDOW) }, // aggregate style
//	{ STYLE(WS_CHILDWINDOW) }, // duplicate
};

const int NUMWNDSTYLES = sizeof(WindowStyles) / sizeof(Style);

static UINT LookupWndStyle(LPCTSTR szStyle)
{
	int nStyle = NUMWNDSTYLES;

	while (nStyle--)
	{
		if (lstrcmp(szStyle, WindowStyles[nStyle].szStyle) == 0)
			return WindowStyles[nStyle].dwStyle;
	}

	return 0;
}

////////

static Style WindowExStyles[] = 
{
	{ STYLE(WS_EX_DLGMODALFRAME) }, //	0x00000001L
	{ STYLE(WS_EX_NOPARENTNOTIFY) }, //	0x00000004L
	{ STYLE(WS_EX_TOPMOST) }, //		0x00000008L
	{ STYLE(WS_EX_ACCEPTFILES) }, //	0x00000010L
	{ STYLE(WS_EX_TRANSPARENT) }, //	0x00000020L
	{ STYLE(WS_EX_MDICHILD) }, //		0x00000040L
	{ STYLE(WS_EX_TOOLWINDOW) }, //		0x00000080L
	{ STYLE(WS_EX_WINDOWEDGE) }, //		0x00000100L
	{ STYLE(WS_EX_CLIENTEDGE) }, //		0x00000200L
	{ STYLE(WS_EX_CONTEXTHELP) }, //	0x00000400L
	{ STYLE(WS_EX_RIGHT) },	 // 		0x00001000L
	{ STYLE(WS_EX_LEFT) }, //			0x00000000L
	{ STYLE(WS_EX_RTLREADING) }, //		0x00002000L
	{ STYLE(WS_EX_LTRREADING) }, //		0x00000000L
	{ STYLE(WS_EX_LEFTSCROLLBAR) }, //	0x00004000L
	{ STYLE(WS_EX_RIGHTSCROLLBAR) }, // 0x00000000L
	{ STYLE(WS_EX_CONTROLPARENT) }, //	0x00010000L
	{ STYLE(WS_EX_STATICEDGE) }, //		0x00020000L
	{ STYLE(WS_EX_APPWINDOW) }, //		0x00040000L
//	{ STYLE(WS_EX_OVERLAPPEDWINDOW) }, // aggregate style
//	{ STYLE(WS_EX_PALETTEWINDOW) }, // aggregate style
};

const int NUMWNDEXSTYLES = sizeof(WindowExStyles) / sizeof(Style);

static UINT LookupWndExStyle(LPCTSTR szStyle)
{
	int nStyle = NUMWNDEXSTYLES;

	while (nStyle--)
	{
		if (lstrcmp(szStyle, WindowExStyles[nStyle].szStyle) == 0)
			return WindowExStyles[nStyle].dwStyle;
	}

	return 0;
}

//////

static Style HitTests[] = 
{
	{ STYLE(HTERROR) }, //             (-2)
	{ STYLE(HTTRANSPARENT) }, //       (-1)
	{ STYLE(HTNOWHERE) }, //           0
	{ STYLE(HTCLIENT) }, //            1
	{ STYLE(HTCAPTION) }, //           2
	{ STYLE(HTSYSMENU) }, //           3
	{ STYLE(HTGROWBOX) }, //           4
	{ STYLE(HTSIZE) }, //              HTGROWBOX
	{ STYLE(HTMENU) }, //              5
	{ STYLE(HTHSCROLL) }, //           6
	{ STYLE(HTVSCROLL) }, //           7
	{ STYLE(HTMINBUTTON) }, //         8
	{ STYLE(HTMAXBUTTON) }, //         9
	{ STYLE(HTLEFT) }, //              10
	{ STYLE(HTRIGHT) }, //             11
	{ STYLE(HTTOP) }, //               12
	{ STYLE(HTTOPLEFT) }, //           13
	{ STYLE(HTTOPRIGHT) }, //          14
	{ STYLE(HTBOTTOM) }, //            15
	{ STYLE(HTBOTTOMLEFT) }, //        16
	{ STYLE(HTBOTTOMRIGHT) }, //       17
	{ STYLE(HTBORDER) }, //            18
	{ STYLE(HTREDUCE) }, //            HTMINBUTTON
	{ STYLE(HTZOOM) }, //              HTMAXBUTTON
	{ STYLE(HTSIZEFIRST) }, //         HTLEFT
	{ STYLE(HTSIZELAST) }, //          HTBOTTOMRIGHT
	{ STYLE(HTOBJECT) }, //            19
	{ STYLE(HTCLOSE) }, //             20
	{ STYLE(HTHELP) }, //              21
};

// controls
struct Control
{
	LPCTSTR szControlClass; // window class name
	LPCTSTR szBaseClass; // avoids duplicating styles for richedit and comboboxex
	DWORD dwExStyleMsg; // msg to send to control to retrieve Ex styles
};

static Control Controls[] = 
{
	{ "Button", "", 0 }, 
	{ "Static", "", 0 },
	{ "Edit", "", 0 },
	{ "ComboBox", "", 0 },
	{ "ComboLBox", "ListBox", 0 }, // drop list for the combo box
	{ "ListBox", "", 0 },
	{ "Scrollbar", "", 0 },
	{ "toolbarwindow32", "CommonControl", TB_GETEXTENDEDSTYLE }, 
	{ "msctls_updown32", "", 0 },
	{ "msctls_progress32", "", 0 },
	{ "msctls_trackbar32", "", 0 },
	{ "msctls_hotkey32", "", 0 },
	{ "SysListView32", "", LVM_GETEXTENDEDLISTVIEWSTYLE },
	{ "SysTreeView32", "", 0 },
	{ "SysTabControl32", "", TCM_GETEXTENDEDSTYLE },
	{ "SysAnimate32", "", 0 },
	{ "Richedit", "Edit", EM_GETEVENTMASK },	// event mask is like extended styles
	{ "SysDateTimePick32", "", 0 },
	{ "SysMonthCal32", "", 0 },
	{ "SysIPAddress32", "", 0 },
	{ "SysPager32", "", 0 },
	{ "ComboBoxEx32", "ComboBox", CBEM_GETEXTENDEDSTYLE },
	{ "msctls_statusbar32", "CommonControl", 0 },
	{ "ReBarWindow32", "", 0 },
	{ "SysHeader32", "", 0 },
	{ "DialogBox", "", 0 },
	{ "MDIClient", "", 0 },
	{ "tooltips_class32", "", 0 },
};

⌨️ 快捷键说明

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