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;

	}
}
相关推荐
jimy11 小时前
虚函数vtable,链接时看到构造函数,linker把符号地址写入vtable(三)
开发语言·c++
潼心1412o2 小时前
C++初阶(长期更新)第9讲:string(上)
开发语言·c++
朝朝辞暮i2 小时前
C++ 第 39 章: 阶段性总复习——类、对象、构造、继承、this、指针与智能指针
开发语言·c++·算法·ros2
wuminyu2 小时前
Virtual Thread重投递至ForkJoinPool任务队列过程解析
java·linux·c语言·jvm·c++
All for pursuit.3 小时前
【回溯-6】79.单词搜索
数据结构·c++·算法·leetcode
Benny_Tang3 小时前
AT_arc180_d [ARC180D] Division into 3 题解
数据结构·c++·算法
殷色玫瑰3 小时前
C++ STL:stack、queue、priority_queue 与容器适配器详解
java·开发语言·数据结构·c++·算法·visualstudio
努力努力再努力wz4 小时前
【CUDA入门系列】CUDA编程实战:设备选择、显存管理、Kernel、Stream 与 Event 全流程梳理
开发语言·c++
沫璃染墨4 小时前
《从零入门Linux系统篇(五十八):线程篇·十一——线程安全与死锁详解:从可重入到多锁管理》
linux·服务器·开发语言·c++·驱动开发·安全·架构
郝学胜_神的一滴4 小时前
C++ Templates 05:那些容易踩坑的技巧性基础知识
c++·visual studio