1 如何让Edit控件支持多行?
我设置了MultiLine,然后屏蔽掉了Dialog的回车键(防止程序退出),但是在Edit控件中输入回车的时候,并没有换行?而是将焦点移到“确定”按钮了。怎么办?2 高手说可以重载CEdit类,使之支持PreTranslateMessage,
但是具体怎么操作啊?
我的意思是:是 CMyEdit::CEdit这样吗?
然后又怎么创建一个CMyEdit呢?
( 上面的这个是不是就是所谓的“之类化”?)3
void CMyDlg::OnPaint()
{
CDialog::OnPaint();
CPaintDC dc(this);
dc.Rectangle(20,20,300,300);
}为什么画不出来?
但是将二者位置颠倒一下可以的啊?
就是这样:
CPaintDC dc(this);
dc.Rectangle(20,20,300,300); CDialog::OnPaint();
可以的啊4
_AFX_INLINE CString::operator LPCTSTR() const
{ return m_pchData; }
它怎么可以重载LPCTSTR?
C++书籍上都说不可以的啊!我自己试了给自己编的类重载此操作符也是不可以的啊!
我设置了MultiLine,然后屏蔽掉了Dialog的回车键(防止程序退出),但是在Edit控件中输入回车的时候,并没有换行?而是将焦点移到“确定”按钮了。怎么办?2 高手说可以重载CEdit类,使之支持PreTranslateMessage,
但是具体怎么操作啊?
我的意思是:是 CMyEdit::CEdit这样吗?
然后又怎么创建一个CMyEdit呢?
( 上面的这个是不是就是所谓的“之类化”?)3
void CMyDlg::OnPaint()
{
CDialog::OnPaint();
CPaintDC dc(this);
dc.Rectangle(20,20,300,300);
}为什么画不出来?
但是将二者位置颠倒一下可以的啊?
就是这样:
CPaintDC dc(this);
dc.Rectangle(20,20,300,300); CDialog::OnPaint();
可以的啊4
_AFX_INLINE CString::operator LPCTSTR() const
{ return m_pchData; }
它怎么可以重载LPCTSTR?
C++书籍上都说不可以的啊!我自己试了给自己编的类重载此操作符也是不可以的啊!
解决方案 »
- 为了2005年的诺言,现在发帖散分,这是第三贴
- 关于基于对话框的菜单栏的问题
- VC编译一段程度,一直出现错误
- 谁能给我讲讲CWinApp,CFrameWnd,CDocument,CView之间的关系啊。
- 位图显示问题
- 有关Edit控件的问题:很简单却很麻烦,而且让人气愤死了!
- 提问关于程序如何实现的问题:如何创建有插件功能的程序
- 如何隐藏其他程序在系统托盘区的图标?(给点思战路也好)
- 如何让应用程序在任务栏,任务管理器中不显示,在Process Viewer中也不显示能吗?
- AfxBeginThread多线程求助
- 如何在程序中改变静态标签(CStatic)的文本颜色及字体大小?
- 【两个非常简单的问题】1 关于IDC_STATIC 2 关于IDR_MAINFRAME
但是具体怎么操作啊?
我的意思是:是 CMyEdit::CEdit这样吗?
然后又怎么创建一个CMyEdit呢?
( 上面的这个是不是就是所谓的“之类化”?)在类视图中,右键--->Add a New Class,输入你的类名,把基类选择为CEdit即可
http://www.xiaozhou.net/ReadNews.asp?NewsID=868
重载是C++的一个基本概念,就像不懂指针不能说会C一样,不懂重载就是没学好C++,因此这个基础知识你还需要补习。
3
void CMyDlg::OnPaint()
{
CDialog::OnPaint();
CPaintDC dc(this);
dc.Rectangle(20,20,300,300);
}
为什么画不出来?因为CPaintDC相当于调用了SDK中的BeginPaint()和EndPaint(),处理了WM_PAINT消息,使用CPaintDC得到的DC只对无效矩形区进行绘制。调用了CDialog::OnPaint(),里面也用到了CPaintDC(),处理完后无效矩形区没有了,下面的工作就不再进行绘制。
但是将二者位置颠倒一下可以的啊?
就是这样:
CPaintDC dc(this);
dc.Rectangle(20,20,300,300); CDialog::OnPaint();
可以的啊
这时候CPaintDC还没有销毁,无效矩形区还在。4
_AFX_INLINE CString::operator LPCTSTR() const
{ return m_pchData; }
它怎么可以重载LPCTSTR?
C++书籍上都说不可以的啊!我自己试了给自己编的类重载此操作符也是不可以的啊!哪本书上说不可以?除了极少数操作符不能重载,一般都可以的。你是的肯定不对。要深入了解操作符重载,建议看看Effective C++和More Effective C++。
不用动态创建的。
你先用向导生成一个class CMyEdit : public CEdit。
然后在对话框中拉出一个 Edit Control,
接着在对话框的头文件中声明 CMyEdit m_Edit1;
在OnInitDialog()函数中加上:Edit1.SubclassDlgItem(IDC_STATIC, this);
就可以了。
你的应该是:
CMyEdit m_Edit1;
m_Edit1.SubclassDlgItem(IDC_STATIC, this);
吧!可是我按照此方法,派生了一个CMyEdit,结果一回车就错误了。
你可以帮我试试看吗?
之前我设置了窗体中某个Edit的MultiLine和WantReturn,这没影响吧?
我重新写个工程测试好的。
刚才可能其他的问题,明天我重新看一下罢
谢谢了ps.我没有用你的SubclassDlgItem之类,
而是直接创建MemberVariable时,选择control-CMyEdit,
你说的两步我一个也没有做。
但是好用的。
这样没问题吧?
m_Edit1没有SubclassDlgItem方法啊?怎么回事?不好意思,刚才一时手快结贴了。
只要是CWnd类派生出来的,都会有的啊。