“分割按钮”控件在MFC对话框中消失

“分割按钮”控件在MFC对话框中消失,mfc,split-button,Mfc,Split Button,我几乎是MFC的新手。 我只是将一个新的拆分按钮控件从工具箱拖放到对话框中。 然后我改变了按钮的标题。喜欢附加的img 我试着运行这个应用程序。新按钮不见了。 当我将鼠标移到按钮位置并单击鼠标左键时。一个小长方形看起来像 将显示一个复选框 属性参数设置出了什么问题? 我可以错过什么吗?为什么不显示新的拆分按钮 此外,OnBnClickedSplit1尚未实现。 另一个按钮仍正常显示。 //MFCAPApplication5dlg.cpp:实现文件 // 包括stdafx.h 包括MFC应用程序

我几乎是MFC的新手。 我只是将一个新的拆分按钮控件从工具箱拖放到对话框中。 然后我改变了按钮的标题。喜欢附加的img 我试着运行这个应用程序。新按钮不见了。 当我将鼠标移到按钮位置并单击鼠标左键时。一个小长方形看起来像 将显示一个复选框

属性参数设置出了什么问题? 我可以错过什么吗?为什么不显示新的拆分按钮

此外,OnBnClickedSplit1尚未实现。 另一个按钮仍正常显示。

//MFCAPApplication5dlg.cpp:实现文件 // 包括stdafx.h 包括MFC应用程序5.h 包括MFC应用程序5dlg.h 包括afxdialogex.h ifdef_调试 定义新调试\u新 恩迪夫 //CMFCApplication5Dlg对话框 CMFCApplication5Dlg::CMFCApplication5DlgCWnd*pParent/*=NULL*/ :cdialogexcmfcaplication5dlg::IDD,pParent { m_hIcon=AfxGetApp->LoadIconIDR_大型机; } void CMFCApplication5Dlg::DoDataExchangeCDataExchange*pDX { CDialogEx::DoDataExchangepDX; } 开始\u消息\u映射CMFCApplication5DLG、CDialogEx 论绘画 关于WM QUERYDRAGICON 单击eDok和CMFCApplication5Dlg::onbn单击eDok 关于_EN_changedit1和CMFCApplication5Dlg::onenchangedit1 单击edidc\u SPLIT1,&CMFCApplication5Dlg::onbn单击SPLIT1 ON_NOTIFYBCN_下拉列表、IDC_拆分1和CMFCApplication5Dlg::OnBNDropDownPlit1 结束消息映射 //CMFCApplication5Dlg消息处理程序 BOOL CMFCApplication5Dlg::OnInitDialog { CDialogEx::OnInitDialog; //设置此对话框的图标。框架会自动执行此操作 //当应用程序的主窗口不是对话框时 SetIconm_hIcon,TRUE;//设置大图标 SetIconm_hIcon,FALSE;//设置小图标 //TODO:在此处添加额外的初始化 return TRUE;//除非将焦点设置为控件,否则返回TRUE } //如果在对话框中添加最小化按钮,则需要以下代码 //来绘制图标。对于使用文档/视图模型的MFC应用程序, //这是框架自动为您完成的。 无效CMFCApplication5Dlg::OnPaint { 如果是二次曲线 { cpaindc dcthis;//用于绘制的设备上下文 sendmageswm_ICONERASEBKGND,reinterpret_castdc.GetSafeHdc,0; //在客户端矩形中居中图标 int cxIcon=GetSystemMetricsSM\u cxIcon; int cycon=GetSystemMetricsSM\u cycon; 正确无误; GetClientRect▭ int x=矩形宽度-cxIcon+1/2; int y=直线高度-cyIcon+1/2; //绘制图标 D.DrawIconx,y,m_hIcon; } 其他的 { CDialogEx::OnPaint; } } //系统调用此函数以获取用户拖动时要显示的光标 //最小化的窗口。 HCURSOR CMFCApplication5Dlg::OnQueryDragIcon { 返回static\u castm\u hIcon; } 作废CMFCApplication5Dlg::OnBnClickedOk { CString-StrTmp; //TODO:在此处添加控件通知处理程序代码 } void CMFCApplication5Dlg::OneChangeEdit1 { //TODO:如果这是RICHEDIT控件,则该控件将不会 //除非覆盖CDialogEx::OnInitDialog,否则发送此通知 //函数并调用CRichEditCtrl.SetEventMask //将ENM_更改标志插入掩码。 //TODO:在此处添加控件通知处理程序代码 } 无效CMFCApplication5Dlg::OnBnClickedSplit1 { //TODO:在此处添加控件通知处理程序代码 } 无效CMFCApplication5Dlg::OnBNDropDownplit1NMHDR*pNMHDR,LRESULT*pResult { LPNMBCDROPDOWN pDropDown=重新解释castpNMHDR; *预设值=0; *预设值=0; }
您可能需要执行以下操作:

如果CMFCApplication5App::InitInstance函数不在代码中,请将其添加到CMFCApplication5App::InitInstance函数的开头: 将其添加到一个.h文件,例如stdafx.h
但问题可能是别的。请确保您需要向我们展示.rc文件的相关部分。

常见问题:在不了解Windows API的情况下尝试使用MFC。请出示证件。这应该包括资源脚本的相关部分。如果你不知道资源脚本是什么,考虑一下你手上的Petzold的副本。应该包括资源脚本的相关部分。如果您不知道资源脚本是什么…您必须启用视觉样式,否则新的windows控件将无法工作。看到这个我不确定复选框是从哪里来的。这个解决方案对我来说还可以。然而,我仍然想知道为什么,根本原因是什么?某些常用控件DLL未加载,对吗?读取
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif