OK, I was able to reproduce your issue, and with a bit of luck, to fix it.
The problem arises when you change the DC mapping mode. Now while I am not an expert of mapping modes, this code displays the bitmap over the empty board:
Inside OnDraw (is actually OnPaint in my test app)
drawImage(&dc, 105, -105); // note the negative y
While drawImage becomes
/*..*/::drawImage(CDC* pDC, int x, int y)
dcMemory.SetMapMode(pDC->GetMapMode()); // as weird as it looks, the map mode is not the same, after CreateCompatibleDC
// Select the bitmap into the in-memory DC
CBitmap* pOldBitmap = dcMemory.SelectObject(&bmp);
pDC->StretchBlt(x, y, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,0, 0, bmpInfo.bmWidth, -bmpInfo.bmHeight, SRCCOPY); // note the negative height of the bitmap
To make things more explicit, I would move the SetMapMode call out of drawEmptyBoard.
"In testa che avete, Signor di Ceprano?"
// Copy the bits from the memory DC into the current dc
pDC->BitBlt(20, 10, 436, 364, &MemDCLady, 0, 0, SRCCOPY);
is the culprit. Recall that you've set your coordinate system to low English which fixes the bassackwardness of drawing.
If you trace your board generation, you will see that your Y values go from 0 to negative values. Looking at the above line,
you are drawing off the top of your view window. Change the 364 to -364 and you'll see your image.
Of course, *I've* never done that
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
the following problem:
F&W Sdn Bhd is a packaging company. Write a program in C++ to help the company determine how many boxes that are needed for an item. For example, a boxof shampoo can have 30 bottles in it. 95 bottles of shampoo need to be packed into 3 boxes and 5 are left.
The number of each item and the number of an item that can be packed in a box are received as inputs. Display the number of boxes needed and the number of leftover items.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment
"Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst
"I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
If you are serious about learning to do this yourself then take your assignment in small steps:
1 Write a program that displays output. The traditional first program displays "Hello World".
2 Now write a program that takes a number as input and then displays that same number as output.
3 Now write a program that takes two numbers as input and then displays those same two numbers.
4 Study how to do division in C++ so you know how to handle the dividend, the divisor, the quotient, and the remainder.
5 Now write your assignment, taking two numbers as input, doing the division, and displaying the results.
Since this is a class assignment, the best answers are ones that help you learn. You need to ask specific questions that you do not understand. The best way to get help is to show you have made a reasonable effort to figure it out.
Put the 5 that are left in a new box, and tell the other guy you only need 30 at a time.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
Currently I am working on an old VB6 app to be compatible with UNICODE.
This app has SSTab and within this tab, there are user control q1, q2, q3 and so on. For q1, it has the following code:
Private WithEvents q1 As VBControlExtender
Private progID As String
procId = "ALCTX10.CTX10.1"
Set q1 = Controls.Add(procId, "q1")
myTab.tab = 1
q1.Move borderSize, topMargin, myTab.Width - borderSize * 2, _
myTab.Height - borderSize - topMargin
q1.Visible = True
The procId is referring to VC++ 6 DLL. All user controls are usingthis DLL.
For VC++ 6 DLL, I added ",_UNICODE, UNICODE"into the preprocessor definitions under the project setting of VC++ 6.
And compiled the DLL again and then brought it back to VB6.
The problem is I am still getting the same UNICODE issue from VB6 app.
I am using a foreign version of Windows XP so it is not the font problem.
I can’t just replace this DLL with UNICODE supported TextBox or RichTextBox since there are too many things going underneath the DLL.
I would appreciate very much if anyone sheds a light on this problem. Thanks.