📄 list.c
字号:
**时间:2008.03.31
***********************************************************************/
static int ListProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
int i,j;
switch (message) {
case MSG_CREATE:
// 注册自定义彩色文本控件
RegisterColorEditControl();
inintctrl(hWnd);//初始化各个控件
break;
case MSG_PAINT:
//当绘制窗口时该消息产生,您可以添加些绘图函数,我们“Hello world ”就是在这里实现
initList(hWnd);
hdc = BeginPaint (hWnd);
for(i=0;i<10;i++)
{
for(j=0;j<20;j++)
{
LDrawGrid(hdc,i,j,"1234",SysPixelIndex[i+6]);
}
}
LDrawGrid(hdc,0,0," ",COLOR_red);
EndPaint(hWnd,hdc);
return 0;
case MSG_CLOSE://当窗口关闭时该消息产生
DestroyMainWindow (hWnd);//注销窗口
UnregisterColorEditControl ();//注销彩色文本控件
PostQuitMessage (hWnd);
return 0;
}
return DefaultMainWinProc(hWnd, message, wParam, lParam);//未处理的函数在此默认处理
}
/**********************************************************************
**函数名:HWND List_Create(HWND Hose_Wnd)
**功能:建立"趋势"窗口
**参数:Hose_Wnd;"趋势"窗口的托管窗口,填写为主窗口或者桌面的句柄,填写为主窗口句柄,趋势窗口的句柄将添加
**在Hose_Wnd窗口的附加数据中.
**返回值:建立"趋势"窗口的句柄
**作者:陈永奎
**时间:2008.03.31
***********************************************************************/
int List_Create(HWND Hose_Wnd)
{
HWND hWnd_F2;
MAINWINCREATE CreateInfo;//定义主窗口结构
MSG Msg;//定义消息
int col=21;//////////////////////////////////////////////////////测试
MultiPage=col/20;
CreateInfo.dwStyle = WS_SYSMENU | WS_VISIBLE | WS_BORDER; // | WS_CAPTION ;//设置主窗口风格
CreateInfo.dwExStyle = WS_EX_NONE;//设置主窗口扩展风格
CreateInfo.spCaption = "List";//设置主窗口标题
CreateInfo.hMenu = 0; //设置主窗口菜单
CreateInfo.hCursor = GetSystemCursor(0); //设置主窗口鼠标光标
CreateInfo.hIcon = 0; //设置主窗口图标
CreateInfo.MainWindowProc = ListProc; //设置主窗口消息处理函数过程
CreateInfo.lx = ListXorg; //设置主窗口位置x坐标
CreateInfo.ty = ListYorg; //设置主窗口位置y坐标
CreateInfo.rx = ListXorg+ListWidth ; //设置主窗口宽度
CreateInfo.by = ListYorg+ListHeight; //设置主窗口高度
CreateInfo.iBkColor = COLOR_black; //设置主窗口客户区背景色
CreateInfo.dwAddData = 0; //设置主窗口的附加数据,通常不需要
CreateInfo.hHosting = Hose_Wnd; //设置主窗口的托管窗口,通常为桌面DESKTOP
hWnd_F2 = CreateMainWindow (&CreateInfo);//创建主窗口
if (hWnd_F2 == HWND_INVALID)//失败则退出
return -1;
SetWindowAdditionalData(Hose_Wnd,(DWORD)hWnd_F2);//添加列表窗口的句柄到主窗口附加数据中
ShowWindow(hWnd_F2, SW_SHOWNORMAL);//显示列表窗口SW_SHOW
while (GetMessage(&Msg, hWnd_F2))
{ //进入消息处理
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
MainWindowThreadCleanup (hWnd_F2);
return 0;
}
/**********************************************************************
**函数名:int List_Close(HWND hWndMain)
**功能:关闭"趋势"窗口
**参数:hWndMain;"趋势"窗口的托管窗口句柄,托管窗口的附加数据为"趋势"窗口的句柄
**作者:陈永奎
**时间:2008.03.31
***********************************************************************/
int List_Close(HWND hWndMain)
{
HWND temp;
temp=(HWND)GetWindowAdditionalData(hWndMain);
SendMessage(temp,MSG_CLOSE,0,0);
return(0);
}
/*********************************************************************************
******************************从此处开始为彩色文本控件代码************************
**********************************************************************************/
static int ColorEditConProc (HWND hwnd, int message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
RECT rc; // rc为文本矩形
const char *TempS; //临时存放文本内容
GetClientRect(hwnd, &rc); // 取得控件的大小
switch(message)
{
case MSG_CREATE:
SetWindowBkColor(hwnd, COLOR_black);
break;
case MSG_PAINT:
hdc = BeginPaint (hwnd);
//SetBkMode(hdc, BM_TRANSPARENT); // 让文本框背景透明
// 设置边框颜色-浅蓝色,并绘制边框
SetPenColor(hdc, RGB2Pixel (hdc, 11, 244 , 244));
Rectangle (hdc, rc.left, rc.top, rc.right-1, rc.bottom-1);
// 设置文本颜色——浅蓝色,文本背景色——黑色
SetTextColor(hdc, RGB2Pixel (hdc, 11, 244 , 244));
SetBkColor(hdc, COLOR_black);
rc.right = rc.right-2; // 文字到右边框留的距离为3
// 输出文本内容,右对齐、上下居中显示
DrawText(hdc, GetWindowCaption (hwnd), -1, &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
EndPaint (hwnd, hdc);
break;
case MSG_SETTEXT: // 此消息是为了使得SetDlgItemText()函数(此函数会发出MSG_SETTEXT消息)可用
// 将设置的文本保存到caption中
SetWindowCaption (hwnd, (char*)lParam);
hdc = GetClientDC (hwnd);
// 设置边框颜色-绿色,并绘制边框
SetPenColor(hdc, COLOR_cyan);
Rectangle (hdc, rc.left, rc.top, rc.right, rc.bottom-1);
// 设置文本颜色——浅蓝色,文本背景色——黑色
SetTextColor(hdc, RGB2Pixel (hdc, 11, 244 , 244));
SetBkColor(hdc, COLOR_black);
rc.right = rc.right-3; // 文字到右边框留的距离为3
// 用黑色刷新文字区域
SetBrushColor(hdc, 0);
FillBox (hdc, rc.left+1, rc.top+1, rc.right-rc.left-1, rc.bottom-rc.top-2); // 加1减1目的是为了防止把边框刷掉
// 输出文本内容,右对齐、上下居中显示
DrawText(hdc, (char*)lParam, -1, &rc, DT_NOCLIP | DT_CENTER | DT_VCENTER | DT_SINGLELINE);
ReleaseDC (hdc);
break;
case MSG_USER: //设置文本颜色
TempS=GetWindowCaption(hwnd);
hdc = GetClientDC (hwnd);
// 设置边框颜色-绿色,并绘制边框
SetPenColor(hdc, COLOR_cyan);
Rectangle (hdc, rc.left, rc.top, rc.right, rc.bottom-1);
// 设置文本颜色——浅蓝色,文本背景色——黑色
SetTextColor(hdc, (DWORD)wParam);
SetBkColor(hdc, COLOR_black);
rc.right = rc.right-3; // 文字到右边框留的距离为3
// 用黑色刷新文字区域
SetBrushColor(hdc, 0);
FillBox (hdc, rc.left+1, rc.top+1, rc.right-rc.left-1, rc.bottom-rc.top-2); // 加1减1目的是为了防止把边框刷掉
// 输出文本内容,右对齐、上下居中显示
DrawText(hdc, TempS, -1, &rc, DT_NOCLIP | DT_CENTER | DT_VCENTER | DT_SINGLELINE);
ReleaseDC (hdc);
break;
}
// DefaultControlProc()调用DefaultMainWinProc(),其内包含对MSG_GETTEXT消息的处理
return DefaultControlProc (hwnd, message, wParam, lParam);
}
static BOOL RegisterColorEditControl (void)
{
WNDCLASS MyClass;
MyClass.spClassName = "coloredit";
MyClass.dwStyle = WS_NONE;
MyClass.dwExStyle = WS_EX_NONE;
MyClass.hCursor = GetSystemCursor (IDC_ARROW);
MyClass.iBkColor = COLOR_black;
MyClass.WinProc = ColorEditConProc;
return RegisterWindowClass (&MyClass);
}
static void UnregisterColorEditControl (void)
{
UnregisterWindowClass ("coloredit");
}
/*********************************************************************************
******************************彩色文本控件代码到此结束****************************
**********************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -