Now I'm using the script below, and it's working perfectly as I expected.
This can be a general solution to everyone who is interested to integrate Cppcheck with Vim.
Of course, this script can be improved a lot. But it's a starting point for them.
" vimcppcheck.vim
" ===================================================================
" Code Checking with cppcheck (1)
" Thanks to Mr. Ingo Karkat
" http://stackoverflow.com/questions/19157270/vim-cppcheck-which-errorformat-to-use
" ===================================================================
function! Cppcheck_1()
setlocal makeprg=cppcheck\ --enable=all\ %
" earlier it was: " setlocal errorformat=[%f:%l]:%m
" fixed by an advise by Mr. Ingo Karkat
setlocal errorformat+=[%f:%l]\ ->\ %m,[%f:%l]:%m
let curr_dir = expand('%:h')
if curr_dir == ''
let curr_dir = '.'
endif
echo curr_dir
execute 'lcd ' . curr_dir
execute 'make'
execute 'lcd -'
exe ":botright cwindow"
:copen
endfunction
:menu Build.Code\ Checking.cppcheck :cclose<CR>:update<CR>:call Cppcheck_1() <cr>