|
Hi there,
How can I play a sound by MCIWnd functions in a loop ?
I mean when sound finishes then MCI play the sound again and again …
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
Hello,
If I want to modify the cards.dll in windows which accompanies the Solitaire.exe to give the cards a new face, how to do it?
Thanks
Kidd
|
|
|
|
|
Why ?
It's a resource dll, just make your own.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
And you don't spend much time with the opposite sex working day and night, unless the pizza delivery person happens to be young, cute, single and female. I can assure you, I've consumed more than a programmer's allotment of pizza, and these conditions have never aligned. - Christopher Duncan - 18/04/2002
|
|
|
|
|
Just open it in Visual Studio and set the file type as Resource and you can now edit the bitmaps
Nish
Regards,
Nish
Native CPian.
Born and brought up on CP.
With the CP blood in him.
|
|
|
|
|
Sorry if my terminology is wrong.
Anyways...How would I iterate an array of the following structure:
struct ITEM{
LPSTR Parent
LPSTR Caption
UINT Command
ITEM Child
}
I'm NOT looking for a C++ solution, but a generic psuedo-language answer would be GREAT!!!
I'm losing my mind trying to figure out how this would be done...if the array were simple it would be easy even if the number of levels were known it would be easier...a couple nested for loops would suffice. However...when each last field is a pointer to another just like it (but slightly different) that simple array transforms into something...I can't comprehend and it's driving me insane...
Anyone ever deal with such a data structure before...?
I thought this was a linked list or sort of anyways, but I can't just follow one elemnt to the next...I have to iterate each item in the array...
ie:
if there were 5 items, each had ZER0 children except the last which had 5 levels of 5 children each how would I loop through this kinda array and return all data...?
I'm playing with the idea of a windows menu data structure and my god...i'm lost...
Any ideas...?
Thanx!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
Your main problem here is that you have a recursive definition. Creating an ITEM in turn creates another ITEM, which creates another ITEM etc.
It would be considerably wiser to redefine like this:
struct ITEM{
LPSTR Parent
LPSTR Caption
UINT Command
ITEM *Child
}
This way, you create all the ITEM's you need and no more.
Anyway, a suitable way to look at all these it to recurse. Just like you would to walk a directory structure:-
void RecurseItems(ITEM *p_Item)
{
cout << "Got an ITEM at %X" << (DWORD) p_Item << "\n";
if (Child != NULL)
RecurseItems(Child);
}
That'll do the job.
Jon
STL is a religeon. Enquiries to Reverend Christian Graus
|
|
|
|
|
I'm pleased we both came up with the same solution, although it doesn't meet his requirements ( pointers are not exactly a cross language phenomenon, in that lots of languages don't have them ).
I'm chuffed by your sig as well, but there's only one s in Graus
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
And you don't spend much time with the opposite sex working day and night, unless the pizza delivery person happens to be young, cute, single and female. I can assure you, I've consumed more than a programmer's allotment of pizza, and these conditions have never aligned. - Christopher Duncan - 18/04/2002
|
|
|
|
|
Apologies, i'll correct it now!
STL is a religeon. Enquiries to Reverend Christian Graus
|
|
|
|
|
A NULL child already indicates no child/sub-items are available for that particular item though...?
Like a windows drop down menu...what kinda data structure would that require...?
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
I have no idea what you're on about.
STL is a religeon. Enquiries to Reverend Christian Graus
|
|
|
|
|
while (item)
{
// use the other members
item = item.Child;
}
Make item a POINTER to an ITEM, and use NULL to specify the bottom item. Otherwise you need a data memeber or magic number combination to show the end of the line. If it's a loop ( the last item points to the first ) then it's like this
ITEM item = (whatever)
ITEM item2 = item
while(true)
{
//deal with item
item = item.Child;
if (&item == &item2)
break;
}
so where-ever you start, when you end up at the beginning, you break.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
And you don't spend much time with the opposite sex working day and night, unless the pizza delivery person happens to be young, cute, single and female. I can assure you, I've consumed more than a programmer's allotment of pizza, and these conditions have never aligned. - Christopher Duncan - 18/04/2002
|
|
|
|
|
Hey Christian...thanx for the reply...
Your correct about the pointer assumption...i'm actually using JScript to develope a menu in DHTML with unlimited children popup's...
Each AppendMenuItem() basically takes as parameters
Caption, Parent, CommandID and adds them to the array as needed.
If i'm to create a menu from a array I fail to see how the above would create all the popups and items in each...I have tried the above before and i'm obviosuly missing a important link...
File Edit View
New Undo History ->>> Object1
Open Redo --------- Object2
Save Wireframe Object3
Solid
In order to create all the popups I would need to iterate the array and when the end of a division was reached i'd need to stop and start back where I began, no...?
I'm thinking I need some nLevel variable to track my last known position...perhaps an array of nLevels...?
How does the code above allow me to find an item with a particular caption...?
Sorry for not getting it or repeating questions...
Thanx!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
OK - that changes things a LOT. Your orignal model cannot work, because it does not allow multiple children of one parent. I *do* know that you can have arrays in JScript, so one way would be for an ITEM to store an array of children, if it's empty, then it's an end item, otherwise it contains the children of that item.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
And you don't spend much time with the opposite sex working day and night, unless the pizza delivery person happens to be young, cute, single and female. I can assure you, I've consumed more than a programmer's allotment of pizza, and these conditions have never aligned. - Christopher Duncan - 18/04/2002
|
|
|
|
|
Christian Graus wrote:
OK - that changes things a LOT.
I was afraid of that.
Arrays are possible in JScript so are custom struct's sorta.
function MENU_ITEM(Caption, Parent, CommandID)
{
this.Caption = Caption;
this.Parent = Parent;
this.CommandID = CommandID;
this.Child = new Array();
}
var MenuItems = new Array();
var nItems = MenuItems.length;
MenuItems[nItems] = new MENU_ITEM("File", null, null);
MenuItems[nItems].Child = new MENU_ITEM("MRU1", "File", 1000);
MenuItems[nItems+1].Child = new MENU_ITEM("MRU2", "File", 2000);
MenuItems[nItems+2].Child = new MENU_ITEM("MRU3", "File", 3000);
The above is what I am trying to accomplish and have almost got it...
a Menubar is created with only a File item and it has 3 children MRU list...how do I iterate the array above, considering children can have children and so on...
thats whats confusing the heck outta me...i'm so lost on how to set up the loop...
Would I use 2 nested for loops or a while loop...?
Can you suggest any other approach/structure to managing drop down menus...?
Thanx again!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
Hockey wrote:
how do I iterate the array above, considering children can have children and so on...
Recursion
A function needs to take an ITEM, then it needs to iterate through the array of items in it something like this
RecurseThroughMenu(ITEM item)
{
foreach (ITEM i in item.Child)
{
// add item i to the menu under 'item'
if (i.Child.length > 0)
RecurseThroughMenu(i)
}
}
This is not meant to be any particular language, just give you the idea how to do it
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
And you don't spend much time with the opposite sex working day and night, unless the pizza delivery person happens to be young, cute, single and female. I can assure you, I've consumed more than a programmer's allotment of pizza, and these conditions have never aligned. - Christopher Duncan - 18/04/2002
|
|
|
|
|
Christian Graus wrote:
This is not meant to be any particular language, just give you the idea how to do it
foreach IMO says Perl is your friend...
ASP has something similar to I think.
Anyways...I appreciate your help...i'm still gonna have to invest a lot of time into fully understanding whats going on, but i'll get it eventually.
Thanx for your time.
Cheers!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
I'm doing a Windows Paint-like application. I draw on the screen by capturing every mouse button-downs and moves, and then SetPixel(), the line drawn will be broken and I guess the Windows does not process the messages fast enough so some MouseMove do not react to every point the mouse moves. How does Windows Paint do that drawing on the screen without breaking? What should I do to smooth it?
|
|
|
|
|
I believe you are partially right. I think windows does not miss a message, but WM_MOUSEMOVE is not sent for every pixel your mouse is over.
Anyway use CDC::LineTo
Best regards,
Alexandru Savescu
|
|
|
|
|
davilism wrote:
How does Windows Paint do that drawing on the screen without breaking?
Probably it just connects the points with line segments. Depending on the speed of mouse movement, the line will be more or less jagged.
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
Hi,
I´m running in a big trouble, my control shows an enhanced metafile, and I have seen that Ms Word 2000, and CComControlBase::IDataObject_GetData(...), creates an ooold Windows 3.1 metafile to make the image for printing and for design mode... ( aaah !, so still using Windows 3.1 ooold code !!!!!, and you can see in the MSDN that Win 3.1 metafiles are obsolote, and please don´t use it ((( ).
The problem that I have, is that my enhanced metafile uses some funtions that are not compatible with the old Win 3.1 metafiles, and nothing ( or some things but not all), is shown ...
Do you know any solution, or workaround for this problem ?, thanks for you help, greetings
Braulio
|
|
|
|
|
I have a socket used to receive UDP packet in my program, the main thread respons to the FD_WRITE and FD_READ message, and sets flags, then calls up another thread to do some receivefrom and sendto operation.
The program goes fine in normal LAN, then I changed the environment to 802.11b Wireless LAN, the program becomes very unstable, sometimes it acts
like "dead", and I was forced to kill it.
Can you suggest any possible reasons for the problem?
Here is how I created the socket, did I miss something?
if (!AfxSocketInit())
{
AfxMessageBox("AfxSocketInit error!", MB_OK | MB_ICONERROR);
return FALSE;
}
m_bSocketCreated = false;
m_Socket = socket( AF_INET, SOCK_DGRAM, 0);
if( m_Socket != INVALID_SOCKET )
{
m_Address.sin_family = AF_INET;
m_Address.sin_port = htons(25556);
m_Address.sin_addr.S_un.S_addr = htonl( INADDR_ANY);
i = bind(m_Socket, (struct sockaddr*)&m_Address, sizeof(m_Address));
if( i != SOCKET_ERROR )
{
int j = 1;
i = setsockopt(m_Socket, SOL_SOCKET, SO_DONTROUTE, (char*)&j, sizeof(int) );
i |= setsockopt(m_Socket, SOL_SOCKET, SO_BROADCAST, (char*)&j, sizeof(int) );
if( i != SOCKET_ERROR )
{
ULONG tmp = 1;
i = ioctlsocket( m_Socket, FIONBIO, &tmp);
if( i != SOCKET_ERROR )
{
i = WSAAsyncSelect(m_Socket, m_hWnd, UWM_SOCKET_NOTIFY, FD_READ | FD_WRITE);
if( i != SOCKET_ERROR )
{
m_bSocketCreated = true;
}
}
}
}
}
if( m_bSocketCreated == false )
{
AfxMessageBox("Create socket error!", MB_OK | MB_ICONERROR);
}
|
|
|
|
|
Does your test machine have interfaces for both regular and wireless LAN? If so, maybe Winsock is having some trouble routing the messages.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
But isn't socket programming for WLAN different between socket programming for LAN??
or it was only maybe IrDA socket programming which was different,...
Rickard Andersson@Suza Computing
ICQ#: 50302279 (Add me!)
E-mail: nikado@pc.nu
I'm from the winter country SWEDEN!
|
|
|
|
|
Rickard Andersson wrote:
But isn't socket programming for WLAN different between socket programming for LAN??
eeks... I hope not much. Because I wanna port some programms to WLAN, as soon as I can afford one. Sorry for interupting.
|
|
|
|
|
No, UDP/IP or TCP/IP sockets should work the same no matter what the physical network layer is.
|
|
|
|
|