1、MFC改变窗口大小
在app类中BOOL CwindowsizeApp::InitInstance()的m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();之前加上m_pMainWnd->MoveWindow(CRect(100,100,300,600),FALSE);
禁止最大最小框在MainFrame类的CMainFrame::PreCreateWindow(CREATESTRUCT&cs)
中添加
cs.style&= ~WS_THICKFRAME;//禁用Title上的按钮
cs.style &= ~WS_MAXIMIZEBOX;//禁止窗口最大化
cs.style &= ~WS_MINIMIZEBOX;//禁止窗口最小化
cs.style &= ~WS_SIZEBOX;//禁止改变窗口大小
2、隐藏状态栏、工具栏、系统菜单
在MainFrame类intCMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
1)//隐藏菜单栏
m_wndMenuBar.ShowWindow(FALSE);
2)//删除状态栏
// if(!m_wndStatusBar.Create(this))
// {
// TRACE0("未能创建状态栏\n");
// return-1; // 未能创建
// }
// m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT));
3)//去掉最大化、最小化、关闭按钮、标题栏
ModifyStyle(WS_CAPTION,0,SWP_FRAMECHANGED);
3、MFC显示位图
//voidCogremfc20110719View::OnPaint()
//{
// CPaintDC dc(this); // device context forpainting
// // TODO: 在¨²此ä?处ä|添¬¨ª加¨®消?息¡é处ä|理¤¨ª程¨¬序¨°代䨲码?
// // 不为绘图消?息¡é调Ì¡Â用®? CView::OnPaint()
// BITMAP bm;
// CBitmap bmp;//定义CBitmap类的对象
// bmp.LoadBitmap(IDB_BITMAP1);//装入ID号为IDB_BITMAP1的位图
// CDC memdc;//定义CDC类的对象
// CRect rect;
// memdc.CreateCompatibleDC(&dc);//创建与显示DC相容的内存DC
// bmp.GetBitmap(&bm);
// CBitmap*bmpold=memdc.SelectObject(&bmp);//将选定的位图选入内存DC
// this->GetClientRect(&rect);
// //从内存DC向显示DC复制,rect.left,rect.top为图像左上角的坐标SRCCOPY表示直接将源位图拷贝到目的位图,不作修改
// dc.BitBlt(rect.left,rect.top,bm.bmWidth,bm.bmHeight,&memdc,0,0,SRCCOPY);
// memdc.SelectObject(bmpold);
// memdc.DeleteDC();
// bmp.DeleteObject();
// OnDraw(NULL);
//}
4、得到屏幕大小
int x = ::GetDeviceCaps(hDC,HORZRES)/2;
int y = ::GetDeviceCaps(hDC,VERTRES)/2;
5、常见错误
1、语法错误: 缺À少; (在*的前面)
缺少类型说明符假定为int注意: C++ 不支持默认int
缺少类型说明符假定为int注意: C++ 不支持默认int
原因:命名空间或类前缺少 class 标识符
6、注意事项:有启动界面时,不要把窗口初始化为最大化
7、MFC去掉单文档的"无标题-"的方法
在MainFrm.cpp中,找到PreCreateWindow函数,增加如下代码。
// TODO: 在此处通过修改
// CREATESTRUCT cs 来修改窗口类或样式
cs.style&=~FWS_ADDTOTITLE;
cs.lpszName = WindowName;
8、设置CEdit字体
在父窗口定义 CFont font;
在CEdit 定义前加上
font.CreatePointFont(200,"字体名",NULL);
pEdit->SetFont(&font);
9、使一个变量N在0~n之间变换
N = ++N%n 取模运算
10、在子类中获得父类中视类的句柄
CDC *pDc =GetParentFrame()->GetActiveView()->GetDC();
11、实现鼠标左键按下拖动对话框
添加LButtonDown消息相应在里面添加如下代码:
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
CDialogEx::OnLButtonDown(nFlags, point);