📄 appdocument.c
字号:
/*-------------------------------------------------------------------------------
// AppDocument
// 我的文档的主程序
// Create by jsguo 2005.9.8
--------------------------------------------------------------------------------*/
#include "../inc/nucleus.h"
#include "../inc/winconfig.h"
#include "MMI.h"
#include "../inc/windows.h"
#include "../inc/nucleus.h"
#include "../inc/nu_sd.h"
extern NU_SERIAL_PORT port;
//------------------------------------------------------------------------------
// 全局变量
int gnShowDocumentMenu;
int gnselectItem ;
LRESULT CALLBACK VMDocumentProc(HWND,UINT,WPARAM,LPARAM);
InitMWindow initMyDocumentList;
Form gMyFormDocmentList;
CloseMWindow closeMyDocumentList;
int SetDocumentList(InitMWindow init,CloseMWindow close,Form FormDocumentList)
{
initMyDocumentList=init;
initMyDocumentList();
closeMyDocumentList=close;
gMyFormDocmentList=FormDocumentList;
return 1;
}
int MMI_GetDocumentSelectItem()
{
return gnselectItem;
}
int WINAPI VMDocumentMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static char szAppName[]="DocumentApp";
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = (WNDPROC)VMDocumentProc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance =0;
wndclass.hIcon =0;
wndclass.hCursor =0;
wndclass.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName =NULL;
wndclass.lpszClassName = szAppName;
RegisterClass(&wndclass);
hwnd=CreateWindowEx(0L,
szAppName,
"Document",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
MAINFRAME_WIDTH_DEFAULT,
MAINFRAME_HEIGHT_DEFAULT,
NULL,
NULL,
NULL,
NULL);
gnselectItem=0;
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg,NULL,0,0)) {
Uart_Printf("GUI doc start\r\n");
TranslateMessage(&msg);
DispatchMessage(&msg);
Uart_Printf("GUI doc end\r\n");
}
return msg.wParam;
}
SLIDER_Obj gScrollBarDocument={0x40c1ff,0xffff00,2,5,MAINFRAME_HEIGHT_DEFAULT-25,5,5};
LRESULT CALLBACK VMDocumentProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect1;
int i,keyvalue,nSliderValue,y;
HBRUSH hBrush,hBgBrush;
KeyEvent event;
switch (iMsg) {
case WM_CREATE:
gnShowDocumentMenu = 1;
break;
case WM_PAINT:
hBrush = CreateSolidBrush(COLOR_SELECT);//0xa3138);//GetSysColor(COLOR_MENU));
hBgBrush = CreateSolidBrush(COLOR_NORMAL);
hdc=BeginPaint(hwnd,&ps);
if((gMyFormDocmentList.MenuSize-2)!=0)
nSliderValue=(gScrollBarDocument.slnEndX-gScrollBarDocument.slnStartX)/(gMyFormDocmentList.MenuSize-2);
else
nSliderValue=gScrollBarDocument.slnEndX;
rect1.left = 10;
rect1.right = MAINFRAME_WIDTH_DEFAULT;
rect1.top = 0;
rect1.bottom = LIST_HEIGHT_DEFAULT;
for( i = 0; i < gMyFormDocmentList.MenuSize; i++)
{
if(gnselectItem == i)
{
FillRect(hdc,&rect1,hBrush);
}
else
{
FillRect(hdc,&rect1,hBgBrush);
}
if(gnselectItem <LIST_DATA_DEFAULT)
{
DrawText(hdc,gMyFormDocmentList.MenuList[i].MenuName,-1,&rect1,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
rect1.top += LIST_HEIGHT_DEFAULT+1;
rect1.bottom += LIST_HEIGHT_DEFAULT+1;
}
else
{
for(y=6;rect1.bottom<(MAINFRAME_HEIGHT_DEFAULT-MENU_HEIGHT_DEFAULT);rect1.bottom+=LIST_HEIGHT_DEFAULT+1,y--)
{
rect1.top=rect1.bottom-LIST_HEIGHT_DEFAULT;
if(y == 0)
{
FillRect(hdc,&rect1,hBrush);
}
else
{
FillRect(hdc,&rect1,hBgBrush);
}
DrawText(hdc,gMyFormDocmentList.MenuList[gnselectItem-y].MenuName,-1,&rect1,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
}
i = gMyFormDocmentList.MenuSize;
}
}
gScrollBarDocument.slnCurrentX=nSliderValue*gnselectItem;
DisplaySlider(hwnd,gScrollBarDocument);
DeleteObject(hBgBrush);
DeleteObject(hBrush);
EndPaint(hwnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_KEYUP:
keyvalue = wParam - 49;
if(keyvalue == KEY_CANCEL)
{
if(closeMyDocumentList != NULL)
{
closeMyDocumentList();
}
PostMessage(hwnd,WM_CLOSE,0,0);
break;
}
//if((keyvalue >= 0) && (keyvalue <= 4)) // 方向键
if((keyvalue == KEY_UP) || (keyvalue == KEY_DOWN)||(keyvalue == KEY_OK))
{
if(gnShowDocumentMenu==1) // 显示菜单
{
gnselectItem = gMyFormDocmentList.CurrentMenuItem;
//if((keyvalue == 4) || (keyvalue == KEY_LEFT) )//|| (keyvalue == KEY_RIGHT))
if((keyvalue == KEY_OK))
{
event = NULL;
event = gMyFormDocmentList.MenuList[gnselectItem].event;
if(event != NULL)
{
event(iMsg, wParam, lParam);
return 1;
}
}
// 按下方向键,重绘
if(keyvalue == KEY_DOWN)
gnselectItem ++;
else if (keyvalue == KEY_UP)
gnselectItem --;
if(gnselectItem < 0)
gnselectItem = gMyFormDocmentList.MenuSize - 1;
else if(gnselectItem >= gMyFormDocmentList.MenuSize)
gnselectItem = 0;
gMyFormDocmentList.CurrentMenuItem = gnselectItem ;
PostMessage(hwnd,WM_PAINT,0,0);
}
}
break;
default:
return DefWindowProc(hwnd,iMsg,wParam,lParam);
}
return (0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -