|
楼主 |
发表于 2014-2-21 22:35:59
|
显示全部楼层
回 eric2013 的帖子
eric2013:1. 你可以尝试直接将键盘建立在EDIT的下面进行输入,如果新建立一个窗口,不能关闭的话可能是因为你关闭的方式不对。
2. EDIT有专门的获取函数,你在手册里面找找看。要是获取函数不好用的话,你可以自己建立一个buffer,将输入的数据同时
存到buffer里面 .. (2014-02-21 18:31) 版本你好,我看过你写的示波器的代码,你那里面关闭一个框的代码是下面,
case GUI_ID_OK:
if(NCode==WM_NOTIFICATION_RELEASED)
GUI_EndDialog(hWin, 0);
GUI_Clear();//这个如果不要框就关不掉
break;
我这样理解正确吗?我这里用MDK试过现象是这样
我用的是STM32VET6的芯片,本来是想用你这种方法,在框架上加按钮和EDIT,但是刷新太慢了,底层驱动我都做了优化,但是还是不行,是我这个芯片本来就不够么?还是哪里没优化好,我主要是把下面这些函数做了优化,是直接操作的寄存器,void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) {
// ZQ_LCD_SetPoint( x, y, PixelIndex);
LCD_XX->LCD_REG = 0x2B;
LCD_XX->LCD_RAM = x>>8;
LCD_XX->LCD_RAM = 0x00FF&x;
LCD_XX->LCD_RAM = 0x0001;
LCD_XX->LCD_RAM = 0x00dF;
LCD_XX->LCD_REG = 0x2A;
LCD_XX->LCD_RAM = y>>8;
LCD_XX->LCD_RAM = 0x00FF&y;
LCD_XX->LCD_RAM = 0x0001;
LCD_XX->LCD_RAM = 0x003f;
LCD_XX->LCD_REG = 0x2C;
LCD_XX->LCD_RAM = PixelIndex;
}
/*********************************************************************
*
* LCD_L0_GetPixelIndex
*
* Purpose:
* Returns the index of the given pixel. The upper layers
* calling this routine make sure that the coordinates are in range, so
* that no check on the parameters needs to be performed.
*/
unsigned int LCD_L0_GetPixelIndex(int x, int y) {
LCD_PIXELINDEX PixelIndex;
//PixelIndex = ZQ_LCD_GetPointIndex( x, y);/* ... */
LCD_XX->LCD_REG = 0x2B;
LCD_XX->LCD_RAM = x>>8;
LCD_XX->LCD_RAM = 0x00FF&x;
LCD_XX->LCD_RAM = 0x0001;
LCD_XX->LCD_RAM = 0x00dF;
LCD_XX->LCD_REG = 0x2A;
LCD_XX->LCD_RAM = y>>8;
LCD_XX->LCD_RAM = 0x00FF&y;
LCD_XX->LCD_RAM = 0x0001;
LCD_XX->LCD_RAM = 0x003f;
LCD_XX->LCD_REG = 0x2E;
PixelIndex = LCD_XX->LCD_RAM;
PixelIndex = LCD_XX->LCD_RAM;
return PixelIndex;
}
void LCD_L0_DrawHLine (int x0, int y, int x1) {
uint32_t i;
//ZQ_LCD_DrawHLine( x0, y, x1, LCD_COLORINDEX);
LCD_XX->LCD_REG = 0x2B;
LCD_XX->LCD_RAM = x0>>8;
LCD_XX->LCD_RAM = 0x00FF&x0;
LCD_XX->LCD_RAM = x1>>8;
LCD_XX->LCD_RAM = 0x00FF&x1;
LCD_XX->LCD_REG = 0x2A;
LCD_XX->LCD_RAM =(y>>8);
LCD_XX->LCD_RAM =(0x00FF&y);
LCD_XX->LCD_RAM =(y>>8);
LCD_XX->LCD_RAM =(0x00FF&y);
LCD_XX->LCD_REG = 0x2C;
for(i=x0; i<x1+1; i++)
{
LCD_XX->LCD_RAM = LCD_COLORINDEX;
}
}
/*********************************************************************
*
* LCD_L0_DrawVLine
*/
void LCD_L0_DrawVLine (int x, int y0, int y1) {
uint32_t i;
//ZQ_LCD_DrawVLine( x, y0, y1, LCD_COLORINDEX);
LCD_XX->LCD_REG = 0x2B;
LCD_XX->LCD_RAM = x>>8;
LCD_XX->LCD_RAM = 0x00FF&x;
LCD_XX->LCD_RAM = x>>8;
LCD_XX->LCD_RAM = 0x00FF&x;
LCD_XX->LCD_REG = 0x2A;
LCD_XX->LCD_RAM =(y0>>8);
LCD_XX->LCD_RAM =(0x00FF&y0);
LCD_XX->LCD_RAM =(y1>>8);
LCD_XX->LCD_RAM =(0x00FF&y1);
LCD_XX->LCD_REG = 0x2C;
for(i=y0; i<y1+1; i++)
{
LCD_XX->LCD_RAM = LCD_COLORINDEX;//ZQ_LCD_SetPoint( x, i, color);
}
}
/*********************************************************************
*
* LCD_L0_FillRect
*/
void LCD_L0_FillRect(int x0, int y0, int x1, int y1) {
u32 index;
LCD_XX->LCD_REG = 0x2B;
LCD_XX->LCD_RAM = x0>>8;
LCD_XX->LCD_RAM = 0x00FF&x0;
LCD_XX->LCD_RAM = x1>>8;
LCD_XX->LCD_RAM = 0x00FF&x1;
LCD_XX->LCD_REG = 0x2A;
LCD_XX->LCD_RAM =(y0>>8);
LCD_XX->LCD_RAM =(0x00FF&y0);
LCD_XX->LCD_RAM =(y1>>8);
LCD_XX->LCD_RAM =(0x00FF&y1);
LCD_XX->LCD_REG = 0x2C;
for(index = 0; index < ((x1 - x0+1)*(y1 - y0+1)); index++)
{
LCD_XX->LCD_RAM = LCD_COLORINDEX;
}
//ZQ_LCD_FillRect(x0,y0,x1,y1,LCD_COLORINDEX);
} |
|