c# c++-C++代码转化为C#代码 求高手指点,写出注释谢谢啊

问题描述

C++代码转化为C#代码 求高手指点,写出注释谢谢啊

// scDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "sc.h"
#include "scDlg.h"
#include ".scdlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

// CscDlg 对话框

CscDlg::CscDlg(CWnd* pParent /*=NULL*/)
: CDialog(CscDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_strXin="a!dAA1$%^&IKMJNSD98574PO";
m_llNumber1=13693;
m_llNumber2=113;
}

void CscDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_COMBO1, m_GameNumber);

CString strTitle;
strTitle.Format("数字3趣味游戏上分码计算");
SetWindowText(strTitle);

((CEdit*)GetDlgItem(IDC_EDIT_RANDOM))->SetLimitText(15);
((CEdit*)GetDlgItem(IDC_EDIT_ADDSCORE))->SetLimitText(7);
((CEdit*)GetDlgItem(IDC_EDIT_ADDGAME))->SetLimitText(5);

}

BEGIN_MESSAGE_MAP(CscDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
ON_CBN_SELCHANGE(IDC_COMBO1, OnCbnSelchangeCombo1)
END_MESSAGE_MAP()

// CscDlg 消息处理程序

BOOL CscDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// 将“关于”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
    CString strAboutMenu;
    strAboutMenu.LoadString(IDS_ABOUTBOX);
    if (!strAboutMenu.IsEmpty())
    {
        pSysMenu->AppendMenu(MF_SEPARATOR);
        //pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
}

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
//  执行此操作
SetIcon(m_hIcon, TRUE);         // 设置大图标
SetIcon(m_hIcon, FALSE);        // 设置小图标

InitGameName();

CFont * Font;
Font = new CFont;
Font->CreateFont(
        16,                           //   nHeight
        0,                            //   nWidth
        0,                            //   nEscapement
        0,                            //   nOrientation
        FW_BOLD,                      //   nWeight
        FALSE,                        //   bItalic
        FALSE,                        //   bUnderline
        0,                            //   cStrikeOut
        DEFAULT_CHARSET,              //   nCharSet
        OUT_DEFAULT_PRECIS,           //   nOutPrecision
        CLIP_DEFAULT_PRECIS,          //   nClipPrecision
        DEFAULT_QUALITY,              //   nQuality
        DEFAULT_PITCH|FF_SWISS,       //   nPitchAndFamily
        "黑体");

GetDlgItem(IDC_COMBO1)->SetFont(Font);
GetDlgItem(IDC_EDIT_RANDOM)->SetFont(Font);
GetDlgItem(IDC_EDIT_ADDSCORE)->SetFont(Font);
GetDlgItem(IDC_EDIT_ADDGAME)->SetFont(Font);
GetDlgItem(IDC_EDIT_ADDNUMBER)->SetFont(Font);

return TRUE;  // 除非设置了控件的焦点,否则返回 TRUE

}

void CscDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
/*CAboutDlg dlgAbout;
dlgAbout.DoModal();*/
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}

// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。

void CscDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文

    SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

    // 使图标在工作矩形中居中
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2;

    // 绘制图标
    dc.DrawIcon(x, y, m_hIcon);
}
else
{
    CDialog::OnPaint();
}

}

//当用户拖动最小化窗口时系统调用此函数取得光标显示。
HCURSOR CscDlg::OnQueryDragIcon()
{
return static_cast(m_hIcon);
}

void CscDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//OnOK();
if(!Validation())
{
return;
}
ShowSYInfo();
GetNumber();
}
void CscDlg::GetNumber()
{
GetDlgItemText(IDC_EDIT_RANDOM,m_strRandom);
GetDlgItemText(IDC_EDIT_ADDSCORE,m_strAddscore);
GetDlgItemText(IDC_EDIT_ADDGAME,m_strGame);
GetDlgItemText(IDC_EDIT_ADDNUMBER,m_strAddNumber);

if(m_strRandom=="")
{
    AfxMessageBox("随机码不能为空");
    return;
}

//1上分,2加场
//DMD5(MD5(分+随)+K,10)+DMD5(MD5(局+随)+K,10),后第4位是type,奇为上分,2为加场,0为两个都加
CString strKey=m_strArea+m_strXin;
LONGLONG llAddScore=_atoi64(m_strAddscore);
LONGLONG llAddGame=_atoi64(m_strGame);
if(llAddScore%100!=0)
{
    AfxMessageBox("请输入100的倍数");
    return;
}
if(llAddScore==0&&llAddGame==0)
{
    AfxMessageBox("分数和局数不能全为0");
    return;
}
if(llAddScore>5000000)
{
    AfxMessageBox("分数不能超过5000000");
    return;
}
if(llAddGame>50000)
{
    AfxMessageBox("场数不能超过50000");
    return;
}
if(m_strRandom.GetLength()!=15)
{
    AfxMessageBox("请输入15位的随机码");
    return;
}
LONGLONG llRandom=_atoi64(m_strRandom);
CString str1,str2,str3,str4,strTotal;
str1.Format("%015I64u",llRandom+llAddScore);
str1=MD5(str1)+strKey;
str1=DigitalMD5(str1,10);

str2.Format("%015I64u",llRandom+llAddGame);
str2=MD5(str2)+strKey;
str2=DigitalMD5(str2,10);

if(llAddScore>0&&llAddGame<=0)
{
    CString strT;
    str2=str2.Left(6)+"1"+str2.Right(3);
}
else if(llAddScore<=0&&llAddGame>0)
{
    CString strT;
    str2=str2.Left(6)+"2"+str2.Right(3);
}
else
{
    str2=str2.Left(6)+"0"+str2.Right(3);
}
m_strAddNumber=str1+str2;
SetDlgItemText(IDC_EDIT_ADDNUMBER,m_strAddNumber);
//UpdateWindow();

}

CString CscDlg::MD5(CString str)
{
TCHAR sz[33];
CString strmd5;
CMD5Encrypt::EncryptData(str,sz);
strmd5=sz;
return strmd5;
}
CString CscDlg::DigitalMD5(CString str,int Right)
{
CString strNumber;
CString strMD5=MD5(str);
static CRegexpT regexp("[:^digit:]");
char *a=regexp.Replace(strMD5,"");
strNumber=a;
regexp.ReleaseString(a);
if(Right!=0)
{
Right=min(strNumber.GetLength(),Right);
strNumber=strNumber.Right(Right);

    LONGLONG llNumber=_atoi64(strNumber);
    strNumber.Format("%010I64u",llNumber);
    if(strNumber.GetLength()>Right)
    {
        strNumber.Right(Right);
    }
}
return strNumber;

}

void CscDlg::Search(CStringArray& dest)
{
dest.RemoveAll();
SHFILEINFO sfi;

CFileFind* fileFind=new CFileFind();   

BOOL res = fileFind->FindFile("*.liu");   

int i=0;   

while(res)
{   

    res = fileFind->FindNextFile();   

    if(fileFind->IsDirectory())
    {
        continue;
    }

    SHGetFileInfo(fileFind->GetFilePath(),0,&sfi,sizeof(sfi),SHGFI_ICON);   

    dest.Add(fileFind->GetFileTitle());

    i++;
}

}
void CscDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
if(OpenClipboard())//打开剪切板
{

    EmptyClipboard();//清空剪切板,让当前窗口进程拥有剪切板
    CString Str;
    GetDlgItemText(IDC_EDIT_ADDNUMBER,Str);//获取数据
    HANDLE hClip;
    hClip=GlobalAlloc(GMEM_MOVEABLE,Str.GetLength()+1);//分配内存对象返回地址(该函数是系统从全局堆中分配内存)
    char *pBuf;
    pBuf=(char *)GlobalLock(hClip);//锁定全局内存中指定的内存块,并返回一个地址值,令其指向内存块的起始处
    strcpy(pBuf,Str);//将Str对象中的数据Copy到内存空间中
    GlobalUnlock(hClip);//解锁全局内存块
    SetClipboardData(CF_TEXT,hClip);//设置剪贴板数据
    CloseClipboard();//关闭
}

}
void CscDlg::InitGameName()
{
Search(m_strArrFileName);
int nCount=m_strArrFileName.GetCount();
for(int i=0;i<nCount;i++)
{
m_GameNumber.AddString(_T(m_strArrFileName.GetAt(i)));
}
m_GameNumber.SetCurSel(0);

int nIndex=m_GameNumber.GetCurSel();
m_strArea=m_strArrFileName.GetAt(nIndex);
CString strFile=m_strArea+".liu";
OnOpenDocument(strFile);

}

void CscDlg::OnCbnSelchangeCombo1()
{
// TODO: 在此添加控件通知处理程序代码
int nIndex=m_GameNumber.GetCurSel();
m_strArea=m_strArrFileName.GetAt(nIndex);
CString strFile=m_strArea+".liu";
OnOpenDocument(strFile);
}
BOOL CscDlg::OnOpenDocument(CString strFileName)
{
CStdioFile file;
CString filePathName;
int row;
CString result;
CString strLine,strTemp;
row = 0;
file.Open(strFileName,CFile::modeRead);
while(file.ReadString(strLine))
{
char *str = strLine.GetBufferSetLength(strLine.GetLength());
char *p;

    if(strLine!="")
    {
        for (p=strtok(str,";");p!=NULL;p=strtok(NULL,";"))
        {
            strTemp = p;
            result+=strTemp;

        }
        row ++;
    }
}
m_MD5File=result;
return TRUE;

}
BOOL CscDlg::Validation()
{
//DMD5(MD5(机器号+AB)+m_strXin,10)+DMD5(m_strXin+机器号,10)
CString strOK=DigitalMD5(MD5(m_strArea+"AB")+m_strXin,10)+DigitalMD5(m_strXin+m_strArea,10);
//AfxMessageBox(strOK);
if(strOK!=m_MD5File)
{
return FALSE;
}
else
{
return TRUE;
}
}
BOOL CscDlg::ShowSYInfo()
{
CString strInfo;
CString strRandom,strScore,strInnings;
GetDlgItemText(IDC_EDIT_RANDOM,strRandom);
strScore=(strRandom.Left(9)).Right(8);
strInnings=(strRandom.Right(6)).Right(5);
int nScoreWei=atoi((strRandom.Left(9)).Left(1));
int nInningsWei=atoi((strRandom.Right(6)).Left(1));
FLOAT fSYSocre=atof(strScore)/13.0f;
FLOAT fSYInnings=atof(strInnings)/7.0f;
if(((int)(fSYSocre*100)%100)!=0||((int)(fSYInnings*100)%100)!=0)
{
strInfo.Format("剩余分数:%d,剩余局数:%d",0,0);
SetDlgItemText(IDC_STATIC_SY,strInfo);
return FALSE;
}
int nSYSocre=atoi(strScore)/13-m_llNumber1;
int nSYInnings=atoi(strInnings)/7-m_llNumber2;
if(nSYSocre<0||nSYInnings<0)
{
strInfo.Format("剩余分数:%d,剩余局数:%d",0,0);
SetDlgItemText(IDC_STATIC_SY,strInfo);
return FALSE;
}
strInfo.Format("剩余分数:%d,剩余局数:%d",nSYSocre,nSYInnings);
SetDlgItemText(IDC_STATIC_SY,strInfo);
return TRUE;
}

时间: 2024-08-04 05:05:25

c# c++-C++代码转化为C#代码 求高手指点,写出注释谢谢啊的相关文章

代码-保存下来,左侧的这个菜单往下拉没有效果,求高手指点

问题描述 保存下来,左侧的这个菜单往下拉没有效果,求高手指点 https://brand.tmall.com/brandMap.htm 这个站左侧代码 左侧这个代码,为什么整个页面保存下来,这个效果没有,请高手指教.谢谢 解决方案 会不会是页面原有的js或是css美柚引入进来?

c语言-C代码帮看下思想,最好能写出Java代码,非常感谢

问题描述 C代码帮看下思想,最好能写出Java代码,非常感谢 2.*?slideing?block?chunking,?performance?is?a?big?issue?due?to?too?many?hash?lookup.? 3.?*/?? 4.static?int?file_chunk_sb(int?fd,?int?fd_ldata,?int?fd_bdata,?unsigned?int?*pos,?unsigned?int?*block_num,?? 5.?????????block

httpwebrequest-C# WPF求高手指点这段怎么解决假死?求具体代码

问题描述 C# WPF求高手指点这段怎么解决假死?求具体代码 public WebResponse Web(url) { WebResponse re; HttpWebRequest resq = (HttpWebRequest)WebRequest.Create(url); re = resq.GetResponse(); return re; } 解决方案 其实可以建个线程来执行这一步,或者你自己设定个超时报异常,毕竟假死本来就是性能问题 解决方案二: 这种假死的情况可能的原因是:网速原因,

eb agic java-WebMagic不支持官方的xpath表达式吗?为什么我的代码会报错?求高人指点

问题描述 WebMagic不支持官方的xpath表达式吗?为什么我的代码会报错?求高人指点 我想获取节点的父节点的link,我按官方文档写出如下表达式,为什么成员运行会抛出异常呢? page.getHtml().xpath("//img/parent::a").links().all(); 异常信息如下: org.jsoup.select.Selector$SelectorParseException: Could not parse query 'parent::*': unexpe

代码分析-菜鸟入门,求大牛指点关于GetKeyDown与GetKeyUp的问题

问题描述 菜鸟入门,求大牛指点关于GetKeyDown与GetKeyUp的问题 想实现的效果:按住"up"键实现人物走动(动画循环),松开"up"键时人物动作停止. 脑残自己敲的代码大概如下 if(Input.GetKeyDown(""up"")) { gameObject.animation.PlayQueued(""walk""); if(Input.GetKeyUp("&

将下面VB代码转化为C#代码

问题描述 PublicSubPictureToCenter(tPicAsPicture,PicBoxAsPictureBox)DimPicHAsLong,PicWAsLongDimPicBoxWAsLong,PicBoxHAsLongDimPicRateAsSingle,PicBoxRateAsSingleDimNewHAsLong,NewWAsLongPicBoxH=PicBox.ScaleHeightPicBoxW=PicBox.ScaleWidthPicBoxRate=PicBoxW/Pi

C#求高手指点这段代码哪错了

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication1{classMyClass{publicintGetHour(){DateTimedt=DateTime.Now;inthour=dt.Hour;returnhour;}}classProgram{staticvoidMa

好多人遇到这问题却都没有解决方案,求高手指点!!!同一个用户控件在一个页面多次调用,取值混乱(附有代码和截图)

问题描述 自己新写了一个用户控件,类似autocomplete效果选择完人后效果如下,用户控件用的是一个文本框和一个div,用户控件当选中人双击的时候会把相应的id和text保存在隐藏的文本框里,一个页面引用一个的时候效果还不错,现在的问题是一个页面只能用一个这种控件,当一个页面有多个的时候,取值的时候取的id和文本竟然都跟第一个用户控件选择的值一样,现在在Gridview的一模板列中需要加入这个控件,如第一个图片所示,但是每次选完人后台取值的时候都是后面选择的都跟第一个是一样,现在初步感觉可能

C# WPF求高手指点这段怎么解决假死?求具体代码

问题描述 publicWebResponseWeb(url){WebResponsere;HttpWebRequestresq=(HttpWebRequest)WebRequest.Create(url);re=resq.GetResponse();returnre;} 解决方案 解决方案二:异步请求Async要么另开一个线程解决方案三:引用1楼wyd1520的回复: 异步请求Async要么另开一个线程 异步请求Async能不能给我一个例子?解决方案四:http://www.cnblogs.co