学习MFC遇见的问题

无法解析的外部命令,这个要这么解决?

源文件

#include"mfc.h"
MyApp app;//全局应用程序对象,有且仅有一个
BOOL MyApp::InitInstance() {
    //创建窗口
    //创建窗口
    MyFrame* frame = new MyFrame;
    //显示和更新
    frame->ShowWindow(SW_SHOWNORMAL);
    frame->UpdateWindow();
    m_pMainWnd = frame;
    return TRUE;
}

MyFrame::MyFrame() {
    Create(NULL, TEXT("mfc"));//标题写在这
     
}

void MyFrame::OnlButtonDown(UINT,CPoint point) {
    TCHAR buf[1024];
    wsprintf(buf, TEXT("x =%d,y =%d"), point.x, point.y);
    MessageBox(buf);
}

头文件

#include<afxwin.h>//MFC头文件
class MyApp :public CWinApp { //CWinApp应用程序类
public:
    //程序入口
    virtual BOOL InitInstance();
};

class MyFrame :public CFrameWnd {//窗口框架类
public:
    MyFrame();
    //声明宏 提供消息映射机制
    DECLARE_MESSAGE_MAP()
    afx_msg void OnlButtonDown(UINT,CPoint);

};

这个,你应该用向导生成应用,用Classwizard产生成员函数的映射,并且把自己的代码添加进去。
不要从头写。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/243443
  • 这篇博客也不错, 你可以看下MFC编个对话框,能够实时显示摄像头捕捉的镜头, 点击确定,保存当前图像。
  • 除此之外, 这篇博客: MFC对话框编辑器 列表功能图像一览中的 学习内容: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1、BUTTON

    默认事件:BN_CLICKED
    button
    在这里插入图片描述


    2、 Check Box

    默认事件:BN_CLICKED
    在这里插入图片描述
    在这里插入图片描述


    3、Edit control
    默认事件:EN_CHANGE
    在这里插入图片描述
    在这里插入图片描述


    4、

    在这里插入图片描述

    在这里插入图片描述


    5、

    在这里插入图片描述在这里插入图片描述


    6、 not applicable

    在这里插入图片描述
    在这里插入图片描述


    7、

    在这里插入图片描述在这里插入图片描述


    8、

    在这里插入图片描述
    在这里插入图片描述


    9、图片控制

    https://docs.microsoft.com/en-us/cpp/mfc/reference/cpictureholder-class?view=msvc-160

    在这里插入图片描述
    在这里插入图片描述


    10、

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


    11、滑块控制 TBS_HORZ和TBS_VERT样式决定滑块控制的方向。如果您没有指定方向,滑块控制将水平方向。

    TBS_AUTOTICKS样式创建一个滑块控制,其值范围内的每个增量都有一个刻度标记。当您调用设置兰格成员功能时,会自动添加这些刻度标记。如果您没有指定TBS_AUTOTICKS,则可以使用成员功能(如SetTic和SetTicFreq)来指定刻度标记的位置。要创建不显示刻度标记的滑块控制,您可以使用TBS_NOTICKS样式。
    在这里插入图片描述

    在这里插入图片描述


    12、旋转按钮控制(也称为上下控制)提供一对箭头,用户可以单击以调整值。此值称为当前位置。位置保持在旋转按钮的范围之内。当用户单击向上箭头时,位置会向最大方向移动:当用户单击向下箭头时,位置会向最小方向移动。

    在这里插入图片描述
    在这里插入图片描述


    13、进度控制

    在这里插入图片描述
    在这里插入图片描述


    14、 热键控制

    “热键控件”是一个允许用户创建热键的窗口。
    一个“热键”是一个组合键,用户可以按下它来快速执行一个动作。
    (例如,用户可以创建一个激活给定窗口的热键,并将其带到Z顺序的顶部。)热键控件显示用户的选择,并确保用户选择一个有效的组合键。

    https://blog.csdn.net/zyrr159487/article/details/7090913
    在这里插入图片描述
    在这里插入图片描述


    15、列表控制和列表视图 List control
    为了方便起见,MFC 以两种方式封装列表控制。您可以使用列表控件:

    直接通过在对话语录类中嵌入CListCtrl对象。

    间接地,通过使用类CListView。
    在这里插入图片描述
    在这里插入图片描述


    16、 Tree control

    https://docs.microsoft.com/en-us/cpp/mfc/using-ctreectrl?view=msvc-160
    在这里插入图片描述
    在这里插入图片描述


    17、选项卡控制

    在这里插入图片描述
    在这里插入图片描述


    18、 动画控制 https://blog.csdn.net/sunboyiris/article/details/21294893

    动画控制的典型使用遵循以下模式:

    创建控制。如果对话框模板中指定了控制,则创建对话框时创建是自动的。(您的对话版中应有一个与动画控制相对应的C动画Ctrl成员。或者,您也可以使用"创建"成员功能创建控制,作为任何窗口的儿童窗口。

    通过调用开放成员功能将 AVI 剪辑加载到动画控制中。如果您的动画控制位于对话框中,则这样做的好地方是在对话框类的OnInit 对话功能中。

    通过调用播放成员功能来播放剪辑。如果您的动画控制位于对话框中,则这样做的好地方是对话类的功能。如果动画控制具有ACS_AUTOPLAY样式集,则无需调用。OnInitDialogPlay

    如果您想要显示剪辑的部分或逐帧播放剪辑,请使用成员功能。要停止播放的剪辑,请使用成员功能。SeekStop

    如果您不打算立即销毁控制,则通过调用成员功能从内存中删除剪辑。Close

    如果动画控制位于对话框中,则自动销毁该控件和对象。如果没有,则需要确保控制和对象都被正确销毁。销毁控制会自动关闭 AVI 剪辑。CAnimateCtrlCAnimateCtrl
    在这里插入图片描述
    在这里插入图片描述


    ***19、 Edit Control和Rich Edit 2.0 Control的区别系统自带记事本和写字板的区别***

    1、MFC中Edit 控件提供的显示文本的内容有限(不知道具体大小),但在之前开发之中的确遇到文件信息无法显示完全等情况。故当要显示的数据较多时可采用 Rich Edit2.0控件。

    2、如果直接手动添加 Rich Edit2.0控件,运行时程序会报错,需要调用此控件的初始化函数:AfxInitRichEdit2()

    3、此初始化函数可以在 OnInitDialog函数中调用,此函数在收到第一次初始化消息时执行,且只执行一次。

    4、消息、虚函数、成员变量、方法等都可以直接在类向导中直接编辑,非常方便

    5、在资源试图中,对窗口右键即可选择类向导
    ————————————————
    版权声明:本文为CSDN博主「努力的犀牛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_33140565/article/details/73456998
    在这里插入图片描述
    在这里插入图片描述


    20、 创建日期和时间选择器控制

    在这里插入图片描述
    在这里插入图片描述


    21、

    在这里插入图片描述
    在这里插入图片描述


    22、

    在这里插入图片描述
    在这里插入图片描述


    23、 创建扩展组合框控制

    Extended Combo Box的功能比Combo Box更多一点.其中有个功能就是可以在选项前加个图标.
    先添加一个Extended Combo Box控件.并给它添加一个变量cbBoxE.

    CImageList* pImageList;   //相当于一个特殊数组,但是它保存的是图片
    pImageList = new CImageList();
    pImageList->Create(32, 32, ILC_COLOR32, 0, 4); //
    //在资源中添加一个bmp图片.id为IDB_BITMAP1
    CBitmap bmp;
    bmp.LoadBitmap(IDB_BITMAP1); //加载资源中的图片
    pImageList->Add(&bmp, RGB(0, 0, 0)); //添加图片到imagelist中
    cbBoxE.SetImageList(pImageList);
    COMBOBOXEXITEM insItem; //添加图片选项时的参数.它是一个结构体,下面是里面一些变量的初始化
    insItem.mask = CBEIF_IMAGE|CBEIF_TEXT;
    insItem.iItem=0;
    insItem.iImage=0;
    insItem.pszText=_T("Line 1");
    cbBoxE.InsertItem(&insItem);//在控件中添加一个选项,并且选项前面有图片
    

    在这里插入图片描述
    在这里插入图片描述


    24、 自定义控制(默认事件TTN_GETDISPINFO)

    https://blog.csdn.net/cjjwwss/article/details/19108377
    在这里插入图片描述
    在这里插入图片描述


    25、 Syslink Control https://blog.csdn.net/jhfyuf/article/details/84058948

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


    26、 一个按钮实现多个操作(下拉框按钮)

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    https://www.cnblogs.com/jiangu66/p/3206768.html


    27、 控件和m_ip关联 CIPAddressCtrl m_ip.SetAddress(127,0,0,1);//初始化 可写在OnInitDialog CString ip; m_ip.GetWindowText(ip);//获取IP字符串 这个值可以直接作为inet_addr(ip)的输入 ```c SOCKADDR_IN serverAddr; serverAddr.sin_family=AF_INET; serverAddr.sin_addr.s_addr=inet_addr(ip);//ip serverAddr.sin_port=htons(port);//port iRet=::connect(s,(sockaddr*)&serverAddr,sizeof(serverAddr)); ———————————————— 版权声明:本文为CSDN博主「欧阳嘉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/iamoyjj/article/details/70943525 ``` ———————————————— ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210623112950389.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210623113001175.png)
    28、 command button

    1.除了button上面的caption显示的文字外还多了个note文字,相当起于进一步解释作用的文字,并是用小号的字显示出来.

    2.可以在button前面显示一个icon图标,默认是指向右边的箭头

    3.鼠标没放过去之前不像个button,像个static text控件一样的文本信息.鼠标移上去后才变得像button.

    CButton* pBtn = (CButton*)GetDlgItem(IDC_COMMAND1);
    pBtn->SetNote(_T("something to description"));  //设置note的内容
    pBtn->SetIcon(m_hIcon);  //设置icon,当然也可以使用默认的icon.
    

    在这里插入图片描述
    在这里插入图片描述


    29、

    在这里插入图片描述
    在这里插入图片描述


    30、

    在这里插入图片描述
    在这里插入图片描述


    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 您还可以看一下 胡兵老师的MFC快速入门课程中的 复选框与单选钮小节, 巩固相关知识点