void CProcessModuleList::Walk() { if (0 == m_dwPID) { return; } //禁止重绘 SetRedraw(FALSE); ////////////////////////////////////////////////////////////////////////// //清理性工作 DeleteAllItems(); m_nTotal = 0; ////////////////////////////////////////////////////////////////////////// //对进程模块进行遍历,并插入到list view中 HANDLE hProcessSnap = NULL; BOOL bRet = FALSE; MODULEENTRY32 me32 = {0}; CString str; hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, m_dwPID); if (INVALID_HANDLE_VALUE == hProcessSnap) { return; } me32.dwSize = sizeof(MODULEENTRY32); bRet = Module32First(hProcessSnap, &me32); if (!bRet) { //不要忘记对句柄的处理 goto ERROR_CLEAN; } do { str.Format("%s|0x%p|0x%p", me32.szExePath, me32.modBaseAddr, me32.modBaseSize); InsertRecord(str); m_nTotal++; } while (Module32Next(hProcessSnap, &me32)); ERROR_CLEAN: CloseHandle(hProcessSnap); hProcessSnap = NULL; //开启重绘 SetRedraw(TRUE); AutoSize(); }
void CCalcFrameDlg::OnBnClickedBtDengyu() { GetCalc(); m_bPressNumber = false; InsertRecord(en_Record_Equal); m_strButtonOld = m_strOutPut; }
void CCalcFrameDlg::OnBnClickedBtShicifang() { UpdateData(TRUE); InsertRecord(en_Record_PowTen); m_strOutPut.Format(TEXT("%.15lf"),pow(10.0,strtod(m_strOutPut,NULL))); //去除后面没用的0 CheckData(m_strOutPut); UpdateData(FALSE); }
void CCalcFrameDlg::OnBnClickedBtLn() { UpdateData(TRUE); InsertRecord(en_Record_ln); m_strOutPut.Format(TEXT("%.15lf"),log(strtod(m_strOutPut,NULL))/log(2.718281828)); //去除后面没用的0 CheckData(m_strOutPut); UpdateData(FALSE); }
void CCalcFrameDlg::OnBnClickedBtKailifang() { UpdateData(TRUE); InsertRecord(en_Record_Cuberoot); m_strOutPut.Format(TEXT("%.15lf"),pow(strtod(m_strOutPut,NULL),1/3.0)); //去除后面没用的0 CheckData(m_strOutPut); UpdateData(FALSE); }
void CCalcFrameDlg::OnBnClickedBtInt() { UpdateData(TRUE); InsertRecord(en_Record_Int); int nIndex = m_strOutPut.Find('.'); if(nIndex!= -1) m_strOutPut = m_strOutPut.Left(nIndex); UpdateData(FALSE); }
void CCalcFrameDlg::OnBnClickedBtDaoshu() { UpdateData(TRUE); InsertRecord(en_Record_Reciproc); m_strOutPut.Format(TEXT("%.15lf"),1/strtod(m_strOutPut,NULL)); //去除后面没用的0 CheckData(m_strOutPut); UpdateData(FALSE); }
stRecord * CreateRecord(uint64 ui64ID) { stRecord * pstNewRecord = NULL; pstNewRecord = malloc(sizeof(stRecord)); if(NULL != pstNewRecord) { /*Create a node and add to the link list*/ pstNewRecord->ui64RecNum = ui64ID; InsertRecord(pstNewRecord); pstNewRecord->ui32ContentFull = 0; } return pstNewRecord; }
void CCalcFrameDlg::OnBnClickedBtCheng() { if( m_bPressNumber ) m_strButtonOld = m_strOutPut; if( !m_bIsBaseCalc ) GetCalc(); m_strResultOld = m_strOutPut; m_enCalcType = en_Mul; InsertRecord(en_Record_Mul); m_bPressNumber = false; m_bPressEnable = true; }
void CCalcFrameDlg::OnBnClickedBtKailifangn() { if( m_bPressNumber ) m_strButtonOld = m_strOutPut; GetCalc(); m_strResultOld = m_strOutPut; m_enCalcType = en_Yroot; InsertRecord(en_Record_Pow); m_bPressNumber = false; }
void CCalcFrameDlg::OnBnClickedBtTanh() { UpdateData(TRUE); InsertRecord(en_Record_Tanh); if ( IsDlgButtonChecked(IDC_JIAODU) == BST_CHECKED ) { m_strOutPut.Format(TEXT("%.15lf"),tanh(strtod(m_strOutPut,NULL))); } else { m_strOutPut.Format(TEXT("%.15lf"),tanh(180*strtod(m_strOutPut,NULL)/PI)); } //去除后面没用的0 CheckData(m_strOutPut); UpdateData(FALSE); }
void CCalcFrameDlg::OnBnClickedBtJia() { //保存之前按键数字的记录,用来计算,注意一点只是用户输出的数字才能在这里赋值, //计算出来的结果不能显示在记录里面 if( m_bPressNumber ) m_strButtonOld = m_strOutPut; //因为加法具有等于的作用,所以每次执行这个操作的时候,先计算一下值 //m_bIsBaseCalc的作用,防止用户来回切换+-*/运算,同时可以去修改记录里面的运算符号 if( !m_bIsBaseCalc ) GetCalc(); //先将之前的输出结果保存起来 m_strResultOld = m_strOutPut; m_enCalcType = en_Add; InsertRecord(en_Record_Add); m_bPressNumber = false; m_bPressEnable = true; m_bIsBaseCalc = true; }
void CDBIOThread::Run() { m_bQuit = false; while (!m_bQuit) { DBCmd cmd = GetDBCmd(); switch (cmd.cmdType) { case INSERT_RECORD: InsertRecord(cmd); break; case DELETE_RECORD: DeleteRecord(cmd); break; case GET_RECORD: GetFirstRecord(cmd); break; default: break; } usleep(100*1000); } }
void main() { int i; char s[128]; struct ADDRESS address[MAX];/*定义结构体数组*/ int num;/*保存记录数*/ clrscr(); while(1) { clrscr(); printf("********************MENU*******************\n\n"); printf("| 0: Input records |\n"); printf("| 1: List records in the file |\n"); printf("| 2: Delete a record |\n"); printf("| 3: Insert a record to the list |\n"); printf("| 4: Save records to the file |\n"); printf("| 5: Load records from the file |\n"); printf("| 6: Quit |\n\n"); printf("*******************************************\n"); do{ printf("\n Input your choice(0~6):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/ i=atoi(s); /*将输入的字符串转化为整型数*/ }while(i<0||i>6); /*选择项不在0~11之间重输*/ switch(i) /*调用主菜单函数,返回值整数作开关语句的条件*/ { case 0:num=InputRecord(address);break;/*输入记录*/ case 1:ListRecord(address,num);break; /*显示全部记录*/ case 2:num=DeleteRecord(address,num);break; /*删除记录*/ case 3:num=InsertRecord(address,num); break; /*插入记录*/ case 4:SaveRecord(address,num);break; /*保存文件*/ case 5:num=LoadRecord(address); break; /*读文件*/ case 6:exit(0); /*如返回值为11则程序结束*/ } } }
void CProcessThreadList::Walk() { if (0 == m_dwPID) { return; } //禁止重绘 SetRedraw(FALSE); ////////////////////////////////////////////////////////////////////////// //清理性工作 DeleteAllItems(); m_nTotal = 0; ////////////////////////////////////////////////////////////////////////// //对进程进行遍历,并插入到list view中 HANDLE hProcessSnap = NULL; BOOL bRet = FALSE; THREADENTRY32 te32 = {0}; CString str; /* th32ProcessID [in] Specifies the process identifier. This parameter can be zero to indicate the current process. This parameter is used when the TH32CS_SNAPHEAPLIST or TH32CS_SNAPMODULE value is specified. Otherwise, it is ignored. */ hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if (INVALID_HANDLE_VALUE == hProcessSnap) { return; } te32.dwSize = sizeof(THREADENTRY32); bRet = Thread32First(hProcessSnap, &te32); if (!bRet) { //不要忘记对句柄的处理 goto ERROR_CLEAN; } do { if (te32.th32OwnerProcessID != m_dwPID) { continue; } str.Format("%d|-|-|-|", te32.th32ThreadID, te32.tpBasePri); InsertRecord(str); m_nTotal++; } while (Thread32Next(hProcessSnap, &te32)); ERROR_CLEAN: CloseHandle(hProcessSnap); hProcessSnap = NULL; //开启重绘 SetRedraw(TRUE); AutoSize(); }
int main(int argc, char *argv[]) { int i, j; int record_count = 400; int range = record_count/10; uint8_t len = 5; AttributeType type[len]; const char hans[] = "hans"; Index *index; Iterator **iterator = (Iterator**) malloc(sizeof(Iterator*)); Transaction *t; Record recs[record_count]; Key keys[record_count]; Key minkey; Key maxkey; Record *currentResult; Attribute attr; Block blocks[record_count]; time_t tm; for (j = 0; j < record_count; j++) { blocks[j].size = 5; blocks[j].data = malloc(5); sprintf((char*)blocks[j].data, "%i", j); attr.type = kInt; keys[j].value = (Attribute**) malloc(len*sizeof(Attribute*)); keys[j].attribute_count = len; // printf("Key number %i: \n", j); for (i = 0; i < len; i++) { type[i] = kInt; keys[j].value[i] = (Attribute*) malloc(sizeof(Attribute)); keys[j].value[i]->type = kInt; keys[j].value[i]->int_value = randInt(range); // printf("key.value[%i] = %ld \n", i, keys[j].value[i]->int_value); } // printf("\n"); recs[j].key = keys[j]; recs[j].payload = blocks[j]; } // generate min and max keys minkey.value = (Attribute**) malloc(len*sizeof(Attribute*)); minkey.attribute_count = len; maxkey.value = (Attribute**) malloc(len*sizeof(Attribute*)); maxkey.attribute_count = len; for (i = 0; i < len; i++) { minkey.value[i] = (Attribute*) malloc(sizeof(Attribute)); minkey.value[i]->type = kInt; minkey.value[i]->int_value = 0.3*range; maxkey.value[i] = (Attribute*) malloc(sizeof(Attribute)); maxkey.value[i]->type = kInt; maxkey.value[i]->int_value = 0.8*range; } printf("Done with generating data. \n"); tm = time(NULL); CreateIndex(hans, len, type); // len OpenIndex(hans, &index); BeginTransaction(&t); for (i = 0; i < record_count; i++) { //record_count InsertRecord(t, index, recs+i); if (i % 1000 == 0) printf("i = %i / %i \n", i, record_count); } printf("finished inserting, took %is \n", time(NULL)-tm); tm = time(NULL); // for (i = 0; i < record_count; i+=2) { // record_count // if (i == 398) { // printf("deleting record %i \n", i); // } DeleteRecord(t, index, recs+4, 0); // } // if (DeleteRecord(t, index, recs+398, 0) != kErrorNotFound) { // printf(";_; \n "); // } printf("deleted half of the records, took %is \n", time(NULL)-tm); GetRecords(t, index, minkey, maxkey, iterator); while (GetNext(*iterator, ¤tResult) != kErrorNotFound) { printf("%i \t(%i\t%i\t%i\t%i\t%i)\t%s \n", currentResult->key.value[0]->int_value, currentResult->key.value[0]->int_value, currentResult->key.value[1]->int_value, currentResult->key.value[2]->int_value, currentResult->key.value[3]->int_value, currentResult->key.value[4]->int_value, currentResult->payload.data); } printf("just to be sure: \n"); for (i = 0; i < record_count; i++) { for (j = 0; j < len; j++) { // len // if (!(compareKeys(minkey, keys[i], j, true) <= 0 && compareKeys(keys[i], maxkey, j, true) < 0)) { if (!((minkey.value[j] == 0 || compareKeys(minkey, keys[i], j, true) <= 0) && (maxkey.value[j] == 0 || compareKeys(keys[i], maxkey, j, true) < 0))) { break; } } if (j == len) { // len printf("so: %i \n", keys[i].value[0]->int_value); } } // printf("committing \n"); CommitTransaction(&t); // printf("closing \n"); CloseIndex(&index); // printf("deleting \n"); DeleteIndex(hans); // printf("should be zero: %i \n", all_indices["hans"]); return 0; }
void CCalcFrameDlg::OnBnClickedBtJiecheng() { UpdateData(TRUE); InsertRecord(en_Record_fact); if ( (m_strOutPut.Find('.') != -1) || (m_strOutPut.Find('-') != -1) ) { m_strOutPut = TEXT("无效输入"); return; } int nInput = atoi(m_strOutPut); if ( nInput*5 > 10000 ) { m_strOutPut = TEXT("溢出"); UpdateData(FALSE); return; } int *pArray = new int[nInput*5]; for (int i=0;i<nInput*5;i++) pArray[i] = 1; int i=0,c=0,m=0; for(;nInput;nInput--) { for(c=i=0;i<=m;i++) pArray[i]=(c+=pArray[i]*nInput)%10,c/=10; while(c)pArray[++m]=c%10,c/=10; } m_strOutPut = TEXT(""); int nValue=0; //数字大于28位,用科学表示法显示 if( m>=32 ) { for (int i=0;i<=32;i++) { nValue = pArray[m--]; m_strOutPut.Insert(i,ITOA(nValue)); } m_strOutPut.Insert(1,'.'); m_strOutPut+=TEXT("e+"); CString str; str.Format(TEXT("%d"),m+33); m_strOutPut+=str; } else { for(int nIndex=0;m>=0;nIndex++) { nValue = pArray[m--]; m_strOutPut.Insert(nIndex,ITOA(nValue)); } } SafeDeleteArray(pArray); UpdateData(FALSE); }
BOOL CCalcFrameDlg::OnCommand(WPARAM wParam, LPARAM lParam) { UpdateData(TRUE); switch ( LOWORD(wParam) ) { case ID_32771: //标准型 { CMenu *pMenu = GetMenu()->GetSubMenu(0); if( pMenu != NULL ) { pMenu->CheckMenuItem(ID_32771,MF_CHECKED); pMenu->CheckMenuItem(ID_32772,MF_UNCHECKED); } OnBnClickedBtC(); if( m_enWindowStyle == en_Normal ) return TRUE; m_enWindowStyle = en_Normal; PostMessage(WM_SIZE); } break; case ID_32772: //科学型 { CMenu *pMenu = GetMenu()->GetSubMenu(0); if( pMenu != NULL ) { pMenu->CheckMenuItem(ID_32772,MF_CHECKED); pMenu->CheckMenuItem(ID_32771,MF_UNCHECKED); } OnBnClickedBtC(); if( m_enWindowStyle == en_Science ) return TRUE; m_enWindowStyle = en_Science; PostMessage(WM_SIZE); } break; case ID_32773: //最前显示 { m_bFront = !m_bFront; GetMenu()->GetSubMenu(0)->CheckMenuItem(ID_32773,m_bFront?MF_CHECKED:MF_UNCHECKED); SetWindowPos(m_bFront? &wndTopMost : &wndNoTopMost,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE); } break; case ID_32775: { //打开剪切板 if (OpenClipboard()==FALSE) return TRUE; if (EmptyClipboard()==FALSE) { CloseClipboard(); return TRUE; } //复制数据 HANDLE hData=GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,m_strOutPut.GetLength()+1); if (hData==NULL) { CloseClipboard(); return TRUE; } LPTSTR szMemName=(LPTSTR)GlobalLock(hData); lstrcpy(szMemName,m_strOutPut); SetClipboardData(CF_TEXT,hData); GlobalUnlock(hData); CloseClipboard(); break; } case ID_32776: { //判断剪贴板的数据格式是否可以处理。 if (!IsClipboardFormatAvailable(CF_TEXT)) return TRUE; //打开剪贴板。 if (!OpenClipboard()) return TRUE; //获取UNICODE的数据。 HGLOBAL hMem = GetClipboardData(CF_TEXT); if (hMem != NULL) { LPTSTR lpStr = (LPTSTR)GlobalLock(hMem); if (lpStr != NULL) { for (int i=0;i<strlen(lpStr);i++) { BYTE bTemp = lpStr[i]-'0'; if(bTemp<0 || bTemp>9) { AfxMessageBox(TEXT("黏贴的字符不符合标准!"),MB_ICONSTOP); return TRUE; } } m_strOutPut = lpStr; //释放锁内存。 GlobalUnlock(hMem); } } //关闭剪贴板。 CloseClipboard(); } break; case ID_ABOUTBOX: //关于窗口 { CAboutDlg dlgAbout; dlgAbout.DoModal(); } break; case IDC_BT_0: case IDC_BT_1: case IDC_BT_2: case IDC_BT_3: case IDC_BT_4: case IDC_BT_5: case IDC_BT_6: case IDC_BT_7: case IDC_BT_8: case IDC_BT_9: { UpdateData(TRUE); if ( !m_bPressEnable ) break; CString str; str.Format(TEXT("%d"),LOWORD(wParam)-IDC_BT_0); //之前是用+-*/做的运算结果,那么显示的结果在这里清除 if ( !m_bPressNumber ) { m_strOutPut = str; m_bPressNumber = true; } else { if ( (m_strOutPut.GetAt(0) == '0') && (m_strOutPut.GetAt(1) != '.')) m_strOutPut = str; else m_strOutPut+=str; } m_bIsBaseCalc = false; } break; case IDC_BT_DIAN: { bool bInsertPoint = true; m_bIsBaseCalc = false; //查询输入的字符串中是否有小数点 for(int i=0;i<m_strOutPut.GetLength();i++) { if( m_strOutPut.GetAt(i) == '.') { bInsertPoint = false; break;; } } if( bInsertPoint ) m_strOutPut+=TEXT("."); } break; case IDC_BT_SAVE: //存储 { m_ListSave.AddString(m_strOutPut); GetDlgItem(IDC_STATIC_M)->ShowWindow(SW_SHOW); if( m_bShowSave == false ) { m_bShowSave = true; CRect rcClient; GetClientRect(&rcClient); RectifyControl(rcClient.Width(),rcClient.Height()); } } break; case IDC_BT_CE: { if( !m_bPressNumber ) break; m_strOutPut = TEXT("0"); } break; case IDC_BT_LEFT: //退位 { if( !m_bPressNumber ) break; m_strOutPut = m_strOutPut.Left(m_strOutPut.GetLength()-1); if ( m_strOutPut.GetLength() == 0 ) { m_strOutPut=TEXT("0"); } } break; case IDC_BT_FUSHU: //负数符号 { if( m_strOutPut.GetAt(0) == '-' ) m_strOutPut = m_strOutPut.Right(m_strOutPut.GetLength()-1); else m_strOutPut.Insert(0,'-'); } break; case IDC_BT_KAIFANG: { InsertRecord(en_Record_Sqrt); m_strOutPut.Format(TEXT("%.15lf"),sqrt(strtod(m_strOutPut,NULL))); //去除后面没用的0 CheckData(m_strOutPut); m_bPressEnable = false; } break; } UpdateData(FALSE); return CDialog::OnCommand(wParam, lParam); }