|
Hello,
I'm making a MDI application which has a lot of modeless dialogs used as input-forms.
The problem I have with them is each newly opened dialog overlaps the previously open dialog. I want the user to be able to cascade/tile the dialogs.
Queries:
(1). Is there a way that I can explicitly make them the children of my MDI. And if I can do this, will the CMDIFrameWnd::MDICascade() or CMDIFramWnd::MDITile() work to cascade/tile them.
(2). Or can I use some other function which could cascade/tile the dialogs for me?... ... Or am I required to take care of positioning each dialog properly below the previously opened one??
Thanks,
Rgds,
Nirav Doshi
* The world stands aside to let anyone pass who knows where he is going! - David Jordan *
|
|
|
|
|
I suspect you'll need to do this manually by keeping track of the position of the most recently displayed modeless dialog. Then, offset each new one by (nOffsetX , nOffsetY ), where:
nOffsetX = GetSystemMetrics (SM_CXSMICON);
nOffsetY = GetSystemMetrics (SM_CYCAPTION);
/ravi
Let's put "civil" back in "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Okay Ravi... I guess, I have to manually do the task! ~
Anyway, thanks a ton!
I will do it as you've suggested!
Thanks again,
Rgds,
Nirav
* The world stands aside to let anyone pass who knows where he is going! - David Jordan *
|
|
|
|
|
Hi all
How can I print unsigned char's to the console? I compile with the "default unsigned char" option as this has to run on Linux, but in Windows it just spits out garbled characters.
Thanks
I rated this article 2 by mistake. It deserves more. I wanted to get to the second page... - vjedlicka 3:33 25 Nov '02
|
|
|
|
|
|
Thanks Nish, but I'm not sure that will help
I'm reading Afrikaans text from a file. And Afrikaans has all those nice o's, e's, with various thingies on them. Here's some code:
FILE *input;
char inputfile[50] = "input.txt";
char word[50];
char yesno;
if ((input = fopen(inputfile, "r")))
{
while (!feof(input))
{
fscanf(input, "%s", word);
if (!trieIsMember(word))
{
printf("Spell Error: %-20s Add word? ", word);
yesno = getchar();getchar();
if (tolower(yesno) == 'y')
trieAdd(word);
}
}
fclose(input);
}
Any ideas?
I rated this article 2 by mistake. It deserves more. I wanted to get to the second page... - vjedlicka 3:33 25 Nov '02
|
|
|
|
|
leppie wrote:
I'm reading Afrikaans text from a file
That makes a huge difference. Now you basically need wide character versions of all the functions you have been using
Replace printf with wprintf, fopen with _wfopen, fscanf with fwscanf etc...
Regards,
Nish
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
You need to change the code page or the LOCALE or something like that.
|
|
|
|
|
OK I found out what the problem is. It appears to be an ANSI/ASCII conflict. The letters appear fine in ANSI charset, but comes out funny in ASCII what it appears they are using for the console.
Now the question is: How can I print ANSI strings properly to ASCII?
And I thought DOS was dead....
I rated this article 2 by mistake. It deserves more. I wanted to get to the second page... - vjedlicka 3:33 25 Nov '02
|
|
|
|
|
|
I can assure you those are NOT wide.
These are the ones: ëêéô , but the command prompt just does not spit them out correctly. I get what looks like an epsilon, omega, theta and integral characters, in that order. [edit]δΩΘ⌠ , these are the ones I get on the console[/edit]
Perhaps its to do with regional settings...? I will have a look. There is an options for codepage for non unicode programs. It was set to English US. I have change this now, but requires a reboot. I have not planned a reboot yet, but perhaps Monday will be a good day. Windows XP has been running 2wks 4days 8hrs 33mins.
I rated this article 2 by mistake. It deserves more. I wanted to get to the second page... - vjedlicka 3:33 25 Nov '02
|
|
|
|
|
leppie wrote:
I can assure you those are NOT wide.
These are the ones: ëêéô
Uhm, okay and sorry abt the confusion. I guess the command prompt is simply unable to show those characters by default. The codepage idea sounds good. Good luck. And if you get it to work, write an article for CP
Nish
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
Nishant S wrote:
And if you get it to work, write an article for CP
I think its rather a bug in XP ë (copied) for example comes up as 235 where by defualt it should be 137 according to the ASCII table.
I rated this article 2 by mistake. It deserves more. I wanted to get to the second page... - vjedlicka 3:33 25 Nov '02
|
|
|
|
|
One possible way to display unsigned char in printf is to convert it to an int and display the int as a char .
<br />
int x = 240;<br />
printf("%c .. %d\n", x, x);<br />
This will surely be slow for large strings!
Hope this helps you someway!
Rgds,
Nirav
* The world stands aside to let anyone pass who knows where he is going! - David Jordan *
|
|
|
|
|
Hi,
I must use TStream in an application but I don't know which header to use with it.
Thank you for more infos about it
Florian
|
|
|
|
|
Try asking in a Pascal/Delphi forum ;);)
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
Arg... ok thanks
|
|
|
|
|
I am in trouble. I am trying hard to send my tcp packet on the network but the packet is not going. I am using this strategy to do it.
Please tell me if I am setiing any fault attributes.
1. create tcp packet using tcp structure.
2. Send the Packet using "Send to" method.
SOCKET s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
struct ipheader *iph = (struct ipheader *) datagram;
struct tcpheader *tcph = (struct tcpheader *) datagram + sizeof (struct ipheader);
struct sockaddr_in sin;
PS_HDR pseudo_header;
sin.sin_addr.s_addr = inet_addr ("192.168.2.64");
iph->ip_hl = 5;
iph->ip_v = 4;
iph->ip_tos = 0;
iph->ip_len = sizeof (struct ipheader) + sizeof (struct tcpheader);
iph->ip_id = 1;
iph->ip_off = 0;
iph->ip_ttl = 255;
iph->ip_p = 6;
iph->ip_sum = 0;
iph->ip_src = inet_addr ("192.168.2.61");
iph->ip_dst = sin.sin_addr.s_addr;
tcph->th_sport = htons (1234);
tcph->th_dport = htons (PORT);
tcph->th_seq = rand();
tcph->th_ack = 0;
tcph->th_x2 = 0;
tcph->th_off = 0;
tcph->th_flags = 2; // SYN
tcph->th_win = htons(65535);
tcph->th_sum = 0;
tcph->th_urp = 0;
// Build the Psuedo Header
pseudo_header.source_address = inet_addr ("192.168.2.61");
pseudo_header.dest_address = sin.sin_addr.s_addr;
pseudo_header.placeholder = 0;
pseudo_header.protocol = IPPROTO_TCP;
pseudo_header.tcp_length = htons(sizeof(tcpheader));
tcph->th_sum = checksum((unsigned short *)&pseudo_header, sizeof(pseudo_header));
iph->ip_sum = checksum((unsigned short *)&iph, sizeof(ipheader));
// ENABLE IPHDRINCL
if (setsockopt(s, IPPROTO_IP, IP_HDRINCL, (char *)&bOpt, sizeof(int)) == SOCKET_ERROR)
{
printf("setsockopt(IP_HDRINCL) failed: %d\n", WSAGetLastError());
return -1;
}
// Send The Packet
if (sendto(s, datagram, sizeof(datagram), 0, (SOCKADDR *)&sin, sizeof(sin)) == SOCKET_ERROR)
{
printf("sendto() failed: %d\n", WSAGetLastError());
return -1;
}
printf("message sent");
//The code is executing perfectly but the packet does not reach its destination.
//plz help me
Reply me soon
|
|
|
|
|
How do you know the packet does not reach its destination? Maybe it does but the server ignores it or misinterprets the packet as junk.
You implemented datagram. Why?
socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
Kuphryn
|
|
|
|
|
MR kuphryn Firstly I know it because I have a network traffic sniffer running on the detinaion of the program so when packet will reach it will show it.
Second I am not using the datagram socket sock_dgram but creating the tcp packet
socket(AF_INET, SOCK_RAW, IPPROTO_RAW)
IP.PROTOCOL =IPPROTO_TCP
using raw socket please if you can help me by any reference any helping material, code , or anything please do me a favour.
Reply me soon
|
|
|
|
|
According to the rules of C++, a constructor for a class taking a single parameter, could be used to implicitly convert the value of the constructor's parameter type to a value of the constructor's class type.
That means, I ought to be able to convert an "int" value, to a "Number" value. That is not happening. Can anybody see why?
Thanks!
====================================
class Acct;
class Number
{
public:
Number(int i=0) : n(i) {}
Number(const Acct& ac) : acct(ac) {}
void print(Number nbr) { cout<< " Nbr: " << nbr <<endl; }
private:
Acct acct;
int n;
};
----------------------------------------------
int main()
{
Number num;
num.print(99);
return 0;
}
========================
Because it's an "int" I'm printing (as a result of the conversion), I should be able to use the regular standard I/O operators to output the result. The compiler doesn't believe so, and is complaining about that too.
William
Fortes in fide et opere!
|
|
|
|
|
William,
The conversion from int to Number is legitimate in C++, and my VC++ 6.0 compiles it fine. But the print function wont compile, since you are printing a 'Number' and not an int.The compiler has no idea about printing the Number type.To do this you need to overload the insertion operator "<<".
~ Vimal
|
|
|
|
|
Thanks Vimal.
You make a lot of sense and you are correct. However, I had done just what you recommended before posting the note, and everything did work for me.
But when examined, overloading the stream insertion operator "<<" didn't looked like it bought me anything, because I could have obtained the same result if I had not used constructor conversion and had done things the regular way, using an "int" instead for my print() parameter.
I figured as part of the ctor conversion technique, one of the benefits I would obtain, would be NOT having to overload the "<<" operator. Secondly (and this is the part that made me refused to give up), I thought somebody might know of a way (that I didn't) to make what I was trying to achieve, work.
I thank you for your response because it tells me what I was dreaming of doing, will just not work.
Thanks again!
William
Fortes in fide et opere!
|
|
|
|
|
Try changing the print to take a reference:
void print (Number &nbr)
|
|
|
|
|
Friends, i am doing something like:
using namespace std;
hash_set<string> myhashstring;
myhashstring.insert("USA");
As such program is giving me error that:
(38): error C2440: 'type cast' : cannot convert from 'const std::string' to 'size_t'
But if i use "set" instead of "hash_set" the program works normally. Any one guess whats the problem ???
|
|
|
|