|
请教大虾,在以下论坛实例中
/**********************************************************************************************************
* 函 数 名: OnICON0Clicked
* 功能说明: 文件系统管理主函数
* 形 参:pMsg
* 返 回 值: 无
**********************************************************************************************************/
void OnICON00Clicked(uint8_t _ucDriveID){
。。。
。。。
while (OnICON00)
{
// 将按钮设置到对话框的上面
// CHOOSEFILE_SetTopMode(Cnt % 2);
CHOOSEFILE_SetTopMode(1);
hWin = CHOOSEFILE_Create(0, //Handle of parent window.
0, //X position in pixels of the dialog in clie nt coordinates.
0, //Y position in pixels of the dialog in client coordinates.
LCD_GetXSize(), //X-size of the dialog in pixels.
LCD_GetYSize(), //Y-size of the dialog in pixels
apDrives, //Pointer to an array of strings containing the root directories to be used.
GUI_COUNTOF(apDrives),//Number of root directories.
0, //Initial index of the root directory to be used.
"File Dialog", //Title to be shown in the title bar.
0, //Additional flags for the FRAMEWIN widget.
&Info); //Pointer to a CHOOSEFILE_INFO structure.
CHOOSEFILE_SetButtonText(hWin, CHOOSEFILE_BI_CANCEL, "Close");
r = GUI_ExecCreatedDialog(hWin); //替换为GUI_DELAY(20); 并注释掉 "蓝色"部分代码
// 由 case GUI_ID_OK: GUI_EndDialog(hWin, 0);
if (r == 0)
{
//点击了Archive属性的文件 会进入到这里,也就是说,可以
//在这里进入图片显示,MP3播放等功能。
hWin = MESSAGEBOX_Create(Info.pRoot, "File:", 0);
GUI_Delay(2000);
WM_DeleteWindow(hWin);
}
// 由case GUI_ID_CANCEL: GUI_EndDialog(hWin, 1);
else
{
WM_DeleteWindow(hWin);
OnICON00 = 0;
}
}
}
我用了5 个IO按键做五向摇杆,没用到触屏鼠标。在任务N中调用了GUI_PID_StoreState(&_State); 在任务M中处理OnICON00Clicked。执行了红色阻塞对话框摇杆就没反应了;;;但若按注释中的动作(替换GUI_DELAY,注销蓝色部分),画面就会抖动(不停得在重绘),但摇杆有效,可以看到屏上光标在动,可以选择LISTVIEW的项及BUTTON 回退键 CLOSE
请教一:阻塞窗口中 接收哪些消息?执行了阻塞窗体后,屏光标、LISEVIEW的项、BUTTON怎么点选?是发送KEY命令 还是触屏点选? 如果按实例修改,只用五向摇杆控制,画面不动了
请教二:如果LISTVIEW中点选了某些文件,能执行文件么(txt bmp的显示 编辑等),没有回调函数,如何根据控件类型,消息类型 来选择具体执行哪个函数呢(自定义的显示TXT BMP函数等)
。。。纠结了两天了,用摇杆只做到了允许画面抖动情况下,可以点选LISTVIEW中的项及BUTTON 并可以打开文件夹、回退上层目录等动作 |
|