以前一直用对话框,现在接触SDI感觉不太适应,问几个很简单的问题:
1.在SDI中的加入一个对话框对应了一个类COrder 继承CFormView,如果这个对话框画很大的话,在SDI打开的时候,会出现拉伸条,请问如何使外面的frame 变大.
2.在上面的那个对话框中有一个输入框,如何使输入框中输入的文字的颜色为红色,这个问题SDI和DIALOG都不清楚.
3.如何改变SDI程序的标题, 我在mainframe.cpp中单击状态栏中的一个图标的函数中加入 SetWindowText(_T("fsafsafsdfsdafsda"));就可以实现,但是我把这句话加到CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函数里面就不可以,请问如何实现!
谢谢,在线等.
1.在SDI中的加入一个对话框对应了一个类COrder 继承CFormView,如果这个对话框画很大的话,在SDI打开的时候,会出现拉伸条,请问如何使外面的frame 变大.
2.在上面的那个对话框中有一个输入框,如何使输入框中输入的文字的颜色为红色,这个问题SDI和DIALOG都不清楚.
3.如何改变SDI程序的标题, 我在mainframe.cpp中单击状态栏中的一个图标的函数中加入 SetWindowText(_T("fsafsafsdfsdafsda"));就可以实现,但是我把这句话加到CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函数里面就不可以,请问如何实现!
谢谢,在线等.
解决方案 »
- 多个文件需要1个头文件,如何呢?
- 我在对话框上 画了一个圆 怎么让这个圆响应左键按下弹起的消息? 怎么让这个圆拖动起来?
- 当鼠标移动到图标上时,如何让高亮并凸出显示
- 新建一个多文档,文档启动时会自动生成一个文档,如何设置,使启动时不启动文档
- 请教各位大虾,vc++编写的DLL给vb调用出现“DLL调用约定错误”,帮忙
- 谁能详细描述下“管道名称”,如“\\ServerName\pipe\PipeName”的意义?win98支持命名管道吗?
- 求CListCtrl的CScrollBar的自画方法
- 如何用C++编DOS下的copy程序
- 不知道大家注意到没有,2001年全球最受欢迎的十大软件排名第一的Direct Connect居然是用VB写的,可怜我学VC学得好苦
- 如何实现这样的一个DLL?
- 向高手请教:VC++中的soap编程!!急切等待中......
- 这是个常常出现却又不得其解的问题
2.处理WM_CTRLCOLOR.
3.加载文档后,就改变你的标题了,方法是重载CDocument的OnSetTitle.
2.字体成红字最简单是继承下CEdit,因为显示什么颜色本来就属于Edit的事儿
3.其实我觉得用SetWindowText最彻底
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style &= ~FWS_ADDTOTITLE;
m_strTitle="管理系统"; //修改标题,
}
还有用SetWindowText()肯定是可以的。
在BOOL C***App::InitInstance()里用 m_pMainWnd->SetWindowText();
① 先创建一个基于对话框的工程,命名为test,然后在对话框上加入一个EDIT控件。
② 在testDlg.h中加入一个成员变量:CBrush m_brush;
③ 在OnInitDialog()中,加入m_brush.CreateSolidBrush( RGB(0,0,0 );此处设置的RGB值可以改变的颜色。
④ 点击Class Wizard,给testDlg加入WM_CTLCOLOR事件,单击Edit Code按钮,然后把改函数的内容替换为如下代码:
if (nCtlColor== CTLCOLOR_EDIT)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255,255));//此处设置字体的颜色
return (HBRUSH)m_brush.GetSafeHandle();
}
else
return CDialog::OnCtlColor (pDC, pWnd, nCtlColor);
还是重载OnCtlColor 即WM_CTLCOLOR消息:
HBRUSH CExampleDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
//在这加一条是否为对话框的判断语句
if(nCtlColor ==CTLCOLOR_DLG)
return m_brush; //返加你自己定义的颜色刷子
return hbr;
}
OnInitDialog时初始创建它 m_hBrush = CreateSolidBrush(RGB(0,255,0))
重载 WndProc
LRESULT CDlgDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
HWND hEdit = ::GetDlgItem(m_hWnd,IDC_INPUT); if(message == WM_CTLCOLOREDIT && (HWND)lParam == hEdit)
{
SetBkMode((HDC)wParam,TRANSPARENT);
::SetTextColor((HDC)wParam,RGB(255,0,0));
return (LRESULT)m_hBrush;
}
return CDialog::WindowProc(message, wParam, lParam);
}