VC++MFC基于CFormView类的单文档基本使用:
1程序运行窗口标题图标的改变:
在资源视图中的Icon文件夹中导入图表资源修改图标ID为:IDR_MAINFRAME
重新运行后程序图表已经改变为你加载的那个图标。
2修改程序窗口标题名称有两处可修改:
一处是在
// SingleViewTestDoc.cpp : implementationof the CSingleViewTestDoc class
//
BOOL CSingleViewTestDoc::OnNewDocument()
{
if(!CDocument::OnNewDocument())
returnFALSE;
//TODO: add reinitialization code here
//(SDI documents will reuse this document)
SetTitle("XXXXXX"); //设置标题
returnTRUE;
}
另外一处是在资源视图的String Table文件夹中,双击进去修改ID为IDR_MAINFRAME的Caption(标题)
3菜单栏:
菜单栏和工具栏在资源视图中的Menu和 Toolbar中可以看到,是用的同一个ID。其对应的操作也是对于同一个ID。(就像快捷方式的功能一样)接着在菜单栏中选中某一个选项事件,右击选择类向导,取消。(或者自己手动添加函数映射)在Object IDs选择对应的选项ID,在Messages中选择Command,在类中选择View类。增加函数并编辑程序代码实现相应的功能。
m_xxxdlg.Create(IDD_XXX,&m_tabcontrl); //在容器中创建窗口对象
m_xxxdlg.ChangState(&m_xBool,&m_xxBool,&m_xxxBool,&m_xxxxBool,&m_xxxxxBool,&m_xxxxxxBool); //改变状态
m_tabcontrl.SetCurSel(2); //设置光标定位
m_xxxdlg.SetWindowPos(NULL,10,30,m_tabrect.right-20,m_tabrect.bottom-40,SWP_SHOWWINDOW ); //设置对话框窗口定位并显示
m_xBool = FALSE; //bool变量,对于菜单栏和工具栏的使能按钮触发
m_xxBool=FALSE;
m_xxxBool=FALSE;
m_xxxxBool=FALSE;
m_xxxxxBool=FALSE;
m_xxxxxxBool=FALSE;
//。。。。。。
//利用者两个函数来处理菜单栏和工具栏的使能事件
ON_UPDATE_COMMAND_UI(IDI_XXX, OnUpdateXXX) //实时刷新
ON_COMMAND(IDI_XXX, OnXXX)
void CXXXView::OnUpdateXXX(CCmdUI* pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->Enable(m_XXXBool);
}
4工具栏显示:
鼠标悬停处文字提示:在工具栏中双击某一个位图,在Prompt中\n后添加提示文字。
// MainFrm.h : interface of the CMainFrameclass
//
public:
CStatusBar m_wndStatusBar; //状态条
protected: // control bar embedded members
CToolBar m_wndToolBar; //工具条
CImageList m_ilTB; //图像列表
// MainFrm.cpp : implementation of theCMainFrame class
//
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if(CFrameWnd::OnCreate(lpCreateStruct) == -1)
return-1;
if(!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
|CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failedto create toolbar\n");
return-1; // fail to create
}
if(!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failedto create status bar\n");
return-1; // fail to create
}
//新添加的程序代码
m_wndStatusBar.SetPaneInfo(0,0,0,200); //状态条的设置
m_wndStatusBar.SetPaneInfo(1,0,0,200);
m_wndStatusBar.SetPaneInfo(2,0,SBPS_STRETCH,200);
m_wndStatusBar.SetPaneInfo(3,0,0,200);
m_ilTB.Create(48, 48, TRUE | ILC_COLOR8,9, 0); //图像列表的创建
HICONhIcon = NULL;
hIcon =(HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_XXX),
IMAGE_ICON, 48,48, 0);
m_ilTB.Add(hIcon);
hIcon= (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_XXX),
IMAGE_ICON,48, 48, 0);
m_ilTB.Add(hIcon);
hIcon= (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_XXX),
IMAGE_ICON,48, 48, 0);
m_ilTB.Add(hIcon);
hIcon= (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_XXX),
IMAGE_ICON,48, 48, 0);
m_ilTB.Add(hIcon);
hIcon= (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_XXX),
IMAGE_ICON,48, 48, 0);
m_ilTB.Add(hIcon);
hIcon= (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_XXX),
IMAGE_ICON,48, 48, 0);
m_ilTB.Add(hIcon);
hIcon= (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_XXX),
IMAGE_ICON,48, 48, 0);
m_ilTB.Add(hIcon);
hIcon= (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_XXX),
IMAGE_ICON,48, 48, 0);
m_ilTB.Add(hIcon);
hIcon= (HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_XXX),
IMAGE_ICON,48, 48, 0);
m_ilTB.Add(hIcon);
m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ilTB);
this->CenterWindow();
// TODO: Deletethese three lines if you don't want the toolbar to
// be dockable
//m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
//EnableDocking(CBRS_ALIGN_ANY);
//DockControlBar(&m_wndToolBar);
//对话框右上角“X”关闭按钮禁用
GetSystemMenu(FALSE)->EnableMenuItem(SC_CLOSE,MF_DISABLED);
GetSystemMenu(FALSE)->EnableMenuItem(SC_MAXIMIZE,MF_DISABLED);
return0;
}
5状态栏显示:
// SingleViewTestView.h : interface of theCSingleViewTestView class
//
类中定义:
public:
//定时器计算系统运行时间
intm_starttime ;
longint m_currenttime;
DWORDm_timerHandle;
//控制状态栏
CStatusBar * pstatus;
//状态栏显示
CStringm_developer;
CStringm_currentuser;
CStringm_systemtime;
SYSTEMTIME m_timeSystime;
// SingleViewTestView.cpp : implementationof the CSingleViewTestView class
//
#include"MainFrm.h" //头文件包含
afx_msg void OnTimer(UINT nIDEvent);
ON_WM_TIMER()
void CSingleViewTestView::OnTimer(UINTnIDEvent)
{
//TODO: Add your message handler code here and/or call default
m_currenttime= GetTickCount();
//RunStateShow(0);
longint runtime = m_currenttime - m_starttime;
intcomputerHours = (runtime / (3600 * 999)) % 24;
intcomputerminutes = (runtime / (60 * 999)) % 60;
intcomputerseconds = (runtime / 999) % 60;
//m_runtime.Format("%d:%d:%d",computerHours,computerminutes,computerseconds);
GetLocalTime(&m_timeSystime);
m_systemtime.Format(" %4d/%02d/%02d %02d:%02d:%02d",m_timeSystime.wYear,m_timeSystime.wMonth,m_timeSystime.wDay,m_timeSystime.wHour,m_timeSystime.wMinute,m_timeSystime.wSecond);
pstatus->SetPaneText(3,m_systemtime);
//UpdateData(FALSE);
CFormView::OnTimer(nIDEvent);
}
void CSingleViewTestView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
//新增程序代码,这里是TabCtrl控件容器的选项显示
TCITEMitem;
item.mask= TCIF_TEXT;
item.pszText= "管理";
m_tabcontrl.InsertItem(0,&item);
item.pszText="匹配";
m_tabcontrl.InsertItem(1,&item);
item.pszText= "分配";
m_tabcontrl.InsertItem(2,&item);
item.pszText="操作";
m_tabcontrl.InsertItem(3,&item);
item.pszText= "记录";
m_tabcontrl.InsertItem(4,&item);
item.pszText="用户";
m_tabcontrl.InsertItem(5,&item);
//
CMainFrame * pFram = (CMainFrame*) AfxGetApp()->m_pMainWnd;
m_timerHandle= SetTimer(1,1000,NULL);
pstatus = &(pFram->m_wndStatusBar);
CStringdeveloper = "XXXXXX";
pstatus->SetPaneText(2,developer);
}