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

📄 list.c

📁 用MINIGUI编写的窗口代码
💻 C
📖 第 1 页 / 共 2 页
字号:
**时间: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 + -