(对不起,我的英语很差)我试图在基于对话框的MFC项目(visual studio 2012)上创建一个自定义控件。这是创建基于MFC对话框的项目时的设置:
当我把自定义控件放在对话框上时,总是有编译错误。
日志:警告:对话框创建失败,因此应用程序将意外终止。警告:如果在对话框中使用MFC控件,则不能#Define_AFX_NO_MFC_CONTROLS_IN_DIALOGS。程序“[0x2524]CustomControl.exe”已退出,代码为0(0x0)。
#pragma once
// MyCustomControl
#define MYWNDCLASS "MyDrawPad"
class MyCustomControl : public CWnd
{
DECLARE_DYNAMIC(MyCustomControl)
public:
MyCustomControl();
virtual ~MyCustomControl();
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
DECLARE_MESSAGE_MAP()
private:
CDC cDC;
BOOL RegisterWndClass();
CPoint oldpt;
BOOL flag;
};
// MyCustomControl.cpp : implementation file
//
#include "stdafx.h"
#include "CustomControl.h"
#include "MyCustomControl.h"
// MyCustomControl
IMPLEMENT_DYNAMIC(MyCustomControl, CWnd)
MyCustomControl::MyCustomControl()
{
}
MyCustomControl::~MyCustomControl()
{
}
BEGIN_MESSAGE_MAP(MyCustomControl, CWnd)
END_MESSAGE_MAP()
// MyCustomControl message handlers
/////////////////////////////////////////////////////////////////////////////
// MyCustomControl message handlers
BOOL MyCustomControl::RegisterWndClass()
{
WNDCLASS windowclass;
HINSTANCE hInst = AfxGetInstanceHandle();
//Check weather the class is registerd already
if (!(::GetClassInfo(hInst, MYWNDCLASS, &windowclass)))
{
//If not then we have to register the new class
windowclass.style = CS_DBLCLKS;// | CS_HREDRAW | CS_VREDRAW;
windowclass.lpfnWndProc = ::DefWindowProc;
windowclass.cbClsExtra = windowclass.cbWndExtra = 0;
windowclass.hInstance = hInst;
windowclass.hIcon = NULL;
windowclass.hCursor = AfxGetApp()->LoadStandardCursor(IDC_ARROW);
windowclass.hbrBackground = ::GetSysColorBrush(COLOR_WINDOW);
windowclass.lpszMenuName = NULL;
windowclass.lpszClassName = MYWNDCLASS;
if (!AfxRegisterClass(&windowclass))
{
AfxThrowResourceException();
return FALSE;
}
}
return TRUE;
}
int MyCustomControl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
return 0;
}
void MyCustomControl::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(flag==FALSE)
{
oldpt=point;
flag=TRUE;
}
//CWnd::OnLButtonDown(nFlags, point);
}
void MyCustomControl::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(flag==TRUE)
{
CDC *d=GetDC();
d->MoveTo(oldpt);
d->LineTo(point);
oldpt=point;
ReleaseDC(d);
}
//CWnd::OnMouseMove(nFlags, point);
}
void MyCustomControl::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
flag=FALSE;
//CWnd::OnLButtonUp(nFlags, point);
}
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently,
// but are changed infrequently
#pragma once
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#endif
#include "targetver.h"
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
// turns off MFC's hiding of some common and often safely ignored warning messages
#define _AFX_ALL_WARNINGS
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <afxcontrolbars.h> // MFC support for ribbons and control bars
#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
我看过同样的例子,但是我的构造函数看起来不同。请参见下面的代码
MyCustomControl::MyCustomControl()
{
//Register My window class
RegisterWndClass();
flag=FALSE; //Sets the drawing flag off
}
您还缺少MESSAGE_MAP的实现
问题内容: 我在JFrame上有一个按钮,当单击该按钮时,我希望对话框弹出并带有多个文本区域供用户输入。我一直在四处寻找解决方法,但是我一直感到困惑。有人可以帮忙吗? 问题答案: 如果您不需要太多自定义行为,则JOptionPane可以节省大量时间。它负责OK / Cancel选项的放置和本地化,并且是一种无需定义自己的类即可显示自定义对话框的快捷方法。大多数情况下,JOptionPane中的“
问题内容: 有人可以告诉我如何创建与链接[here] [1]类似/完全相同的上述对话框视图,问题的重点是在图片的中心创建视图? 我已经进行了一些研究,这使我想知道我应该使用自定义xml创建自定义对话框视图还是应该使用alertdialog创建上面显示的确切视图可编程性?即使有alertdialog的可能,在给出alertdialog限制的情况下,我该如何容纳对话框图片中间显示的那么多textvie
我想创建一个如下所示的自定义对话框 我试过以下几件事。 > 我创建了AlertDialog.Builder的子类,并使用了自定义标题和自定义内容视图,但结果不是预期的。 另一个尝试是子类DialogFragment并自定义onCreateDialog中的对话框,但结果并不像预期的那样。 然后我尝试使用一个普通的对话框类。结果不如预期。 在这三种情况下,问题是当我忽略标题视图时,对话框的大小不像预期
我想做的是:我想在android中创建一个圆角的自定义对话框。 正在发生的事情:我能够使自定义对话框,但它没有圆角。我试着添加一个选择器,但我仍然无法实现圆角。 下面是我的相同代码: Java代码: xml代码:
我想创建一个自定义的,它只是显示选项(参见图1)。如果用户选择了其中一个选项,对话框将立即关闭并返回相应的结果。 到目前为止,我只能通过在中添加一个任意的来实现,通过使用来隐藏它,并在单击选项的中应用。 这个怪异的变通方法其实很管用,但在我看来却很不专业…… 那么,如何在不使用按钮式把戏的情况下,以更专业或更恰当的方式做到这一点呢?
我已经在adobe xd中设计了一个自定义对话框,但现在我想像在xml和Java中一样启动它。那么我现在应该做什么来创建一个自定义对话框。我知道如何创建一个对话框,但不是自定义对话框。请帮帮忙。