MFC添加类向导并实现响应

一、MFC添加类向导

源文件→右键添加类向导

二、添加键盘enter消息响应

添加以后就可以在下面实现自己想要的消息响应了

三、项目示例:添加键盘消息响应实现图像边缘检测结果对话框显示

按下回车键就会显示边缘检测结果

1、EdgeDetect.cpp

cpp 复制代码
void EdgeDetect(SIZE sz, PBYTE pSrc, PBYTE pDst)
{
    ASSERT(pSrc);
    ASSERT(pDst);

    int w = sz.cx;
    int h = sz.cy;

    for (int y = 1; y < h - 1; y++)
    {
        for (int x = 1; x < w - 1; x++)
        {
            int v01 = pSrc[(y - 1) * w + x];
            int v10 = pSrc[y * w + (x - 1)];
            int v11 = pSrc[y * w + x];
            int v12 = pSrc[y * w + (x + 1)];
            int v21 = pSrc[(y + 1) * w + x];

            int g = 4 * v11 - v01 - v10 - v12 - v21;

            if (g < 0)   g = -g;
            if (g > 255) g = 255;

            pDst[y * w + x] = (BYTE)g;
        }
    }
}



void EdgeDetectRGB(int w, int h, BYTE* pRGB)
{
    int img_size = w * h;

  
    static BYTE s_pGray[IMG_MAX_SIZE];
    static BYTE s_pEdge[IMG_MAX_SIZE];

   
    RgbToYuv(w, h, pRGB, pRGB);

   
    for (int i = 0; i < img_size; i++)
    {
        s_pGray[i] = pRGB[i * 3];
    }


    SIZE sz;
    sz.cx = w;
    sz.cy = h;
    EdgeDetect(sz, s_pGray, s_pEdge);

    // PBYTE pSrc = s_pEdge
    // PBYTE pDst = s_pGray
   /* for (int i = 0; i < img_size; i++)
    {
        BYTE e = *pSrc++;
        *pDst++ = e;
        *pDst++ = e;
        *pDst++ = e;
    }*/
  
    for (int i = 0; i < img_size; i++)
    {
        BYTE e = s_pEdge[i];
        pRGB[i * 3 + 0] = e;
        pRGB[i * 3 + 1] = e;
        pRGB[i * 3 + 2] = e;
    }
}

.h

view.cpp

下面这种方法是直接在KeyDown里面直接执行边缘检测,随便按下键盘的某个键都行。

GrayToRGB代码实现

cpp 复制代码
void GrayToRGB(SIZE sz, PBYTE aRGB, PBYTE aGray, int nBPP)
{

	int img_size = sz.cx * sz.cy;  

	PBYTE pSrc = aGray;   
	PBYTE pDst = aRGB;    

	for (int i = 0; i < img_size; i++)
	{
		BYTE gray = pSrc[i]; //PBYTE gray = *pSrc++;

		pDst[0] = gray;  //*pSrc++ = gray
		pDst[1] = gray;
		pDst[2] = gray;

		pDst += 3;

	}
}
相关推荐
6Hzlia28 分钟前
【Classic 150 刷题计划】 LeetCode 14. 最长公共前缀 | C++ 纵向扫描法与防越界细节
c++·算法·leetcode
讳疾忌医丶9 小时前
深度拆解 RocksDB 内核:基于 C++17 的 FIFO 调度状态机与温度阶梯自愈设计
java·c++·算法·架构
2401_868534789 小时前
OpenStack 架构全景:八个核心组件深度拆解
c++·需求分析
软件课代表CiCi10 小时前
运行库是什么?电脑缺运行库怎么办?c++运行库缺失修复全攻略
开发语言·c++·windows·电脑·dll修复·dll丢失·运行库
蒸蒸yyyyzwd11 小时前
从面经中学到的三件事
c++·笔记
时时三省11 小时前
【时时三省】计算机c语言二级考试选择题重点
c++
ThornArmor13 小时前
重铸1996|肉体渲染:关节的裂缝:分段模型积木拼装与未成熟的 RSP 矩阵骨骼动画形变
c语言·汇编·c++·python·硬件架构·游戏机
Elsa️74616 小时前
算法一周刷题总结
c++·算法
风合星语16 小时前
2026 机器人工程实例(五):让 Allegro Hand 在 MuJoCo 中完成接触抓取——抓取状态机、稳定抬升与受控释放
c++·python·机器人·仿真
小羊没烦恼!16 小时前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#