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

📄 winproc.c

📁 MinGUI 可视化程序代码
💻 C
字号:
 /******************************************************************************** Copyright  2006 National ASIC Center, All right Reserved** FILE NAME:      winform.c* PROGRAMMER:     ming.c* Date of Creation:   2006/08/8** DESCRIPTION:** NOTE:** FUNCTIONS LIST:* -----------------------------------------------------------------------------** -----------------------------------------------------------------------------** MODIFICATION HISTORY*     LastModify  2006/10/30******************************************************************************/#include "mingui.h"
//---------------------------------------------------------------------------HRESULT CALLBACK DefWindowProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){ switch(message)  { case WM_KEYDOWN:         { switch(wParam)           { case VK_LEFT:             case VK_UP:                  { HWND hw=CM_GetPrevTabStop(hWnd);                    if(hw)SetFocus(hw);                  }                  break;             case VK_RIGHT:             case VK_DOWN:             case VK_TAB:                  { HWND hw=CM_GetNextTabStop(hWnd);                    if(hw)SetFocus(hw);                  }                  break;           }         }         break;

    case WM_KEYUP:
		   if(wParam==VK_RETURN && hWnd==(HWND)g_CurrentFocus) 
		   { CMD_NotifyParent(hWnd,CM_ENTER);
		   }
		 break;
    case WM_LBUTTONDOWN:		    if(hWnd!=(HWND)g_CurrentFocus)            { SetFocus(hWnd);            }
			if(WndGetAttr(hWnd,WS_VSCROLL|WS_BORDER)==(WS_VSCROLL|WS_BORDER))
			{ extern void ScrollBar_MouseDown(HWND,LPARAM);
			  ScrollBar_MouseDown(hWnd,lParam);
			}         break;
    case WM_LBUTTONUP:
            if(WNDPTR(hWnd)->Parent && hWnd==(HWND)g_CurrentFocus)            { int mx=LOWORD(lParam),my=HIWORD(lParam);              if(PointInRect(mx, my, &WNDPTR(hWnd)->WndRect))                CMD_NotifyParent(hWnd,CM_CLICKED);            }

        	if(WndGetAttr(hWnd,WS_VSCROLL|WS_BORDER)==(WS_VSCROLL|WS_BORDER))
			{ extern void ScrollBar_MouseUp(HWND);
			  ScrollBar_MouseUp(hWnd);
			}
         break;

	case WM_MOUSEMOVE:
			if(WndGetAttr(hWnd,WS_VSCROLL|WS_BORDER)==(WS_VSCROLL|WS_BORDER))
			{  extern void ScrollBar_MouseMove(HWND,LPARAM);
			   ScrollBar_MouseMove(hWnd,lParam);
			}
            break;
	 
   case WM_TIMER:
           if(wParam && ((TGUITimer *)wParam)->TimerProc)
           { ((TGUITimer *)wParam)->TimerProc(hWnd);
           }
         break;
   case WM_SETTEXT:		   if(WndGetAttr(hWnd,WS_CAPTION|WS_NCPAINT)==WS_CAPTION)
		   { extern HWND GetCaptionBar(HWND);
			 SendMessage(GetCaptionBar(hWnd),WM_SETTEXT,wParam,lParam);
		   } 
		   else
		   { SaveWindowText(hWnd,(char *)lParam);
		   }
         break; 
   case WM_SETLOGO:		   if(WndGetAttr(hWnd,WS_CAPTION|WS_NCPAINT)==WS_CAPTION)
		   { extern HWND GetCaptionBar(HWND);
			 SendMessage(GetCaptionBar(hWnd),WM_SETLOGO,wParam,lParam);
		   }
		   else
		   { WNDPTR(hWnd)->Logo=(TBitmap *)lParam;
		   }        break;
   case WM_NCCALCSIZE: /* calculate client rect*/	    { DWORD dwStyle=WNDPTR(hWnd)->Style;          TRECT *prc=(TRECT *)lParam;		  if( (dwStyle&WS_CAPTION)==WS_CAPTION)          { InflateRect(prc, -DLG_BORDER_SIZE, -DLG_BORDER_SIZE);
		    CreateWindow("CaptionBar",NULL,0,0,0,crWidth(hWnd),CAPTION_BAR_HEIGHT,hWnd,0,0);		    prc->top += CAPTION_BAR_HEIGHT;
		  }  		  else		  { int dwBorderStyle=dwStyle&(WS_BORDER_RAISED|WS_BORDER_LOWERED);
		    if(dwBorderStyle==0)
			{ InflateRect(prc, -1, -1);
			}
			else if(dwBorderStyle!=(WS_BORDER_RAISED|WS_BORDER_LOWERED))
			{ InflateRect(prc, -2, -2);
			}
		  }
          if(dwStyle&WS_VSCROLL)
		  { extern void ScrollBar_CalcuSize(HWND,TRECT *);
		    ScrollBar_CalcuSize(hWnd,prc);
		  }
        }		break;
   case WM_NCPAINT:    /* repaint border area*/        { DWORD dwStyle=WNDPTR(hWnd)->Style;
		  HDC dc=GetDC(hWnd);		  if( (dwStyle&WS_CAPTION)==WS_CAPTION)          { extern HWND GetCaptionBar(HWND);
			Draw3dOutset(dc,0,0,absWidth(hWnd),absHeight(hWnd));            SetColor(dc,CL_BTNFACE);            DrawRect(dc,2,2,absWidth(hWnd)-4,absHeight(hWnd)-4);		    Invalidate(GetCaptionBar(hWnd));
          }          else		  { switch( dwStyle&(WS_BORDER_RAISED|WS_BORDER_LOWERED))
		    { case WS_BORDER_RAISED: Draw3dOutset(dc, 0, 0,absWidth(hWnd),absHeight(hWnd));break;
              case WS_BORDER_LOWERED: Draw3dInset(dc, 0, 0,absWidth(hWnd),absHeight(hWnd));break;
			  case 0: SetColor(dc,CL_BLACK); DrawRect(dc,0,0,absWidth(hWnd),absHeight(hWnd));break;
			}
		  }
		  if(dwStyle&WS_VSCROLL)
		  {	extern void ScrollBar_Repaint(HWND,HDC);
			ScrollBar_Repaint(hWnd,dc);
		  } 
		  ReleaseDC(dc);        }        break;

    case WM_ERASEBKGND:  /* repaint background of client area*/
		 if(wParam && lParam)
		 { HDC dc=(HDC)wParam;
		   TRECT *prc=(TRECT *)lParam;
		   ClearRect(dc,prc->left,prc->top,prc->right-prc->left,prc->bottom-prc->top);
		 }
		 break;

    case WM_PAINT:    /* repaint foreground of client area*/
		 { BeginPaint(hWnd);
           EndPaint(hWnd);
         }
         break;

    case WM_EXPOSE:
		 { extern void ReexposeTopWnd(HWND);  
           ReexposeTopWnd(hWnd);
		 }
         break;

    case WM_CLOSE:           DestroyWindow(hWnd);        break;  }  return 0;}/*---------------------------------------------------------------------------END --- Thank you!                                                  ming.c---------------------------------------------------------------------------*/

⌨️ 快捷键说明

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