|
#define Move(x, y) SetWindowPos(NULL,x,y,0,0,SWP_NOZORDER | SWP_NOSIZE);
void CAsdfDlg::OnOK()
{
int x = 0;
int y = 0;
int i;
for (i = 0; i < 20; i++)
{
Move(x,y);
x += 20;
y += 20;
Sleep(100);
Move(x,y);
x -= 20;
y -= 20;
Sleep(100);
}
}
Something like that.
this is this.
|
|
|
|
|
Use MoveWindow .
Set a shake boundary. So that it won't go beyond that. This must be fast too.
Nibu thomas
Software Developer
|
|
|
|
|
something like :
for ( int i = 0; i < 10; i++ )
{
this->MoveWindow( posX+/- random value, posY +/- random value );
}
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
Don't use sleep and loops (the window will not get a chance to draw itself)
use WM_TIMER instead
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg
|
|
|
|
|
RECT Rect;
GetWindowRect(&Rect);
for(int i=0;i<30;i++)
{
Sleep(20);
MoveWindow(Rect.left,Rect.top,Rect.right,Rect.bottom,1);
Rect.left+=10;
Rect.top+=10;
Rect.right-=20,Rect.bottom-=20;
}
|
|
|
|
|
hi WHITESKY,
As i use ur code in the event LButtonDown .
but the application will hang for some time ,upto the execution of for loop
the window not get moved(shake)
reply early
send reply
|
|
|
|
|
As i told you earlier loop techniques will not work in this case, you will have to set a timer using SetTimer then handle WM_TIMER event and in the WM_TIMER event you will have to move the window.
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg
|
|
|
|
|
|
hey monty! why do you wanna use a timer here? i dont understand, i think the khan++ way'd work fine, wont it?
VuNic
|
|
|
|
|
Looking at your post, it seems like you are trying to use it in some Doc/View architecture. The code given above all works, but in a dialog.
For a Doc/View architecture, you can use my code above, with this modification:
#define Move(x, y) GetParent()->SetWindowPos(NULL,x,y,0,0,SWP_NOZORDER | SWP_NOSIZE);
Notice the GetParent() function.
this is this.
|
|
|
|
|
thanks khan ,i got it
send reply
|
|
|
|
|
why hang your system?
I worked with this code and it's not problem
|
|
|
|
|
Hey Forum,
I'm searching for hours and hours now, but nothing could help me out. I have a Project in VC++ 2005 with two forms, lets call them form1 and form2.
So, the prjct starts form1 on startup. So long, so good. But what to do if I want it to start both forms on startup? Form1 = visible and form2 != visible, so later on I want to set form2 = visible from a call out of form1. Or, start methods of form2 from form1. Understand my problem? I'm going crazy on this...
Thanks for any help!
|
|
|
|
|
Hello,
Please give me some info about DDK?
What is it?
Thanks.
Every new thing you learn,Gives you a new personality.
|
|
|
|
|
|
|
Hi,
I want to remotely show a Client Desktop in a Server.
and For this I want to Read Graphic Card memory and send them to Server.
Like what the monitor does.
What is the best way?
Thanks.
Every new thing you learn,Gives you a new personality.
|
|
|
|
|
I don't think there is any easy way to read the graphics memory card etc.
But you can take screen shots of the client. Then you can compress the images, like convert them to jpegs and also reduce the size of the image, if you want to, then send them over to the server.
For this, first you will need to know how to take screen shots of the desktop, like this article:
http://www.codeproject.com/tools/screen_snaper.asp[^]
There are other ways also. You can search for them.
this is this.
|
|
|
|
|
Hi,
I wrote a program that sends data to few systems through a differnt thread(SendThread) using UDP on a LAN. and before this SendThread i am launching another Thread(RecvThread), that listens to a port no 54000. this RecvThread listens and whenever it gets any message Say "AAA" then it replies back with a sendto(sd,"yes",3,&client,size); but this message never reaches the other system that sent the first message "AAA". When i dubugged i found that the IP was alright. Once the SendThread finishes sending to selected systems, it ends. my code for RecvThread goes like this. is it because the recvfrom() is done in another thread? so that when another system sends a message, this thread completed its time slice or is not run by the CPU. hence it is not received? can this happen ? Please help me on this.
while (1)
{
buffer[0]='\0';
client_length = (int)sizeof(struct sockaddr_in);
memset((void *)&client, '\0', sizeof(struct sockaddr_in));
bytes_received=0;
bytes_received = recvfrom(sd, buffer, 4, 0, (struct sockaddr *)&client, &client_length);
if (bytes_received < 0){
printf("No Data is Found.\n");
closesocket(sd);
_endthread();
}
else {
if (strcmp(buffer, "XXX") == 0){
if (sendto(sd, current_time, 4, 0, (struct sockaddr *)&client, client_length) != 4){
printf("Error sending datagram.\n");
closesocket(sd);
}
else {
printf("\nReplySent");
}
}
else if(strcmp(buffer,"Yes") == 0){
printf("Got a reply for yes");
}
}//end of outer else
}//end of while
Thanks in Advance
KSS
|
|
|
|
|
you have a separate thread RecvThread for receiving, then why you receive it again here ?
fearless stallion wrote: bytes_received = recvfrom(sd, buffer, 4, 0, (struct sockaddr *)&client, &client_length);
VuNic
|
|
|
|
|
Hi,
Let me make it a bit more clear, My Application has two threads SendThread and RecvThread. I place the same copy of the Application on the Selected Systems. First The RecvThread is set to Bind at 54000 port no. And then the SendThread sends a Query "XXX" to all the Selected Systems and then ends itself. all those systems must also be running the RecvThread at their own end so the Code that I listed above is my RecvThread, which when gets the Message "XXX" replies back to the sender with "Yes". I am able to successfully send the reply message "Yes" but on the Receivers end(Initial senders) i am not able to get the Message. The code handles the both "XXX" and "Yes" messages but still.. Why is it so. is there any problem in the Code?..
KSS
|
|
|
|
|
Did you try the same with single UDP C/S application?, and one more question, your requirement seems that "Multicasting" would be the best option when you want to send to multiple users(clients), where you'll need to add an interface IP address and use ip_addmembership. but anyway, we'll first try your way.
VuNic
|
|
|
|
|
Hi,
Yes I did, in fact it was a simple Client/Server Application and it worked fine, then i changed it to use Threads.
you are right my application detects the number of machines on the network and sends a message to all of them and if it finds any answer then it adds that machine name to a file.
I want to make it more like SQLDMO which detects the number SQL servers running on the network. can Multicasting Help me ? will it not increase the network traffic? BTW what is problem with this code?...
One more thing when i start to debug it skips the Break points sometimes and just runs as if it is in general run mode.
Thanks a lot for the Reply.
KSS
|
|
|
|
|
Thanks a lot, i got it resolvesd, actually the RecvThread was sending to a sockaddr_in that was with in the sender thread and that SendThread was killed by the time it got the mrssage.
any ways thanks
KSS
|
|
|
|
|
Hi to all
Iam using CInPlaceEdit class whose author is "Aravindan Premkumar"
Its working very well. But I want to have a spinner control associated with the inplace edit box (Offcourse it's possible). I tried the following code its working but there are some problems associated with it which I'll discuss below.
Code:
step 1: I made the CSpinButtonCtrl object member of this class
class CInPlaceEdit : public CEdit
{
public:
CSpinButtonCtrl m_spinCtrl;
.......
};
Step 2: I made some changes in the following method
BOOL CInPlaceEdit::ShowEditCtrl(DWORD dwStyle, const RECT &rCellRect, CWnd* pParentWnd, UINT uiResourceID, int iRowIndex, int iColumnIndex,CString& strValidChars, CString& rstrCurSelection)
{
m_iRowIndex = iRowIndex;
m_iColumnIndex = iColumnIndex;
m_strValidChars = strValidChars;
m_strWindowText = rstrCurSelection;
m_bESC = FALSE;
if (NULL == m_pInPlaceEdit->m_hWnd)
{
BOOL bCreated = m_pInPlaceEdit->Create(dwStyle, rCellRect, pParentWnd, uiResourceID);
// I added following code in this method
CRect rect;
rect.left = rCellRect.left + 50;
rect.top = rCellRect.top;
rect.right = 20;
rect.bottom = rCellRect.bottom;
// are above 5 line correct way to obtain right location for spinner ctrl??
// If not how it could be done?
bCreated = m_spinCtrl.Create(WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT |UDS_SETBUDDYINT | UDS_ARROWKEYS |UDS_AUTOBUDDY, rect, pParentWnd, IDC_SPIN);
m_spinCtrl.SetRange32(0, 1000);
UDACCEL uda;
uda.nInc = 20;
uda.nSec = 0;
m_spinCtrl.SetAccel(1, &uda);
return bCreated;
}
return TRUE;
}
after this I removed the PostMessage(WM_CLOSE) statement from OnKillFocus()
The spinner ctrl is getting displayed & the edit box values are also changing but only when user clicks on spinner button .
PROBLEMS:
1)Though while creating spinner button I have given style as UDS_ARROWKEY it is not working.
2) When User resizes the grid column multiple spin button ctrl gets created.
Please tell me where i am going wrong.
if any one have achieved this please help me how it could be done.
Thank you
|
|
|
|
|