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

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日

悬赏问题

  • ¥15 AT89C52单片机C语言串口助手发送数据包返回值
  • ¥15 C++数组中找第二小的数字程序纠错
  • ¥50 MATLAB APP 制作出现问题
  • ¥15 wannier复现图像时berry曲率极值点与高对称点严重偏移
  • ¥15 利用决策森林为什么会出现这样·的问题(关键词-情感分析)
  • ¥15 DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI[/untitled30_war_e
  • ¥15 使用deepspeed训练,发现想要训练的参数没有梯度
  • ¥15 寻找一块做为智能割草机的驱动板(标签-stm32|关键词-m3)
  • ¥15 信息管理系统的查找和排序
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),怎么用读取的电磁传感器信号表示小车所在的位置