#include "stdafx.h" #include "PublicFunc.h" //#include "CTwainMutex.h" #include #include using namespace std; BOOL g_b_show_ui_flg = FALSE; //WATER_PRO g_st_water_pro = {0}; BOOL g_add_water_flg = FALSE; DWORD g_dw_white_bright_count = 40000; //CDirectshowCaptureVideoUvc g_dc_uvc_video; BOOL g_b_use_uvc_dev = FALSE; TWAIN_IMAGE_DATA_INFO g_st_twain_bmp_info = {0}; BOOL g_b_brigth_show_flg = TRUE; HWND g_hwnd_dlg = NULL; //static std::map sizeS; // // //static map, CSize> dpiDct; ///*纸张类型分辨率-幅面字典*/ // void initialDictionary() //{ // //自适应 // dpiDct.insert(pair,CSize>(pair((TwSS)90, 50.0),CSize(594, 898))); // dpiDct.insert(pair,CSize>(pair((TwSS)90, 75),CSize(892, 1347))); // dpiDct.insert(pair,CSize>(pair((TwSS)90, 100),CSize(1189, 1795))); // dpiDct.insert(pair,CSize>(pair((TwSS)90, 150),CSize(1784, 2693))); // dpiDct.insert(pair,CSize>(pair((TwSS)90, 200),CSize(2338, 3307))); // dpiDct.insert(pair,CSize>(pair((TwSS)90, 240), CSize(2854, 4308))); // dpiDct.insert(pair,CSize>(pair((TwSS)90, 300),CSize(3567, 5385))); // dpiDct.insert(pair,CSize>(pair((TwSS)90, 400), CSize(4756, 7180) )); // dpiDct.insert(pair,CSize>(pair((TwSS)90, 600), CSize(7134, 10770))); // // //A3 // dpiDct.insert(pair,CSize>(pair(A3, 50), CSize(585, 827))); // dpiDct.insert(pair,CSize>(pair(A3, 75), CSize(877, 1240))); // dpiDct.insert(pair,CSize>(pair(A3, 100), CSize(1169, 1653))); // dpiDct.insert(pair,CSize>(pair(A3, 150), CSize(1753, 2480))); // dpiDct.insert(pair,CSize>(pair(A3, 200), CSize(2338, 3307))); // dpiDct.insert(pair,CSize>(pair(A3, 240), CSize(2806, 3968) )); // dpiDct.insert(pair,CSize>(pair(A3, 300), CSize(3507, 4960) )); // dpiDct.insert(pair,CSize>(pair(A3, 400), CSize(4677, 6614) )); // dpiDct.insert(pair,CSize>(pair(A3, 600), CSize(7015, 9921) )); // // //A4 // dpiDct.insert(pair,CSize>(pair(A4, 50), CSize(413, 585) )); // dpiDct.insert(pair,CSize>(pair(A4, 75), CSize(620, 877) )); // dpiDct.insert(pair,CSize>(pair(A4, 100), CSize(826, 1169) )); // dpiDct.insert(pair,CSize>(pair(A4, 150), CSize(1240, 1753) )); // dpiDct.insert(pair,CSize>(pair(A4, 200), CSize(1653, 2338) )); // dpiDct.insert(pair,CSize>(pair(A4, 240), CSize(1984, 2806) )); // dpiDct.insert(pair,CSize>(pair(A4, 300), CSize(2480, 3507) )); // dpiDct.insert(pair,CSize>(pair(A4, 400), CSize(3307, 4677) )); // dpiDct.insert(pair,CSize>(pair(A4, 600), CSize(4960, 7015) )); // // //A4R // dpiDct.insert(pair,CSize>(pair(A4R, 50), CSize(585, 413) )); // dpiDct.insert(pair,CSize>(pair(A4R, 75), CSize(877, 620) )); // dpiDct.insert(pair,CSize>(pair(A4R, 100), CSize(1169, 826) )); // dpiDct.insert(pair,CSize>(pair(A4R, 150), CSize(1753, 1240) )); // dpiDct.insert(pair,CSize>(pair(A4R, 200), CSize(2338,1653) )); // dpiDct.insert(pair,CSize>(pair(A4R, 240), CSize(2806,1984) )); // dpiDct.insert(pair,CSize>(pair(A4R, 300), CSize(3507,2480) )); // dpiDct.insert(pair,CSize>(pair(A4R, 400), CSize(4677,3307) )); // dpiDct.insert(pair,CSize>(pair(A4R, 600), CSize(7015,4960) )); // // //A5 // dpiDct.insert(pair,CSize>(pair(A5, 50), CSize(291, 413) )); // dpiDct.insert(pair,CSize>(pair(A5, 75), CSize(437, 620) )); // dpiDct.insert(pair,CSize>(pair(A5, 100), CSize(582, 826) )); // dpiDct.insert(pair,CSize>(pair(A5, 150), CSize(874, 1240) )); // dpiDct.insert(pair,CSize>(pair(A5, 200), CSize(1165, 1653) )); // dpiDct.insert(pair,CSize>(pair(A5, 240), CSize(1398, 1984) )); // dpiDct.insert(pair,CSize>(pair(A5, 300), CSize(1748, 2480) )); // dpiDct.insert(pair,CSize>(pair(A5, 400), CSize(2330, 3307) )); // dpiDct.insert(pair,CSize>(pair(A5, 600), CSize(3496, 4960) )); // // //A5R // dpiDct.insert(pair,CSize>(pair(A5R, 50), CSize(413, 291) )); // dpiDct.insert(pair,CSize>(pair(A5R, 75), CSize(620, 437) )); // dpiDct.insert(pair,CSize>(pair(A5R, 100), CSize(826, 582) )); // dpiDct.insert(pair,CSize>(pair(A5R, 150), CSize(1240, 874) )); // dpiDct.insert(pair,CSize>(pair(A5R, 200), CSize(1653, 1165) )); // dpiDct.insert(pair,CSize>(pair(A5R, 240), CSize(1984, 1398) )); // dpiDct.insert(pair,CSize>(pair(A5R, 300), CSize(2480, 1748) )); // dpiDct.insert(pair,CSize>(pair(A5R, 400), CSize(3307, 2330) )); // dpiDct.insert(pair,CSize>(pair(A5R, 600), CSize(4960, 3496) )); // // //A6 // dpiDct.insert(pair,CSize>(pair(A6, 50), CSize(207, 291) )); // dpiDct.insert(pair,CSize>(pair(A6, 75), CSize(310, 437) )); // dpiDct.insert(pair,CSize>(pair(A6, 100), CSize(413, 582) )); // dpiDct.insert(pair,CSize>(pair(A6, 150), CSize(620, 874) )); // dpiDct.insert(pair,CSize>(pair(A6, 200), CSize(826, 1165) )); // dpiDct.insert(pair,CSize>(pair(A6, 240), CSize(992, 1398) )); // dpiDct.insert(pair,CSize>(pair(A6, 300), CSize(1240, 1748) )); // dpiDct.insert(pair,CSize>(pair(A6, 400), CSize(1653, 2330) )); // dpiDct.insert(pair,CSize>(pair(A6, 600), CSize(2480, 3496) )); // // //A6R // dpiDct.insert(pair,CSize>(pair(A6R, 50), CSize(291, 207) )); // dpiDct.insert(pair,CSize>(pair(A6R, 75), CSize(437, 310) )); // dpiDct.insert(pair,CSize>(pair(A6R, 100), CSize(582, 413) )); // dpiDct.insert(pair,CSize>(pair(A6R, 150), CSize(874, 620) )); // dpiDct.insert(pair,CSize>(pair(A6R, 200), CSize(1165, 826) )); // dpiDct.insert(pair,CSize>(pair(A6R, 240), CSize(1398, 992) )); // dpiDct.insert(pair,CSize>(pair(A6R, 300), CSize(1748, 1240) )); // dpiDct.insert(pair,CSize>(pair(A6R, 400), CSize(2330, 1653) )); // dpiDct.insert(pair,CSize>(pair(A6R, 600), CSize(3496, 2480) )); // // //长文稿,2倍A3 // dpiDct.insert(pair,CSize>(pair((TwSS)91, 50), CSize(585, 1653) )); // dpiDct.insert(pair,CSize>(pair((TwSS)91, 75), CSize(877, 2480) )); // dpiDct.insert(pair,CSize>(pair((TwSS)91, 100), CSize(1169, 1653*2) )); // dpiDct.insert(pair,CSize>(pair((TwSS)91, 150), CSize(1753, 2480*2) )); // dpiDct.insert(pair,CSize>(pair((TwSS)91, 200), CSize(2338, 3307*2) )); // dpiDct.insert(pair,CSize>(pair((TwSS)91, 240), CSize(2806, 3968*2) )); // dpiDct.insert(pair,CSize>(pair((TwSS)91, 300), CSize(3507, 4960*2) )); // dpiDct.insert(pair,CSize>(pair((TwSS)91, 400), CSize(4677, 6614*2) )); // dpiDct.insert(pair,CSize>(pair((TwSS)91, 600), CSize(7015, 9921*2) )); // // //B4 // dpiDct.insert(pair,CSize>(pair(B4, 50), CSize(506, 717) )); // dpiDct.insert(pair,CSize>(pair(B4, 75), CSize(759, 1075) )); // dpiDct.insert(pair,CSize>(pair(B4, 100), CSize(1011, 1433) )); // dpiDct.insert(pair,CSize>(pair(B4, 150), CSize(1517, 2149) )); // dpiDct.insert(pair,CSize>(pair(B4, 200), CSize(2023, 2866) )); // dpiDct.insert(pair,CSize>(pair(B4, 240), CSize(2428, 3439) )); // dpiDct.insert(pair,CSize>(pair(B4, 300), CSize(3035, 4299) )); // dpiDct.insert(pair,CSize>(pair(B4, 400), CSize(4047, 5732) )); // dpiDct.insert(pair,CSize>(pair(B4, 600), CSize(6070, 8598) )); // // //B5 // dpiDct.insert(pair,CSize>(pair(B5, 50), CSize(358, 506) )); // dpiDct.insert(pair,CSize>(pair(B5, 75), CSize(537, 759) )); // dpiDct.insert(pair,CSize>(pair(B5, 100), CSize(716, 1011) )); // dpiDct.insert(pair,CSize>(pair(B5, 150), CSize(1074, 1517) )); // dpiDct.insert(pair,CSize>(pair(B5, 200), CSize(1433, 2023) )); // dpiDct.insert(pair,CSize>(pair(B5, 240), CSize(1719, 2428) )); // dpiDct.insert(pair,CSize>(pair(B5, 300), CSize(2149, 3035) )); // dpiDct.insert(pair,CSize>(pair(B5, 400), CSize(2866, 4047) )); // dpiDct.insert(pair,CSize>(pair(B5, 600), CSize(4299, 6070) )); // // //B5R // dpiDct.insert(pair,CSize>(pair(B5R, 50), CSize(506, 358) )); // dpiDct.insert(pair,CSize>(pair(B5R, 75), CSize(759, 537) )); // dpiDct.insert(pair,CSize>(pair(B5R, 100), CSize(1011, 716) )); // dpiDct.insert(pair,CSize>(pair(B5R, 150), CSize(1517, 1075) )); // dpiDct.insert(pair,CSize>(pair(B5R, 200), CSize(2023, 1433) )); // dpiDct.insert(pair,CSize>(pair(B5R, 240), CSize(2428, 1719) )); // dpiDct.insert(pair,CSize>(pair(B5R, 300), CSize(3035, 2149) )); // dpiDct.insert(pair,CSize>(pair(B5R, 400), CSize(4047, 2866) )); // dpiDct.insert(pair,CSize>(pair(B5R, 600), CSize(6070, 4299) )); // // //B6 // dpiDct.insert(pair,CSize>(pair(B6, 50), CSize(252, 358) )); // dpiDct.insert(pair,CSize>(pair(B6, 75), CSize(378, 537) )); // dpiDct.insert(pair,CSize>(pair(B6, 100), CSize(503, 716) )); // dpiDct.insert(pair,CSize>(pair(B6, 150), CSize(755, 1074) )); // dpiDct.insert(pair,CSize>(pair(B6, 200), CSize(1007, 1433) )); // dpiDct.insert(pair,CSize>(pair(B6, 240), CSize(1209, 1719) )); // dpiDct.insert(pair,CSize>(pair(B6, 300), CSize(1511, 2149) )); // dpiDct.insert(pair,CSize>(pair(B6, 400), CSize(2015, 2866) )); // dpiDct.insert(pair,CSize>(pair(B6, 600), CSize(3023, 4299) )); // // //B6R // dpiDct.insert(pair,CSize>(pair(B6R, 50), CSize(358, 252) )); // dpiDct.insert(pair,CSize>(pair(B6R, 75), CSize(537, 378) )); // dpiDct.insert(pair,CSize>(pair(B6R, 100), CSize(716, 503) )); // dpiDct.insert(pair,CSize>(pair(B6R, 150), CSize(1074, 755) )); // dpiDct.insert(pair,CSize>(pair(B6R, 200), CSize(1433, 1007) )); // dpiDct.insert(pair,CSize>(pair(B6R, 240), CSize(1719, 1209) )); // dpiDct.insert(pair,CSize>(pair(B6R, 300), CSize(2149, 1511) )); // dpiDct.insert(pair,CSize>(pair(B6R, 400), CSize(2866, 2015) )); // dpiDct.insert(pair,CSize>(pair(B6R, 600), CSize(4299, 3023) )); // // //DOUBLE LETTER // dpiDct.insert(pair,CSize>(pair(DOUBLELetter, 50), CSize(550, 850) )); // dpiDct.insert(pair,CSize>(pair(DOUBLELetter, 75), CSize(825, 1275) )); // dpiDct.insert(pair,CSize>(pair(DOUBLELetter, 100), CSize(1100, 1700) )); // dpiDct.insert(pair,CSize>(pair(DOUBLELetter, 150), CSize(1650, 2550) )); // dpiDct.insert(pair,CSize>(pair(DOUBLELetter, 200), CSize(2200, 3400) )); // dpiDct.insert(pair,CSize>(pair(DOUBLELetter, 240), CSize(2640, 4080) )); // dpiDct.insert(pair,CSize>(pair(DOUBLELetter, 300), CSize(3300, 5100) )); // dpiDct.insert(pair,CSize>(pair(DOUBLELetter, 400), CSize(4400, 6800) )); // dpiDct.insert(pair,CSize>(pair(DOUBLELetter, 600), CSize(6600, 10200) )); // // //LETTER // dpiDct.insert(pair,CSize>(pair(USLetter, 50), CSize(425, 550) )); // dpiDct.insert(pair,CSize>(pair(USLetter, 75), CSize(638, 825) )); // dpiDct.insert(pair,CSize>(pair(USLetter, 100), CSize(850, 1100) )); // dpiDct.insert(pair,CSize>(pair(USLetter, 150), CSize(1275, 1650) )); // dpiDct.insert(pair,CSize>(pair(USLetter, 200), CSize(1700, 2200) )); // dpiDct.insert(pair,CSize>(pair(USLetter, 240), CSize(2040, 2640) )); // dpiDct.insert(pair,CSize>(pair(USLetter, 300), CSize(2550, 3300) )); // dpiDct.insert(pair,CSize>(pair(USLetter, 400), CSize(3400, 4400) )); // dpiDct.insert(pair,CSize>(pair(USLetter, 600), CSize(5100, 6600) )); // // //LETTERR // dpiDct.insert(pair,CSize>(pair(USLetterR, 50), CSize(550, 425) )); // dpiDct.insert(pair,CSize>(pair(USLetterR, 75), CSize(825, 638) )); // dpiDct.insert(pair,CSize>(pair(USLetterR, 100), CSize(1100, 850) )); // dpiDct.insert(pair,CSize>(pair(USLetterR, 150), CSize(1650, 1275) )); // dpiDct.insert(pair,CSize>(pair(USLetterR, 200), CSize(2200, 1700) )); // dpiDct.insert(pair,CSize>(pair(USLetterR, 240), CSize(2640, 2040) )); // dpiDct.insert(pair,CSize>(pair(USLetterR, 300), CSize(3300, 2550) )); // dpiDct.insert(pair,CSize>(pair(USLetterR, 400), CSize(4400, 3400) )); // dpiDct.insert(pair,CSize>(pair(USLetterR, 600), CSize(6600, 5100) )); // // //LETTERR // dpiDct.insert(pair,CSize>(pair(USLegal, 50), CSize(425, 700) )); // dpiDct.insert(pair,CSize>(pair(USLegal, 75), CSize(638, 1050) )); // dpiDct.insert(pair,CSize>(pair(USLegal, 100), CSize(850, 1400) )); // dpiDct.insert(pair,CSize>(pair(USLegal, 150), CSize(1275, 2100) )); // dpiDct.insert(pair,CSize>(pair(USLegal, 200), CSize(1700, 2800) )); // dpiDct.insert(pair,CSize>(pair(USLegal, 240), CSize(2040, 3360) )); // dpiDct.insert(pair,CSize>(pair(USLegal, 300), CSize(2550, 4200) )); // dpiDct.insert(pair,CSize>(pair(USLegal, 400), CSize(3400, 5600) )); // dpiDct.insert(pair,CSize>(pair(USLegal, 600), CSize(5100, 8400) )); //} // ///*根据纸张类型分辨率获取幅面大小*/ // CSize getSize(TwSS paperType, float dpi) //{ // CSize retSize; // map, CSize>::iterator iter; // iter = dpiDct.find(pair(paperType,dpi)); // if(iter != dpiDct.end()){ // retSize = (*iter).second; // return retSize; // } // return CSize(2338, 3307); //} TCHAR* GetUserCustomFilePath(HWND hWin, TCHAR* lpFilePath, TCHAR *lp_head_text ) { if ( lpFilePath == NULL ) { return NULL; } BROWSEINFO bi = {0}; TCHAR szBuffer[MAX_PATH] = {0}; memset(&bi, 0, sizeof(BROWSEINFO)); bi.hwndOwner = hWin; bi.pszDisplayName = GetExistFileDir(lpFilePath); bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_SHAREABLE | BIF_USENEWUI | BIF_RETURNFSANCESTORS ; LPITEMIDLIST pIDList = NULL; LPMALLOC lpMalloc = NULL; //m_pUI_INI->GetMessageBoxStr(szBuffer, sizeof(szBuffer), 1041); //bi.lpszTitle = szBuffer;//1041=请选择文件存储路径 bi.lpszTitle = lp_head_text;//TEXT("请选择新建文件夹"); bi.lpfn = (BFFCALLBACK)BrowserCallbackProc; //回调函数 bi.lParam = (LPARAM)lpFilePath; //回调函数的使用的参数,用来设定默认路径 pIDList = SHBrowseForFolder(&bi); if ( pIDList != NULL ) { SHGetPathFromIDList(pIDList, lpFilePath); } if ( SHGetMalloc( &lpMalloc ) ) { return NULL; //释放内存    } if ( pIDList == NULL ) { return NULL; //释放内存 } lpMalloc->Free(pIDList); lpMalloc->Release(); pIDList = NULL; lpMalloc = NULL; //_tcscpy(lpFilePath, szBuffer2); return lpFilePath; } TCHAR* GetCurExeFilePath(HINSTANCE hInstance, TCHAR* lpPath, DWORD dwSize) { INT nRet = 0x0L; TCHAR *p = NULL; if ( lpPath == NULL || dwSize == 0 ) { return NULL; } nRet = GetModuleFileName(hInstance, lpPath, dwSize); if (nRet > 0) { p = _tcsrchr(lpPath, TEXT('\\')); if ( p != NULL ) { *(p+1) = TEXT('\0'); } else { return NULL; } } else { return NULL; } return lpPath; } TCHAR* GetExistFileDir(TCHAR* p_file_path) { //WIN32_FIND_DATA wfd = {0}; //LPSTR p_test = NULL; //HANDLE hFindFile = INVALID_HANDLE_VALUE; //if ( p_file_path == NULL ) // return NULL; // //hFindFile = FindFirstFile(p_file_path, &wfd); //if (hFindFile != NULL) //{ // FindClose(hFindFile); // hFindFile= INVALID_HANDLE_VALUE; //} //if ( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) //{ // return p_file_path; //} // //p_test = _tcsrchr(p_file_path, '\\'); //if ( p_test != NULL ) //{ // *p_test = 0; // return GetExistFileDir(p_file_path); //} //else //{ return NULL; //} } DWORD CALLBACK BrowserCallbackProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case BFFM_INITIALIZED: //LPARAM(TEXT("D:\\test_adf_project")) SendMessage(hWnd, BFFM_SETSELECTION, TRUE, lParam); //lpData就是上一个函数的 info.lParam ,也就是默认路径 break; default: break; } return 0; } BOOL CheckAndCreateFileDir(TCHAR* p_file_path, BOOL flg) { TCHAR szTmp[MAX_PATH] = {0}; WIN32_FIND_DATA wfd = {0}; INT len = 0; INT pos = 0; BOOL bFlg = FALSE; HANDLE hFindFile = INVALID_HANDLE_VALUE; if ( p_file_path == NULL ) return FALSE; if ( *p_file_path >= 'a' && *p_file_path <= 'z' || *p_file_path >= 'A' && *p_file_path <= 'Z') { if ( *(p_file_path+1) != ':' && *(p_file_path+2) != '\\') { return FALSE; } } //if ( _access(p_file_path, 0) == 0) //{ // return TRUE; //} if ( !flg ) return FALSE; if ( CreateDirectory(p_file_path, NULL) ) return TRUE; _tcscpy(szTmp, p_file_path); len = (INT)_tcslen(szTmp); bFlg = FALSE; while(len) { if ( *(szTmp+len-1) == '\\' ) { bFlg = TRUE; break; } len--; } if ( bFlg ) { *(szTmp+len-1) = 0; CheckAndCreateFileDir(szTmp, flg); return CreateDirectory(p_file_path, NULL); } else return FALSE; } BOOL CheckDiskFreeBitM(HWND hWin, TCHAR *p_disk_name, DWORD dw_min_bit_m) { //TCHAR *p = NULL; //TCHAR sz_root_path_name[MAX_PATH + 1] = {0}; //INT len = 0; // //DWORD dwTotalDiskSpace = 0; //DWORD dwFreeDiskSpace = 0; //DWORD dwUsedDiskSpace = 0; //ULARGE_INTEGER uiFreeBytesAvailableToCaller; //ULARGE_INTEGER uiTotalNumberOfBytes; //ULARGE_INTEGER uiTotalNumberOfFreeBytes; //UINT un_ret = 0; //if ( p_disk_name == NULL ) // return FALSE; //len = _tcslen(p_disk_name); //if ( len > MAX_PATH ) //{ // len = MAX_PATH; //} //memcpy(sz_root_path_name, p_disk_name, (size_t)len); //p = _tcsstr(sz_root_path_name, "\\"); //if ( p == NULL ) //{ // if ( len == 2 ) // { // if ( !((sz_root_path_name[0] >= 'A' && sz_root_path_name[0] <= 'Z' || sz_root_path_name[0] >= 'a' && sz_root_path_name[0] <= 'z') && sz_root_path_name[1]== ':') ) // return FALSE; // } // else // return FALSE; //} //if ( p != NULL ) // *(p+1) = 0; //un_ret = GetDriveType(sz_root_path_name); //if ( un_ret == 0 || un_ret == 1) //{ // return FALSE; //} // //if(GetDiskFreeSpaceEx(sz_root_path_name, &uiFreeBytesAvailableToCaller, &uiTotalNumberOfBytes, &uiTotalNumberOfFreeBytes)) //{ // //dwTotalDiskSpace = (DWORD)(uiTotalNumberOfBytes.QuadPart / 1024 / 1024); // dwFreeDiskSpace = (DWORD)(uiFreeBytesAvailableToCaller.QuadPart >> 20); // //dwUsedDiskSpace = dwTotalDiskSpace - dwFreeDiskSpace; // if ( dwFreeDiskSpace < dw_min_bit_m ) // { // //ShowErrorStr(hWin, 1101);//1101=磁盘空间不足 // MyMessageBox( TEXT("磁盘分区可用空间不足"), 0, MB_ICONWARNING); // return FALSE; // } //} //else //{ // MyMessageBox( TEXT("磁盘分区可用空间不足"), 0, MB_ICONWARNING); // //GetErrorMessage(NULL, 0, FALSE); // return FALSE; //} //ShowErrorStr(hWin, 1101);//1101=磁盘空间不足 //return FALSE; return TRUE; } HBITMAP SetButtonStaticBkBmp(HINSTANCE hInst, HWND hWin, UINT id, UINT iamge_id) { UINT ctr_msg = 0; UINT str_iamge_type = 0; HBITMAP hBitmap = NULL; HBITMAP hOldBitmap = NULL; //BS_ICON BS_BITMAP //SS_BITMAP|SS_CENTERIMAGE SS_ICON LONG ctr_s = 0; ctr_s = GetWindowLong(GetDlgItem(hWin, id), GWL_STYLE); ctr_msg = STM_SETIMAGE; ctr_s |= SS_BITMAP | SS_CENTERIMAGE | SS_RIGHT; hBitmap = LoadBitmap(hInst, MAKEINTRESOURCE(iamge_id)); if ( hBitmap == NULL ) { return NULL; } SetWindowLong(GetDlgItem(hWin, id), GWL_STYLE, ctr_s); hOldBitmap = (HBITMAP)SendDlgItemMessage(hWin, id, ctr_msg, IMAGE_BITMAP, (LPARAM)hBitmap); if ( hOldBitmap != NULL ) { DeleteObject(hOldBitmap); hOldBitmap = NULL; } DeleteObject(hBitmap); hBitmap = NULL; return hBitmap; } VOID FreeTwainFileListMem() { if ( g_st_twain_bmp_info.p_wifl != NULL ) { free(g_st_twain_bmp_info.p_wifl); g_st_twain_bmp_info.p_wifl = NULL; } //if ( g_st_twain_bmp_info.st_bmp_info.p_image_data != NULL ) //{ // free(g_st_twain_bmp_info.st_bmp_info.p_image_data); // g_st_twain_bmp_info.st_bmp_info.p_image_data = NULL; //} //memset(&g_st_twain_bmp_info, 0, sizeof(TWAIN_IMAGE_DATA_INFO)); } BOOL MallocTwainFileListMem() { if ( g_st_twain_bmp_info.p_wifl == NULL ) { memset(&g_st_twain_bmp_info, 0, sizeof(TWAIN_IMAGE_DATA_INFO)); } else if ( g_st_twain_bmp_info.n_wifl_count != 0 && g_st_twain_bmp_info.p_wifl == NULL ) { memset(&g_st_twain_bmp_info, 0, sizeof(TWAIN_IMAGE_DATA_INFO)); } if ( g_st_twain_bmp_info.n_wifl_cur_count +3 > g_st_twain_bmp_info.n_wifl_count) { if ( SHGetSpecialFolderPath(NULL, g_st_twain_bmp_info.sz_path_dir, CSIDL_LOCAL_APPDATA, TRUE) ) { INT len = _tcslen(g_st_twain_bmp_info.sz_path_dir); if ( len > 0 ) { //if ( g_st_twain_bmp_info.sz_path_dir[len -1] != '\\' ) // _tcscat(g_st_twain_bmp_info.sz_path_dir, TEXT("\\")); //_tcscat(g_st_twain_bmp_info.sz_path_dir, TWAIN_DATA_PATH); //CheckAndCreateFileDir(g_st_twain_bmp_info.sz_path_dir, TRUE); } } else return FALSE; if ( g_st_twain_bmp_info.p_wifl == NULL ) { g_st_twain_bmp_info.p_wifl = (PTWAIN_IMAGE_FILE_LIST)malloc(sizeof(TWAIN_IMAGE_FILE_LIST)* (g_st_twain_bmp_info.n_wifl_count + 20)); if ( g_st_twain_bmp_info.p_wifl != NULL ) { memset(g_st_twain_bmp_info.p_wifl, 0, sizeof(TWAIN_IMAGE_FILE_LIST)* (g_st_twain_bmp_info.n_wifl_count + 20)); g_st_twain_bmp_info.n_wifl_count += 20; } else return FALSE; } else { PTWAIN_IMAGE_FILE_LIST p_wifl = (PTWAIN_IMAGE_FILE_LIST)malloc(sizeof(TWAIN_IMAGE_FILE_LIST)* (g_st_twain_bmp_info.n_wifl_count + 20)); if ( g_st_twain_bmp_info.p_wifl != NULL ) { memset(p_wifl, 0, sizeof(TWAIN_IMAGE_FILE_LIST)* (g_st_twain_bmp_info.n_wifl_count + 20)); memcpy(p_wifl, g_st_twain_bmp_info.p_wifl, sizeof(TWAIN_IMAGE_FILE_LIST)* g_st_twain_bmp_info.n_wifl_cur_count ); g_st_twain_bmp_info.n_wifl_count += 20; free(g_st_twain_bmp_info.p_wifl); g_st_twain_bmp_info.p_wifl = p_wifl; p_wifl = NULL; } else return FALSE; } } return TRUE; } BOOL WriteTwianImageData(TCHAR *p_file_path, PBYTE p_data, DWORD dw_size) { DWORD dw_write_size = 0; if ( p_file_path == NULL || p_data == NULL ) return FALSE; if ( _msize(p_data) < dw_size ) return FALSE; DeleteFile(p_file_path); HANDLE h_file = CreateFile(p_file_path, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, NULL, NULL); if ( h_file == INVALID_HANDLE_VALUE ) { return FALSE; } BOOL b_flg = WriteFile(h_file, p_data, dw_size, &dw_write_size,0); if ( !b_flg || dw_size != dw_write_size ) { b_flg = FALSE; } CloseHandle(h_file); h_file = INVALID_HANDLE_VALUE; if ( !b_flg ) { DeleteFile(p_file_path); } return TRUE; } DWORD ReadTwianImageData(TCHAR *p_file_path) { if ( p_file_path == NULL ) return 0; DWORD dw_size = 0; HANDLE h_file = CreateFile(p_file_path, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL); if ( h_file == INVALID_HANDLE_VALUE ) { return 0; } dw_size = GetFileSize(h_file, 0); if ( dw_size == 0 ) { CloseHandle(h_file); return 0; } //if ( g_st_twain_bmp_info.st_bmp_info.p_image_data != NULL ) //{ // free(g_st_twain_bmp_info.st_bmp_info.p_image_data); // g_st_twain_bmp_info.st_bmp_info.p_image_data = NULL; //} //DWORD dw_read_size = 0; //g_st_twain_bmp_info.st_bmp_info.p_image_data = (PBYTE)malloc(dw_size); //if ( g_st_twain_bmp_info.st_bmp_info.p_image_data == NULL ) //{ // CloseHandle(h_file); // return 0; //} //BOOL b_flg = ReadFile(h_file, ////g_st_twain_bmp_info.st_bmp_info.p_image_data, dw_size, /&dw_read_size,/ 0); ////CloseHandle(h_file); //h_file = INVALID_HANDLE_VALUE; //if ( !b_flg || dw_size != dw_read_size) //{ // //free(g_st_twain_bmp_info.st_bmp_info.p_image_data); // dw_size = 0; //} //else // DeleteFile(p_file_path); return dw_size; } std::string UtfToString(std::string strValue) { int nwLen = ::MultiByteToWideChar(CP_ACP, 0, strValue.c_str(), -1, NULL, 0); wchar_t * pwBuf = new wchar_t[nwLen + 1];//加上末尾'\0' ZeroMemory(pwBuf, nwLen * 2 + 2); ::MultiByteToWideChar(CP_ACP, 0, strValue.c_str(), strValue.length(), pwBuf, nwLen); int nLen = ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, NULL, NULL, NULL); char * pBuf = new char[nLen + 1]; ZeroMemory(pBuf, nLen + 1); ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL); std::string retStr(pBuf); delete []pwBuf; delete []pBuf; pwBuf = NULL; pBuf = NULL; return retStr; } std::string StringToUtf(std::string strValue) { int nwLen = MultiByteToWideChar(CP_UTF8, 0, strValue.c_str(), -1, NULL, 0); wchar_t * pwBuf = new wchar_t[nwLen + 1];//加上末尾'\0' memset(pwBuf, 0, nwLen * 2 + 2); MultiByteToWideChar(CP_UTF8, 0, strValue.c_str(), strValue.length(), pwBuf, nwLen); int nLen = WideCharToMultiByte(CP_ACP, 0, pwBuf, -1, NULL, NULL, NULL, NULL); char * pBuf = new char[nLen + 1]; memset(pBuf, 0, nLen + 1); WideCharToMultiByte(CP_ACP, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL); std::string retStr = pBuf; delete []pBuf; delete []pwBuf; return retStr; } DWORD MyMessageBox(TCHAR *p_str, TCHAR *p_str2, DWORD dw_id) { if ( p_str2 == NULL ) { return MessageBox(g_hwnd_dlg, p_str, TEXT("test")/*g_p_cur_supper_sdti->sz_type_str*/, dw_id); } else { return MessageBox(g_hwnd_dlg, p_str, p_str2, dw_id); } } /* CTwainMutex g_sys_mutex; BOOL g_not_user_sineng_dev = true; BOOL g_InitSysMutexRun() { //return g_sys_mutex.InitRunMutexId(COMPANY_NAME PRODUCT_NAME); return true; //return g_sys_mutex.CreatTwainMutex(SCANNERNAME); } BOOL g_InitSysMutexScanRun(DWORD dwPid, DWORD dwUid) { //return g_sys_mutex.InitScanRunMutexId(COMPANY_NAME PRODUCT_NAME, dwPid, dwUid); return true; } BOOL g_CloseSysMutexRun() { //return g_sys_mutex.CloseAllScnDocA3Mutex(); return g_sys_mutex.CloseTwainMutex(); } BOOL g_CloseOneSysMutexRun() { //return g_sys_mutex.CloseScnDocA3Mutex((SCN_MUTEX_TYPE)smt); return true; //return g_sys_mutex.CloseTwainMutex(); } BOOL g_CheckSysMutex() { //return g_sys_mutex.CheckScnDocA3Mutex((SCN_MUTEX_TYPE)smt); return true; return g_sys_mutex.CheckExistTwainMutex(SCANNERNAME); } BOOL g_CreateSysMutex() { //return g_sys_mutex.CreateScnDocA3Mutex((SCN_MUTEX_TYPE)smt); //return true; return g_sys_mutex.CreatTwainMutex(SCANNERNAME); } RGBQUAD g_default_map[256] = {0}; BOOL ReadDefaultMap() { int i = 0; for ( i = 0; i < 256; i++ ) { g_default_map[i].rgbBlue = g_default_map[i].rgbGreen = g_default_map[i].rgbRed = i; } TCHAR sz_path[MAX_PATH] = {0}; bool nRet = GetModuleFileName(AfxGetApp()->m_hInstance, sz_path, sizeof(sz_path)); if (nRet > 0) { TCHAR *p = _tcsrchr(sz_path, TEXT('\\')); if ( p != NULL ) { *(p+1) = TEXT('\0'); } else { return TRUE; } } _tcscat(sz_path, TEXT("default.map")); HANDLE hfile = CreateFile(sz_path, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, NULL, NULL); if ( hfile != INVALID_HANDLE_VALUE ) { DWORD dw_write = 0; ReadFile(hfile, g_default_map, sizeof(g_default_map), &dw_write, NULL); if ( dw_write != sizeof(g_default_map) ) { nRet = false; } CloseHandle(hfile); } return nRet; } float GetContrast(int level) { float ret=0.0; switch (level) { case -3: ret=-1000.0; break; case -2: ret=-666.0; break; case -1: ret=-333.0; break; case 1: ret=333.0; break; case 2: ret=666.0; break; case 3: ret=1000.0; break; } return ret; } */ VOID XdPrint(_TCHAR* format, ...) { va_list args; va_start(args, format); _TCHAR buf[256]; _vstprintf(buf, format, args); OutputDebugString(buf); va_end(args); }