[RESOLVED] How to find problem in MFC program
CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Page 1 of 2 12 LastLast
Results 1 to 15 of 23

Thread: [RESOLVED] How to find problem in MFC program

  1. #1
    Join Date
    Jun 1999
    Location
    SW Missouri
    Posts
    3,425

    [RESOLVED] How to find problem in MFC program

    Hi,
    I'm modifying large bridge playing program written in C++ using MS Visual C++ 6.0 and am having a problem with the program. When I run it in Auto Test mode: it deals, bids and plays hands and posts the results to a dialog window, after 181 hands the GUI in the dialog window stops being updated and if I move the dialog window I get an error message: "Easybridge has encountered a problem ...". The error report lists ModName: ntdll.dll, offset: 0120e.
    If I let the dialog box be displayed for several minutes when it has reached 181 hands, its display is NOT updated and nothing happens until I touch it or open another window on top of it. The program appears to have been running while the display was frozen at 181 hands because when I open Wordpad, the display jumps to show more hands played.

    On Entering Debug I see one entry for the EasyBridge program in the call stack. The statement at the line shown in the call stack is: if (!AfxGetApp()->PumpMessage())

    Also on the stack there is a failed Assert in MFC42D.DLL SelectObject() at line 558 where m_hDC is = NULL

    The PumpMessage() statement is in the loop where the program deals, bids and plays the name. The full loop's code follows:
    Code:
    	do
    	{
    #ifdef _DEBUG
    		msOld.Checkpoint(); // NCR-AT debug
    #endif
    		// play continuously
    
    		// deal a new hand
    		m_strStatus = "Dealing...";
    		UpdateData(FALSE);
    		pDOC->DealHands();
    		numHands++;
    
    		// and get bids
    		m_strStatus = "Bidding...";
    		UpdateData(FALSE);
    		do 
    		{
    			// get the computer's bids
    			int nPos = pDOC->GetCurrentPlayerPosition();
    			int nBid = pDOC->GetCurrentPlayer()->Bid();
    			nCode = pDOC->EnterBid(nPos, nBid);
    			if ((nCode == -99) || (nCode == 1))
    			{
    				// passed out, or 3 passes, and bidding is complete
    				break;
    			}
    			else if (nCode == -1) 
    			{
    				AfxMessageBox("Error in Bidding Dialog!");
    				bBreak = TRUE;
    				break;
    			}
    		} while (!bBreak);
    
    		// bidding is complete; see if we reached a contract
    		if (nCode == -99)
    			continue;	// passed out, so redeal
    
    		// start timeing
    		long lStartTime = timeGetTime();
    
    		// now play out the hand -- play on full auto
    		theApp.SetValue(tnCardPlayMode, CEasyBApp::PLAY_FULL_AUTO_EXPRESS);
    		pDOC->SetValue(tbExpressPlayMode, TRUE);
    		pDOC->InvokeNextPlayer();
    
    		// pump the mesage loop while the hand is being played out
    		m_strStatus = "Playing hand...";
    		UpdateData(FALSE);
    		if(numHands == 180) { // NCR-AT stop just before abend
    			if (AfxMessageBox("The Practice abends at about game 181.  Do you wish to continue?", 
    			               MB_ICONQUESTION | MB_YESNO) == IDNO)
    			break;
    		} // NCR-AT end
    		MSG msg;
    		int cnt = 0;  // NCR-AT debug
    		while (::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) 
    		{ 
    			if (!AfxGetApp()->PumpMessage()) 
    			{ 
    				::PostQuitMessage(0); 
    				return; 
    			}
    			cnt++; // NCR-AT
    		} 
    
    		totalCnt += cnt; // NCR
    		TRACE("numHands=%d  cnt=%d totalCnt=%d\n", numHands, cnt, totalCnt); // NCR
    		
    		// reset flags
    		pDOC->SetValue(tbExpressPlayMode, FALSE);
    
    		// end timer 
    		lNumHands++;
    		long lEndTime = timeGetTime();
    		lfTotalTime += (lEndTime - lStartTime);
    		strAvgTime.Format(_T("%.1f secs"), lfTotalTime / (lNumHands*1000));
    		//
    		CStatic* pText = (CStatic*) GetDlgItem(IDC_AVG_TIME);
    		pText->SetWindowText(strAvgTime);
    		pText->UpdateWindow();
    		//
    		CStatic* pLabel = (CStatic*) GetDlgItem(IDC_LABEL_AVGTIME);
    		if (!pLabel->IsWindowVisible())
    		{
    			pLabel->ShowWindow(SW_SHOW);
    			pLabel->UpdateWindow();
    		}
    
    		//
    		if (m_bStopFlag)
    			break;
    
    		// save results and update the display
    		Update();
    
    #ifdef _DEBUG
    		// NCR-AT dump every so often
    		if(numHands % 100 == 1) 
    		{
    			msNew.Checkpoint();
    			msDif.Difference( msOld, msNew );
    			msDif.DumpStatistics();
    			if(numHands < 20)
    				msOld.DumpAllObjectsSince(); // only want a couple
    		}
    #endif
    	} while (!bBreak);
    How do I find out what my program is doing to the Windows environment that is causing the problem and fix it?

    Any other comments welcome

    Thanks,
    Norm
    Norm

  2. #2
    Arjay's Avatar
    Arjay is offline Moderator / MS MVP Power Poster
    Join Date
    Aug 2004
    Posts
    11,236

    Re: How to find problem in MFC program

    If you can run the code under the debugger, once the program crashes, look at the call stack to determine what part of your program caused the failure in the MFC dll.

    If you can't run under a debugger, the put in some assert and trace statements. Add asserts to all returned pointer values. Use TRACE statements and a program like DbgView to find out where you are in the program.

  3. #3
    Join Date
    Jun 1999
    Location
    SW Missouri
    Posts
    3,425

    Re: How to find problem in MFC program

    Thanks for the response.
    When the problem happens, I enter a debugger and look at the call stack. I included info about the call stack in my first post. I'll try it from the debugger to see if the call stack is different.

    Another observation: If I open the program and before starting AutoPlay, I C+A+D to start the task manager and leave the taskmanager running on top of the program's window, when I then start the AutoPlay part of the program, the program runs as before (updates the dialog window stats up to hand 181) and then continues running!!! It updates the stats every so often, say every 10 to 50 hands and continues running. It got to over 1000 hands before I got tired of waiting and ended it. Also sometime while its running, the whole of the monitor screen is painted the same color as the dialog window background (light tan) and only the controls that are being updated in the dialog window and in the task manager show. The window's border and controls do not show.
    Norm

  4. #4
    Join Date
    Feb 2005
    Posts
    2,160

    Re: How to find problem in MFC program

    I'm curious about the "m_hDC is = NULL" ASSERT. Is this from your OnPaint handler? If so, could you post your OnPaint code? I think this might be the cause of the painting problem and may be the root cause. If the program is doing painting outside of OnPaint, this could cause issues as well.

  5. #5
    Join Date
    Jun 1999
    Location
    SW Missouri
    Posts
    3,425

    Re: How to find problem in MFC program

    Thanks for the response.
    I'll have to check what the code does in the OnPaint() method.
    Here's the call stack for when the error occurs:
    Code:
    NTDLL! 7c90120e()
    _CrtDbgReport(int 2, const char * 0x5f4ac1c8 _szAfxWinInl, int 558, const char * 0x00000000, const char * 0x00000000) line 353
    AfxAssertFailedLine(const char * 0x5f4ac1c8 _szAfxWinInl, int 558) line 39 + 20 bytes
    CDC::SelectObject(CBitmap * 0x001293b4 {CBitmap}) line 558 + 34 bytes
    CJ609LIBD! 00344f15()
    CWnd::OnWndMsg(unsigned int 15, unsigned int 0, long 0, long * 0x00129564) line 1825
    CWnd::WindowProc(unsigned int 15, unsigned int 0, long 0) line 1585 + 30 bytes
    AfxCallWndProc(CWnd * 0x00f4d8d8 {CWnd hWnd=0x000105c4}, HWND__ * 0x000105c4, unsigned int 15, unsigned int 0, long 0) line 215 + 26 bytes
    AfxWndProc(HWND__ * 0x000105c4, unsigned int 15, unsigned int 0, long 0) line 368
    AfxWndProcBase(HWND__ * 0x000105c4, unsigned int 15, unsigned int 0, long 0) line 220 + 21 bytes
    USER32! 7e418734()
    USER32! 7e418816()
    USER32! 7e428ea0()
    USER32! 7e428eec()
    NTDLL! 7c90e453()
    USER32! 7e418a10()
    USER32! 7e427721()
    USER32! 7e4249c4()
    USER32! 7e43a956()
    USER32! 7e43a2bc()
    USER32! 7e4663fd()
    USER32! 7e4664a2()
    USER32! 7e450877()
    USER32! 7e45082f()
    __crtMessageBoxA(const char * 0x00129d5c, const char * 0x102509a0 `string', unsigned int 73746) line 65
    CrtMessageWindow(int 2, const char * 0x5f4ac1c8 _szAfxWinInl, const char * 0x0012ae90, const char * 0x00000000, const char * 0x0012ceb4) line 520 + 22 bytes
    _CrtDbgReport(int 2, const char * 0x5f4ac1c8 _szAfxWinInl, int 558, const char * 0x00000000, const char * 0x00000000) line 419 + 76 bytes
    AfxAssertFailedLine(const char * 0x5f4ac1c8 _szAfxWinInl, int 558) line 39 + 20 bytes
    CDC::SelectObject(CBitmap * 0x0012df80 {CBitmap}) line 558 + 34 bytes
    CJ609LIBD! 00339f7b()
    CWnd::OnWndMsg(unsigned int 15, unsigned int 0, long 0, long * 0x0012e120) line 1825
    CWnd::WindowProc(unsigned int 15, unsigned int 0, long 0) line 1585 + 30 bytes
    CControlBar::WindowProc(unsigned int 15, unsigned int 0, long 0) line 480 + 20 bytes
    AfxCallWndProc(CWnd * 0x00f4d780 {CHistoryWnd hWnd=0x000105c2}, HWND__ * 0x000105c2, unsigned int 15, unsigned int 0, long 0) line 215 + 26 bytes
    AfxWndProc(HWND__ * 0x000105c2, unsigned int 15, unsigned int 0, long 0) line 368
    AfxWndProcBase(HWND__ * 0x000105c2, unsigned int 15, unsigned int 0, long 0) line 220 + 21 bytes
    USER32! 7e418734()
    USER32! 7e418816()
    USER32! 7e428ea0()
    USER32! 7e428eec()
    NTDLL! 7c90e453()
    USER32! 7e42c228()
    UXTHEME! 5ad73bc2()
    UXTHEME! 5ad8c7f6()
    UXTHEME! 5ad71ac7()
    UXTHEME! 5ad8c2b1()
    USER32! 7e42f15c()
    USER32! 7e43e56d()
    USER32! 7e423c0a()
    USER32! 7e43e599()
    USER32! 7e418734()
    USER32! 7e418816()
    USER32! 7e42a013()
    USER32! 7e42a998()
    CWnd::DefWindowProcA(unsigned int 274, unsigned int 61458, long 26280543) line 1000 + 32 bytes
    CWnd::WindowProc(unsigned int 274, unsigned int 61458, long 26280543) line 1586 + 26 bytes
    AfxCallWndProc(CWnd * 0x0012f6d8 {CTestPlayDialog hWnd=0x000206e2}, HWND__ * 0x000206e2, unsigned int 274, unsigned int 61458, long 26280543) line 215 + 26 bytes
    AfxWndProc(HWND__ * 0x000206e2, unsigned int 274, unsigned int 61458, long 26280543) line 368
    AfxWndProcBase(HWND__ * 0x000206e2, unsigned int 274, unsigned int 61458, long 26280543) line 220 + 21 bytes
    USER32! 7e418734()
    USER32! 7e42bdf1()
    USER32! 7e428ea0()
    USER32! 7e428eec()
    NTDLL! 7c90e453()
    USER32! 7e42c228()
    UXTHEME! 5ad73bc2()
    UXTHEME! 5ad9882a()
    UXTHEME! 5ad71ac7()
    UXTHEME! 5ad8c2b1()
    USER32! 7e42f15c()
    USER32! 7e43e56d()
    USER32! 7e423c0a()
    USER32! 7e43e599()
    USER32! 7e418734()
    USER32! 7e418816()
    USER32! 7e42a013()
    USER32! 7e42a998()
    CWnd::DefWindowProcA(unsigned int 161, unsigned int 2, long 26280543) line 1000 + 32 bytes
    CWnd::WindowProc(unsigned int 161, unsigned int 2, long 26280543) line 1586 + 26 bytes
    AfxCallWndProc(CWnd * 0x0012f6d8 {CTestPlayDialog hWnd=0x000206e2}, HWND__ * 0x000206e2, unsigned int 161, unsigned int 2, long 26280543) line 215 + 26 bytes
    AfxWndProc(HWND__ * 0x000206e2, unsigned int 161, unsigned int 2, long 26280543) line 368
    AfxWndProcBase(HWND__ * 0x000206e2, unsigned int 161, unsigned int 2, long 26280543) line 220 + 21 bytes
    USER32! 7e418734()
    USER32! 7e418816()
    USER32! 7e4189cd()
    USER32! 7e4196c7()
    CWinThread::PumpMessage() line 846
    CTestPlayDialog::OnStart() line 360 + 28 bytes
    _AfxDispatchCmdMsg(CCmdTarget * 0x0012f6d8 {CTestPlayDialog hWnd=0x000206e2}, unsigned int 1148, int 0, void (void)* 0x0040115e CTestPlayDialog::OnStart(void), void * 0x00000000, unsigned int 12, AFX_CMDHANDLERINFO * 0x00000000) line 88
    CCmdTarget::OnCmdMsg(unsigned int 1148, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 302 + 39 bytes
    CDialog::OnCmdMsg(unsigned int 1148, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 97 + 24 bytes
    CWnd::OnCommand(unsigned int 1148, long 67306) line 2088
    CWnd::OnWndMsg(unsigned int 273, unsigned int 1148, long 67306, long * 0x0012f148) line 1597 + 28 bytes
    CWnd::WindowProc(unsigned int 273, unsigned int 1148, long 67306) line 1585 + 30 bytes
    AfxCallWndProc(CWnd * 0x0012f6d8 {CTestPlayDialog hWnd=0x000206e2}, HWND__ * 0x000206e2, unsigned int 273, unsigned int 1148, long 67306) line 215 + 26 bytes
    AfxWndProc(HWND__ * 0x000206e2, unsigned int 273, unsigned int 1148, long 67306) line 368
    AfxWndProcBase(HWND__ * 0x000206e2, unsigned int 273, unsigned int 1148, long 67306) line 220 + 21 bytes
    USER32! 7e418734()
    USER32! 7e418816()
    USER32! 7e42927b()
    USER32! 7e4292e3()
    USER32! 7e44ff7d()
    USER32! 7e4465d2()
    USER32! 7e425e94()
    USER32! 7e43b082()
    USER32! 7e418734()
    USER32! 7e418816()
    USER32! 7e4189cd()
    USER32! 7e418a10()
    USER32! 7e4274ff()
    USER32! 7e43c6d3()
    CWnd::IsDialogMessageA(tagMSG * 0x006ddc68 {msg=0x000000a1 wp=0x00000002 lp=0x0191025f}) line 182
    CWnd::PreTranslateInput(tagMSG * 0x006ddc68 {msg=0x000000a1 wp=0x00000002 lp=0x0191025f}) line 3424
    CDialog::PreTranslateMessage(tagMSG * 0x006ddc68 {msg=0x000000a1 wp=0x00000002 lp=0x0191025f}) line 92
    CWnd::WalkPreTranslateTree(HWND__ * 0x00040264, tagMSG * 0x006ddc68 {msg=0x000000a1 wp=0x00000002 lp=0x0191025f}) line 2667 + 18 bytes
    CWinThread::PreTranslateMessage(tagMSG * 0x006ddc68 {msg=0x000000a1 wp=0x00000002 lp=0x0191025f}) line 665 + 18 bytes
    CWinThread::PumpMessage() line 841 + 30 bytes
    CWnd::RunModalLoop(unsigned long 4) line 3478 + 19 bytes
    CDialog::DoModal() line 539 + 12 bytes
    CEasyBDoc::OnGameAutoTest() line 4949
    _AfxDispatchCmdMsg(CCmdTarget * 0x003f6810 {CEasyBDoc}, unsigned int 32928, int 0, void (void)* 0x004019c4 CEasyBDoc::OnGameAutoTest(void), void * 0x00000000, unsigned int 12, AFX_CMDHANDLERINFO * 0x00000000) line 88
    CCmdTarget::OnCmdMsg(unsigned int 32928, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 302 + 39 bytes
    CDocument::OnCmdMsg(unsigned int 32928, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 894 + 24 bytes
    CView::OnCmdMsg(unsigned int 32928, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 170 + 33 bytes
    CFrameWnd::OnCmdMsg(unsigned int 32928, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 894 + 33 bytes
    CWnd::OnCommand(unsigned int 32928, long 0) line 2088
    CFrameWnd::OnCommand(unsigned int 32928, long 0) line 321
    CMainFrame::OnCommand(unsigned int 32928, long 0) line 1121
    CWnd::OnWndMsg(unsigned int 273, unsigned int 32928, long 0, long * 0x0012fcc4) line 1597 + 28 bytes
    CWnd::WindowProc(unsigned int 273, unsigned int 32928, long 0) line 1585 + 30 bytes
    AfxCallWndProc(CWnd * 0x00f46180 {CMainFrame hWnd=0x00040264}, HWND__ * 0x00040264, unsigned int 273, unsigned int 32928, long 0) line 215 + 26 bytes
    AfxWndProc(HWND__ * 0x00040264, unsigned int 273, unsigned int 32928, long 0) line 368
    AfxWndProcBase(HWND__ * 0x00040264, unsigned int 273, unsigned int 32928, long 0) line 220 + 21 bytes
    USER32! 7e418734()
    USER32! 7e418816()
    USER32! 7e4189cd()
    USER32! 7e4196c7()
    CWinThread::PumpMessage() line 846
    CWinThread::Run() line 480 + 11 bytes
    CWinApp::Run() line 400
    AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f12, int 1) line 49 + 11 bytes
    WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f12, int 1) line 30
    WinMainCRTStartup() line 330 + 54 bytes
    KERNEL32! 7c817067()
    Norm

  6. #6
    Join Date
    Jun 1999
    Location
    SW Missouri
    Posts
    3,425

    Re: How to find problem in MFC program

    One thing I wonder about is why the display always freezes after displaying the stats for 181 hands. Would that mean that somewhere in Windows code there is a buffer with 181 entries and the 182nd entry causes the problem?
    Norm

  7. #7
    Join Date
    Feb 2005
    Posts
    2,160

    Re: How to find problem in MFC program

    This line does something:

    Code:
    		if(numHands == 180) { // NCR-AT stop just before abend
    			if (AfxMessageBox("The Practice abends at about game 181.  Do you wish to continue?", 
    			               MB_ICONQUESTION | MB_YESNO) == IDNO)
    			break;
    		} // NCR-AT end

  8. #8
    Arjay's Avatar
    Arjay is offline Moderator / MS MVP Power Poster
    Join Date
    Aug 2004
    Posts
    11,236

    Re: How to find problem in MFC program

    Quote Originally Posted by Norm View Post
    Would that mean that somewhere in Windows code there is a buffer with 181 entries and the 182nd entry causes the problem?
    No

  9. #9
    Join Date
    Jun 1999
    Location
    SW Missouri
    Posts
    3,425

    Re: How to find problem in MFC program

    Arjay,
    Any other suggestions on why the display stops updating at 181 hands?

    hoxsiew,
    That's my code to prevent the program reaching the error point. It allows me to exit the loop at 180 hand played ie. before the error happens.
    Norm

  10. #10
    Join Date
    Apr 2000
    Location
    Belgium (Europe)
    Posts
    3,831

    Re: How to find problem in MFC program

    Windows still has a lot of resources that have a limitation.
    Amount of GDI handles, windows etc. An error like this where everything appears to be running smoothly and suddenly you get 'weird' errors and graphic glitches usually indicate an issue somewhere with resources not getting cleaned up properly.

    Open task manager, open the 'Processes' tab. Make sure the Handles, USER objects and GDI objects columns are visible (add them via the menu: View, Select Columns).
    Run your program and see if any of those 3 numbers is continuously increasing as you play through the hands.
    Also keep a check on memory usage. It could be a memory leak and at 181 hands you run out of allocatable memory.

  11. #11
    Join Date
    Feb 2005
    Posts
    2,160

    Re: How to find problem in MFC program

    Quote Originally Posted by Norm View Post
    hoxsiew,
    That's my code to prevent the program reaching the error point. It allows me to exit the loop at 180 hand played ie. before the error happens.
    Oh, OK. I thought it suspicious that it matched your magic number, but I see that it is by design after the fact.

    It's difficult trying to debug your program from afar. If you want to zip it up and post it, I'd be happy to take a look (assuming it's VS2005 or VS2008). I suspect something in your painting routine is leaking.

  12. #12
    Join Date
    Jun 1999
    Location
    SW Missouri
    Posts
    3,425

    Re: How to find problem in MFC program

    OReubens,
    Thanks for the suggestions. I'll try to take a look.

    hoxsiew,
    Here's a link to my site with the parts for the EasyBridge program:
    http://sites.google.com/site/normsst...s-to-be-shared

    To run the test, you need to use the debug version and use the Game|Auto Test menu item
    Norm

  13. #13
    Join Date
    Apr 1999
    Posts
    27,424

    Re: How to find problem in MFC program

    Quote Originally Posted by Norm View Post
    To run the test, you need to use the debug version
    First, why do you need to use the debug version?

    Second, Microsoft's License says that it is not legal to distribute debug versions of your program. If you create a standalione EXE or DLL, it must use or depend on the release versions of the MFC and runtime libraries, not debug versions.

    Regards,

    Paul McKenzie
    Last edited by Paul McKenzie; January 17th, 2010 at 11:30 AM.

  14. #14
    Join Date
    Feb 2005
    Posts
    2,160

    Re: How to find problem in MFC program

    Quote Originally Posted by Norm View Post
    hoxsiew,
    Here's a link to my site with the parts for the EasyBridge program:
    http://sites.google.com/site/normsst...s-to-be-shared

    To run the test, you need to use the debug version and use the Game|Auto Test menu item
    Sorry, I can't seem to get anywhere with this. My caveat was that I only have VS2005 and VS2008 and this code appears to be VC6 code. There appears to be several files listed in the project that are missing, notably the View, which was the one I was most interested in seeing (where the paint routines should be).

  15. #15
    Join Date
    Jun 1999
    Location
    SW Missouri
    Posts
    3,425

    Re: How to find problem in MFC program

    Thanks everyone for your responses.

    Paul,
    The AutoTest menu item is only generated in the Debug version. I'm not distributing a Debug version. I've posted a Release version and the code for the whole project so that any programmer can create his own Debug version for testing.

    hoxsiew,
    Sorry for the misunderstanding. My first post described the project as "large bridge playing program written in C++ using MS Visual C++ 6.0". I thought my website had the FULL code from the original author: Steven Han. That's the code I started with. I believe that the problem exists in that code.

    OReubens,
    Your idea has pointed out where the problem must be. The GDI objects count in the task manager increases until it reaches 10,000 then stops. This is when the hands played reaches 181.
    I guess that the auto play code is not deleting some GDI Objects. How do I find which type of GDI Object is not being deleted?

    Also when I have the computer play both sides of a single hand, the GDI Objects count goes up by about 52. That compares to the amount per hand for the auto play mode: (10000-600)/181 = 51.9
    The 600 is the number of GDI Objects allocated by EB before the auto play.

    The interesting point here is that there are 52 cards in the deck. ????

    Below are usages of Create() and DeleteXXX in the program.

    Code:
    Searching for '.Create'...
    D:\CPlusPlus\EasyBridge\AutoHintDialog.cpp(96):	m_edit.Create(ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_CHILD | WS_BORDER | WS_VISIBLE | WS_VSCROLL, CRect(0,0,0,0), this, IDC_EDIT);
    D:\CPlusPlus\EasyBridge\BidDialog.cpp(524):	statusDlg.Create(CNNetAutotrainStatusDlg::IDD, this);
    D:\CPlusPlus\EasyBridge\Card.cpp(205):		m_prevBitmap.CreateCompatibleBitmap(pDC, m_nCardWidth, m_nCardHeight);
    D:\CPlusPlus\EasyBridge\Card.cpp(206):		m_hlPrevBitmap.CreateCompatibleBitmap(pDC, m_nCardWidth, m_nCardHeight);
    D:\CPlusPlus\EasyBridge\Card.cpp(331):	cardDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(332):	cacheDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(333):	maskDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(349):    tempBitmap.CreateCompatibleBitmap(pDC, m_nCardWidth, m_nCardHeight);
    D:\CPlusPlus\EasyBridge\Card.cpp(355):	saveDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(389):		cardDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(390):		cacheDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(391):		maskDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(398):    	tempBitmap.CreateCompatibleBitmap(pDC, m_nCardWidth, m_nCardHeight);
    D:\CPlusPlus\EasyBridge\Card.cpp(404):		saveDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(437):		cacheDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(474):	cacheDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(506):	oldBkDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(507):	newBkDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(508):	cacheDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(509):	cardDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(510):	maskDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Card.cpp(522):    tempBitmapNewBk.CreateCompatibleBitmap(pDC, m_nCardWidth, m_nCardHeight);
    D:\CPlusPlus\EasyBridge\Card.cpp(523):    tempBitmapCache.CreateCompatibleBitmap(pDC, m_nCardWidth, m_nCardHeight);
    D:\CPlusPlus\EasyBridge\Card.cpp(564):	saveDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Deck.cpp(200):	m_imageListCardBacks.Create(nCardWidth, nCardHeight, ILC_COLOR24 | ILC_MASK, 0, 32);
    D:\CPlusPlus\EasyBridge\Drawhand.cpp(96):		cacheDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Drawhand.cpp(99):	    tempBitmap.CreateCompatibleBitmap(pDC, rect.right, rect.bottom);
    D:\CPlusPlus\EasyBridge\Drawhand.cpp(1313):	cardDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Drawhand.cpp(1314):	cacheDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Drawhand.cpp(1315):	maskDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Drawhand.cpp(1321):    tempBitmap.CreateCompatibleBitmap(pDC, m_nCardWidth, m_nCardHeight);
    D:\CPlusPlus\EasyBridge\Easybvw.cpp(2058):	newBrush.CreateSolidBrush(theApp.GetValue(tnBackgroundColor));
    D:\CPlusPlus\EasyBridge\Easybvw.cpp(2184):	tempDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(428):			cacheDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(431):		    tempBitmap.CreateCompatibleBitmap(pDC, rect.right, rect.bottom);
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(650):		region.CreateRectRgn(pRect->left,pRect->top,
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(656):		region.CreateRectRgn(rect.left,rect.top,
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(693):	region.CreateRectRgn(nLeft,nTop,nRight,nBottom);
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(941):	titleDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(942):	cacheDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(943):	maskDC.CreateCompatibleDC(pDC);
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(963):    tempBitmap1.CreateCompatibleBitmap(&maskDC, nBMWidth, nBMHeight);
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(968):    tempBitmap2.CreateCompatibleBitmap(pDC, nBMWidth, nBMHeight);
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(1376):	region1.CreateRectRgn(m_cardDest[NORTH].x,m_cardDest[NORTH].y,
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(1379):	region2.CreateRectRgn(m_cardDest[WEST].x,m_cardDest[WEST].y,
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(1382):	m_tableRegion.CreateRectRgn(0,0,0,0);
    D:\CPlusPlus\EasyBridge\GIBMonitorThread.cpp(85):	m_gibDlg.Create(CGIBDialog::IDD, pParent);
    D:\CPlusPlus\EasyBridge\GIBMonitorThread.cpp(96):	gibDlg.Create(CGIBDialog::IDD, NULL);
    D:\CPlusPlus\EasyBridge\GIBMonitorThread.cpp(199):	m_gibDlg.Create(CGIBDialog::IDD, pMAINFRAME);
    D:\CPlusPlus\EasyBridge\GIBMonitorThread.cpp(230):	gibDlg.Create(CGIBDialog::IDD, m_pParent);
    D:\CPlusPlus\EasyBridge\GIBMonitorThread.cpp(294):	m_gibDlg.Create(CGIBDialog::IDD, pMAINFRAME);
    D:\CPlusPlus\EasyBridge\HistoryWnd.cpp(86):	if (!m_editBidding.Create(ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_VISIBLE, rect, this, IDC_EDIT1))
    D:\CPlusPlus\EasyBridge\HistoryWnd.cpp(91):	if (!m_editPlay.Create(ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_VISIBLE, rect, this, IDC_EDIT2))
    D:\CPlusPlus\EasyBridge\HistoryWnd.cpp(119):	m_lblBidding.Create(strLabel, WS_CHILD | WS_VISIBLE, rect, this, IDC_STATIC1);
    D:\CPlusPlus\EasyBridge\HistoryWnd.cpp(125):	m_lblPlay.Create(strLabel, WS_CHILD | WS_VISIBLE, rect, this, IDC_STATIC2);
    D:\CPlusPlus\EasyBridge\HistoryWnd.cpp(128):	m_btnBidding.Create(_T("Bidding"), WS_VISIBLE | BS_AUTOCHECKBOX | BS_PUSHLIKE, rect, this, IDC_CHECK1);
    D:\CPlusPlus\EasyBridge\HistoryWnd.cpp(129):	m_btnPlay.Create(_T("Play"), WS_VISIBLE | BS_AUTOCHECKBOX | BS_PUSHLIKE, rect, this, IDC_CHECK2);
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(616):	if (!m_wndToolBar.Create(this) ||
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(625):	if (!m_wndMenuBar.Create(this) ||
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(648):	if (!m_wndSecondaryToolBar.Create(this) ||
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(659):	if (!m_wndTestToolBar.Create(this) ||
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(766):		m_fixedFont.CreateFontIndirect(&logFont);
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(774):		m_standardFont.CreateFontIndirect(&logFont);
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(782):		m_smallFont.CreateFontIndirect(&logFont);
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(790):		m_largeFont.CreateFontIndirect(&logFont);
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(798):		m_tricksFont.CreateFontIndirect(&logFont);
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(802):		    !m_analysisFont.CreateFontIndirect(&m_lfAnalysis))
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(809):			if (!m_analysisFont.CreateFontIndirect(&logFont))
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(815):				m_analysisFont.CreateFontIndirect(&logFont);
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(821):			!m_historyFont.CreateFontIndirect(&m_lfHistory)) 
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(829):			if (!m_historyFont.CreateFontIndirect(&logFont))
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(835):				m_historyFont.CreateFontIndirect(&logFont);
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(844):		if (!m_symbolFont.CreateFontIndirect(&m_lfSymbol)) 
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(852):			!m_autoHintFont.CreateFontIndirect(&m_lfAutoHint)) 
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(860):			if (!m_autoHintFont.CreateFontIndirect(&logFont))
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(866):				m_autoHintFont.CreateFontIndirect(&logFont);
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(885):		m_dialogFont.CreateFontIndirect(&logFont); 
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(889):		m_dialogBoldFont.CreateFontIndirect(&logFont); 
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(894):	if (m_popupMenu.CreatePopupMenu()) 
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(980)://	m_pWndStatus.CreateImageList( IDB_IL_TAB, 16, RGB(0,128,128));
    D:\CPlusPlus\EasyBridge\Print.cpp(151):	printFont.CreateFontIndirect(&logFont);
    D:\CPlusPlus\EasyBridge\StatusAnalysesPage.cpp(119):		m_edit[i].Create(ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_CHILD | WS_BORDER | WS_VISIBLE | WS_VSCROLL, rect, this, IDC_EDIT1+i);
    D:\CPlusPlus\EasyBridge\StatusGIBMonitorPage.cpp(73):	if (!m_edit.Create(ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_CHILD | WS_BORDER | WS_VISIBLE | WS_VSCROLL,
    D:\CPlusPlus\EasyBridge\StatusPlayPlanPage.cpp(130):	m_toolTip.Create(this, TTS_ALWAYSTIP | TTS_NOPREFIX);
    D:\CPlusPlus\EasyBridge\StatusPlayPlanPage.cpp(139):	m_toolTip.Create(WS_EX_LEFT | WS_EX_NOPARENTNOTIFY | WS_EX_TOOLWINDOW,
    D:\CPlusPlus\EasyBridge\StatusSheet.cpp(84):	m_imageList.Create(IDB_SUITS_IMAGELIST, 11, 0, RGB(255,255,255));
    86 occurrence(s) have been found.
    
    Searching for '.Delete'...
    D:\CPlusPlus\EasyBridge\BidDialog.cpp(160):			m_buttonIcons[i][j].DeleteObject();
    D:\CPlusPlus\EasyBridge\Card.cpp(40):	m_prevBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Card.cpp(41):	m_hlPrevBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Card.cpp(188):		m_prevBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Card.cpp(189):		m_hlPrevBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Card.cpp(359):	saveDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(371):	cardDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(372):	maskDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(373):	cacheDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(374):	tempBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Card.cpp(408):		saveDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(421):		cardDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(422):		maskDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(423):		cacheDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(424):		tempBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Card.cpp(444):		cacheDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(481):	cacheDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(557):	oldBkDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(558):	cardDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(559):	maskDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(560):	cacheDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(561):	tempBitmapCache.DeleteObject();
    D:\CPlusPlus\EasyBridge\Card.cpp(568):	saveDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(571):	newBkDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Card.cpp(572):	tempBitmapNewBk.DeleteObject();
    D:\CPlusPlus\EasyBridge\Deck.cpp(172):				m_cardBitmap[nCount].DeleteObject();
    D:\CPlusPlus\EasyBridge\Deck.cpp(190):		m_maskBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Deck.cpp(197):		m_imageListCardBacks.DeleteImageList();
    D:\CPlusPlus\EasyBridge\Deck.cpp(209):			m_cardBackImageListBitmap[i].DeleteObject();
    D:\CPlusPlus\EasyBridge\Deck.cpp(210):			m_cardBackBitmap[i].DeleteObject();
    D:\CPlusPlus\EasyBridge\Deck.cpp(246):			m_cardBitmap[nCount].DeleteObject();
    D:\CPlusPlus\EasyBridge\Deck.cpp(251):	m_imageListCardBacks.DeleteImageList();
    D:\CPlusPlus\EasyBridge\Deck.cpp(257):		m_cardBackImageListBitmap[i].DeleteObject();
    D:\CPlusPlus\EasyBridge\Deck.cpp(258):		m_cardBackBitmap[i].DeleteObject();
    D:\CPlusPlus\EasyBridge\Deck.cpp(261):	m_maskBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Drawhand.cpp(283):		cacheDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Drawhand.cpp(284):		tempBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Drawhand.cpp(1335):	cardDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Drawhand.cpp(1336):	maskDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Drawhand.cpp(1337):	cacheDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Drawhand.cpp(1338):	tempBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easyb.cpp(2155):		m_bitmapPortrait.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw.cpp(188):	m_tableRegion.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw.cpp(191):	m_defaultBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw.cpp(192):	m_winnersBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw.cpp(193):	m_losersBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw.cpp(2065):	newBrush.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(473):			cacheDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(474):			tempBitmap.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(666):	region.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(701):	region.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(982):	titleDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(983):	maskDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(984):	cacheDC.DeleteDC();
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(985):	tempBitmap1.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(986):	tempBitmap2.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(987):	bmTitle1.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(1374):	m_tableRegion.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(1384):	region1.DeleteObject();
    D:\CPlusPlus\EasyBridge\Easybvw2.cpp(1385):	region2.DeleteObject();
    D:\CPlusPlus\EasyBridge\GameReviewDialog.cpp(344):	m_listTags.DeleteAllItems();
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(435):	m_fixedFont.DeleteObject();
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(436):	m_standardFont.DeleteObject();
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(437):	m_smallFont.DeleteObject();
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(438):	m_largeFont.DeleteObject();
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(439):	m_tricksFont.DeleteObject();
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(440):	m_analysisFont.DeleteObject();
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(441):	m_historyFont.DeleteObject();
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(442):	m_dialogFont.DeleteObject();
    D:\CPlusPlus\EasyBridge\Mainfrm.cpp(443)://	m_dialogBoldFont.DeleteObject();
    D:\CPlusPlus\EasyBridge\Print.cpp(253):	printFont.DeleteObject();
    D:\CPlusPlus\EasyBridge\StatusCardLocationsPage.cpp(167):	m_listHoldings.DeleteAllItems();
    D:\CPlusPlus\EasyBridge\StatusCardLocationsPage.cpp(177):	m_listHoldings.DeleteAllItems();
    D:\CPlusPlus\EasyBridge\StatusCardLocationsPage.cpp(201):	m_listHoldings.DeleteAllItems();
    D:\CPlusPlus\EasyBridge\StatusHoldingsPage.cpp(150):	m_listSuitStatus.DeleteAllItems();
    D:\CPlusPlus\EasyBridge\StatusHoldingsPage.cpp(163):	m_listSuitStatus.DeleteAllItems();
    D:\CPlusPlus\EasyBridge\StatusHoldingsPage.cpp(179):	m_listSuitStatus.DeleteAllItems();
    D:\CPlusPlus\EasyBridge\StatusPlayPlanPage.cpp(167):	m_listPlayPlan.DeleteAllItems();
    D:\CPlusPlus\EasyBridge\StatusPlayPlanPage.cpp(367):	m_listPlayPlan.DeleteAllItems();
    D:\CPlusPlus\EasyBridge\StatusPlayPlanPage.cpp(387):	m_listPlayPlan.DeleteAllItems();
    D:\CPlusPlus\EasyBridge\StatusSheet.cpp(229):	m_imageList.DeleteImageList();
    D:\CPlusPlus\EasyBridge\TestPlayDialog.cpp(173):	m_listResults.DeleteAllItems();
    82 occurrence(s) have been found.
    Last edited by Norm; January 18th, 2010 at 08:51 AM.
    Norm

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Azure Activities Information Page

Windows Mobile Development Center


Click Here to Expand Forum to Full Width

This is a CodeGuru survey question.


Featured


HTML5 Development Center