MFC常用方法总结一
2015-04-22 19:14
351 查看
1. 在任务栏隐藏对话框
ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);
2. 使对话框为顶层窗口
SetWindowPos(&this->wndTopMost,0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE)
3. 在运行时添加最大化,最小化按钮
SetWindowLong(this->m_hWnd,GWL_STYLE,
GetWindowLong(this->m_hWnd,
GWL_STYLE) |
WS_MINIMIZEBOX
| WS_MAXIMIZEBOX);
UpdateWindow();
4. 使能对话框右上角关闭按钮
在OnInitDialog中
方法一:
CMenu* menu = GetSystemMenu(FALSE);
menu->ModifyMenu(SC_CLOSE, MF_BYCOMMAND | MF_GRAYED );
方法二:
CMenu* menu = GetSystemMenu(FALSE);
menu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);
5. 当对话框一部分在屏幕外时,显示全部对话框
SendMessage(DM_REPOSITION);
6. 改变鼠标外形
添加 WM_SETCURSOR 消息映射函数
BOOL CTest6Dlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_HELP));
return 0;
}
7. 改变对话框背景色和文本颜色
在CTest6App的InitInstance中添加
SetDialogBkColor(RGB(255,0,0), RGB(0,255,0));
8. 改变对话框caption上的图标
导入自己的图标资源到工程中,把原来ID为 IDR_MAINFRAME 的资源删除,把新的
4000
图标的ID命名为IDR_MAINFRAME
9. 在主对话框显示前,显示一个login对话框
BOOL CTest6App::InitInstance()
{
//...
int nResponse;
CLoginDlg loginDlg;
nResponse = loginDlg.DoModal();
if (nResponse == IDOK)
{
}
if (nResponse == IDCANCEL)
{
return FALSE;
}
CTest6Dlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK )
{
}
else if (nResponse == IDCANCEL)
{
}
return FALSE;
}
然后重载CLoginDlg对话框的哦OnOK(),在其中判断条件
void CLoginDlg::OnOK()
{
if (条件满足)
CDialog::OnOK();
else
AfxMessageBox(_T("invalid password!"));
}
10. 在对话框中添加工具栏
方法一:添加以下代码到OnInitDialog 中
if
( !m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_TOOLBAR1) )
{
TRACE0("Failed
to Create Dialog Toolbar\n");
EndDialog(IDCANCEL);
}
CRect
rcClientOld; // 久客户区RECT
CRect
rcClientNew; // 加入TOOLBAR后的CLIENT RECT
GetClientRect(rcClientOld);
//
//
Called to reposition and resize control bars in the client area of a window
//
The reposQuery FLAG does not really traw the Toolbar. It only does the calculations.
//
And puts the new ClientRect values in rcClientNew so we can do the rest of the Math.
//重新计算RECT大小
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,
AFX_IDW_CONTROLBAR_LAST,
0,
reposQuery,
rcClientNew);
//
All of the Child Windows (Controls) now need to be moved so the Tollbar does not cover them up.
//所有的子窗口将被移动,以免被TOOLBAR覆盖
//
Offest to move all child controls after adding Tollbar
//计算移动的距离
CPoint
ptOffset(rcClientNew.left-rcClientOld.left,
rcClientNew.top-rcClientOld.top);
CRect
rcChild;
CWnd*
pwndChild = GetWindow(GW_CHILD); //得到子窗口
while(pwndChild)
// 处理所有子窗口
{
//移动所有子窗口
pwndChild->GetWindowRect(rcChild);
ScreenToClient(rcChild);
rcChild.OffsetRect(ptOffset);
pwndChild->MoveWindow(rcChild,FALSE);
pwndChild
= pwndChild->GetNextWindow();
相关文章推荐
- MFC常用方法总结二
- MFC常用方法总结三
- MFC中常用控件使用方法总结
- java8中的stream,function包的常用方法总结
- DIV+CSS 清除浮动常用方法总结
- CSS常用清除浮动方法总结
- 项目笔记之Javascript常用方法split parseInt和 Date.parse总结
- C语言常用的三种排序方法总结与探讨
- 常用计算机文章搜索方法总结
- web常用方法总结
- 系统管理中 bash shell 脚本常用方法总结
- mfc combo box 控件使用方法总结
- 谈谈JavaScript数组常用方法总结
- HttpWebRequest和HttpWebRespone的常用方法总结
- waf平台常用方法总结
- JavaScript 常用方法总结
- ios开发总结:Utils常用方法等收集,添加扩展类,工具类方法,拥有很多方便快捷功能(不断更新中。。。)
- Java常用方法总结
- Python 字典常用方法总结
- 关于Qt中常用的延时方法--自我总结