Code Library

Free Source Code and Program Tips

Another discussion about stack vs. heap

In post “Stack vs. Heap“, we have discussed about stack and heap, and given the simple rules on the choice of stack or heap. And today, we give some simple examples for a clear image. Typically, if an element does not need to exist beyond the scope of its variable, you are much better off [...]

Stack vs. Heap

Here is a simple rule when to define objects on the heap and when to do it on the stack. The stack is much more efficient than the heap. Simple rule: Use the stack when you can. You cannot use the stack if you need the object in other functions. (Stack allocations are deleted when [...]

How to Adding CTreeCtrl in CListCtrl

In some case, you need such a control as the following figure: It’s a CListCtrl like control, but it binds a CTreeCtrl in the first column. But you can also consider it as a CTreeCtrl and each of the items has the list style. All roads lead to Rome. But in 1999, David Lantsman has [...]

After you modified your reource.h, you may got this error: fatal error RC1004: unexpected end of file found. It’s a bug of the resource compiler. The solution is adding a blank line or two to the end of the file  and build again.

How to send/post message to CDocument?

Sometime you need to send/post message to CDoumnet, but CDocument is not a window, and it can’t receive message. How do that? There are 3 solutions: Solution 1: Send the message to the main window. Send/Post the message to the main frame or the view, and then call some functions of the document. But if [...]

How to use an derived CListCtrl in CListView

Sometime you use CListView and need to extend the functionality of the CListCtrl of the view. For example, you want to overwrite the handler function of the NM_CUSTOMDRAW or WM_SIZE message. So the problem is: How to tell CListView to use your own CListCtrl? OK, you are on the wrong way now. The CListView does [...]

Set the head backgroud color of CPropertyPage

How to set the head backgroud color of CPropertyPage? In the DrawItem function the TextOut position is pretty half-hearted, and looks a bit better (to my eyes) if you do it something like this instead. void CMyTabCtrl::DrawItem(LPDRAWITEMSTRUCT lpDIS) { CDC* pDC = CDC::FromHandle(lpDIS->hDC); CRect rc(lpDIS->rcItem); TCHAR szTabText[255]; TC_ITEM tci; tci.cchTextMax = sizeof(szTabText)-1; tci.pszText = szTabText; [...]

How to set the backgroud color of CPropertyPage

How to set the backgroud color of CPropertyPage? If you override OnCtlColor in your property page, then you can return a different background color and that seems to work with CStatic and other items. But what if you want is a background that’s not just a simple color? You’d like to be able to draw [...]

How to select the item of ListView(CListCtrl)

Use CListCtrl::SetItemState with LVIS_SELECTED

In MFC program, you’d better try to avoid using std::string. There is no compelling reason to use it in MFC, and it leads to confusion. There are some standard method to translate among Cstring ,string and char[]. // Suppose CString str; std::string s; char buf[SIZE]; // from CString to std::string s = str; // from [...]