VCLZ-42 2023-02-17 14:04 采纳率: 72.2%
浏览 35
已结题

MFC中怎样把函数的返回值传进消息函数并成功显示?

一个加密的控制台项目,自己用MFC简单封装了下,就是字符串输出这里搞不懂,我想把函数Calculate_512()的返回值传进编辑框的变量CalculateJG使得它可以正常显示,本来输出应该是128位明文,但是传进去调试结果都是无法正常显示的值.,请问如何用string或更好的方法解决这个问题?

dlg512.cpp

string str512;
 unsigned char Calculate_512()
{
    int i;
    extern char putin[102400];
    cin.get(putin, 102400);


    for (unsigned int i = 0; i < strlen((char*)putin); i++) {
        printf("%02x", putin[i]);
    }
    unsigned char sha512Code[64];
    SHA512_CB sha512;
    SHA512Init(&sha512);
    SHA512Update(&sha512, (unsigned char*)putin, strlen((char*)putin));
    SHA512Final(&sha512, sha512Code);
    //Md5加密后的32位结果
    for (i = 0; i < 64; i++)
    {
        cout << sha512Code[i];
    }
      str512 =(unsigned char) sha512Code;
      return 0;
}


...


/*点击生成密文的按钮。
*绑定事件: 点击后把输入框控件已经输入的内容同步到变量putin
* 再把计算后的结果从变量同步到编辑框
*/
void SHA512_Dlg::OnBnClickedIdmake()
{
    UpdateData(TRUE);               //控件输入内容->变量
    if (EDIT_TEXT.IsEmpty())         //空值弹出错误消息提醒
    {
        MessageBox(_T("输入不能为空!"), _T("输入错误"));
    }
    char putin = (char)(LPCTSTR)(EDIT_TEXT);
    CalculateJG = (char)Calculate_512( );
    UpdateData(false);
}

img

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2023-02-17 14:06
    关注

    为啥前一个不采纳,有啥问题么?
    str512 =(unsigned char) sha512Code; ---这能对么
    再写一遍,有问题就回复,别没有反应

    string Calculate_512(string &str512)
    {
        char *putin = str512.c_str();
        unsigned char sha512Code[64];
        SHA512_CB sha512;
        SHA512Init(&sha512);
        SHA512Update(&sha512, (unsigned char*)putin, strlen(putin));
        SHA512Final(&sha512, sha512Code);
        return sha512Code;
    }
     
     
    ...
     
     
    /*点击生成密文的按钮。
    *绑定事件: 点击后把输入框控件已经输入的内容同步到变量putin
    * 再把计算后的结果从变量同步到编辑框
    */
    void SHA512_Dlg::OnBnClickedIdmake()
    {
        UpdateData(TRUE);               //控件输入内容->变量
        if (EDIT_TEXT.IsEmpty())         //空值弹出错误消息提醒
        {
            MessageBox(_T("输入不能为空!"), _T("输入错误"));
        }
    
        string str512 = strCalculate_512(EDIT_TEXT.GetBuffer(EDIT_TEXT.GetLength()+1));
        EDIT_TEXT.ReleaseBuffer();
        EDIT_TEXT = str512.c_str();
        UpdateData(false);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月25日
  • 已采纳回答 2月17日
  • 创建了问题 2月17日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效