Shader Compiler 界面进展3

    先上图:

    

    这两天主要做了几件事:

    1. 修改了左边FileList窗口.

          问题 1) wxListCtrl 控件 list模式下以行为主.  改用report模式, 设置为单列, 并隐藏列头,  代码如下

	m_pListCtrl = new MyListCtrl(this, MyListCtrl::ID_LISTCTRL, wxDefaultPosition, wxSize(200, -1),
		wxLC_REPORT| wxLC_SINGLE_SEL| wxSUNKEN_BORDER| wxLC_NO_HEADER );
	wxListItem itemCol;
	itemCol.SetImage(-1);
	m_pListCtrl->InsertColumn(0, itemCol);
	m_pListCtrl->SetColumnWidth(0, wxLIST_AUTOSIZE_USEHEADER);
	m_pListCtrl->DeleteAllItems();
        
        注意: listCtrl中删除内容是使用 DeleteAllItems, 设置自动列宽应该是 wxLIST_AUTOSIZE, 但我这里不好使, 所以使用wxLIST_AUTOSIZE_USEHEADER, 只容下25个左右字符, 多的以…代替
 
          2) 增加划过高亮功能, 监听 EVT_MOTION 事件,测试是否鼠标位置在 item上, 并设置item的背景颜色
    const long id = HitTest(event.GetPosition(), wxLIST_HITTEST_ONITEMLABEL );	
    SetItemBackgroundColour(id, *wxRED);
 
    2. 字符编码转换, 我使用的是 unicode 的wx库, 工程设置也为 unicode
	char* pstr = "测试编码";
	wxString str(pstr, wxConvLocal);
   
    3. 加载文件, 一次读取所有文件 多加4字节, 并设为0, 解决加载乱码, 这部分代码从 CodeBlocks 项目中摘录, 应该先判断文件内容编码的, 我还没做, 先全部使用 wxConvLocal 转换
	size_t size = editFile.Length();
	wxByte* buf = new wxByte[editFile.Length()+4];
	buf[size + 0] = 0;
	buf[size + 1] = 0;
	buf[size + 2] = 0;
	buf[size + 3] = 0;

	editFile.Read((void*)buf, editFile.Length());
 
   大体上事件处理都有了, 接下来就是 shader 本身的处理了.
 
posted @ 2012-02-14 22:30  柿子院  阅读(487)  评论(0编辑  收藏  举报