Example #1
0
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();    
}
Example #2
0
void CCalcFrameDlg::OnBnClickedBtDengyu()
{
	GetCalc();

	m_bPressNumber = false;

	InsertRecord(en_Record_Equal);

	m_strButtonOld = m_strOutPut;
}
Example #3
0
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);
}
Example #4
0
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);	
}
Example #5
0
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);
}
Example #6
0
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);
}
Example #7
0
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);
}
Example #8
0
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;
}
Example #9
0
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;
}
Example #10
0
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;
}
Example #11
0
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);	
}
Example #12
0
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;
}
Example #13
0
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则程序结束*/
      }
   }
}
Example #15
0
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();
}
Example #16
0
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, &currentResult) != 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;
}
Example #17
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);
}
Example #18
0
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);
}