MFC tips 1

1)View/SubWindow communication:
--Inside SubWindow
CMyObject *pObject = new CMyObject;
pObject->SetProperties();
m_pView->PostMessage(WM_XXX, (WPARAM)pObject, NULL)

--Viw Msg handler
OnMessageXXX(WPARAM wparam, LPARAM lparam)
{
CMyObject *p = (CMyObject*)wparam;
if (p)
{
    p->DoSth();
    delete p;
}

2)Load Subwindow as Tabsheet

3)List ctrl, how to synchronize internal data structure and UI


4)SetTimer, WM_TIMER

5)Manually add command range
ON_COMMAND_RANGE(ID_start, ID_end, OnCmd) //case id, do something
ON_UPDATE_COMMAND_UI_RANGE(ID_start, ID_end, OnUpdateCmdUi) //case id, SetEnable, SetCheck

6)Customize menu
//remove "File" menu
GetParentFrame()->GetMenu()->RemoveMenu(0, MF_BYPOSITION);

7)Update status bar
i)
define a new string resource: ID_INDICATOR_MY

ii)
append this string to status indicators
static UINT indicators[] =
{
    ID_SEPARATOR,           // status line indicator
    ID_INDICATOR_CAPS,
    ID_INDICATOR_NUM,
    ID_INDICATOR_MY
};

iii) set text
void CMyTestView::OnBnClickedButton1()
{
    CStatusBar *pBar = &((CMainFrame*)GetParentFrame())->m_wndStatusBar;
    pBar->SetPaneText(pBar->CommandToIndex(ID_INDICATOR_MY), "Msg");
}


8)Query close at application exit
void CMainFrame::OnClose()
{
    char szCap[64];
    GetWindowText(szCap, 64);
    if (MessageBox("Are You Sure You Want to Quit", szCap, MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2) == IDNO)
        return;

    __super::OnClose();
}


9)Show/Hide toolbar
inside CMainFrame
ShowControlBar(&m_wndToolBar, !m_wndToolBar.IsVisible(), FALSE);

 

///

MFC get current directory

///

//GetModuleFileName (more accurated)
TCHAR szFullPath[MAX_PATH];
TCHAR szDir[_MAX_DIR];
TCHAR szDrive[_MAX_DRIVE];
CString strAppDir;
::GetModuleFileName(NULL, szFullPath, MAX_PATH);
_splitpath(szFullPath, szDrive, szDir, NULL, NULL);
strAppDir.Format(_T("%s%s"), szDrive, szDir);


// GetCurrentDirectory: output reault in debug mode(under IDE) and runtime mode is different
char szDir[MAX_PATH];
GetCurrentDirectory(MAX_PATH, szDir);
printf("szDir = %s/n", szDir);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值