|
THe formview should have a scroll bar automatically. The onyl times it will not is if you are calling SetScrollSizeToFit() on the form view. Thsi function is used to set the x/y dimension of the form before a scroll bar appears. By default the size of the formview in the resource editor is used as the default size of the form. If the screen real-esatet is less then this then you get your scroll bars.
Roger Allen
Sonork 100.10016
Were you different as a kid? Did you ever say "Ooohhh, shiny red" even once? - Paul Watson 11-February-2003
|
|
|
|
|
Thks for your answer. But in fact, because I've got several views, my view is derived from CView and not from CFormView, and I manually add a dialog on the view. The user can choose another mode, and another dialog is displayed on the view.
Can I automatically display a scrollbar in this way?
Thks in advance!
Appstmd
http://www.appstmd.com
|
|
|
|
|
I am creating a control that has a treeview.
I am trying to capture the OnNotify with
NMHDR *phdr = (NMHDR *)lParam;
// Coming from listview?
if( phdr->code == NM_RCLICK )
MessageBox(NULL, "Right click found", "Click", MB_OK);
but i am only getting the calls when the mouse is clicked on the header, same goes for Double click, what am I doing wrong,
any help is really appreciated
shotgun
|
|
|
|
|
I assume you mean a list view, since a tree doesn't have a header.
WM_NOTIFY messages go to the parent of the control, so when you r-click the list, the message goes to the list's parent. This is why you get a message when you r-click the header; the message goes to the header's parent, which is the list.
--Mike--
Ericahist | Homepage | RightClick-Encrypt | 1ClickPicGrabber
"You have Erica on the brain" - Jon Sagara to me
|
|
|
|
|
I want to search through a directory and get all the files and subdirectories in it. I can't seem to get subdirectores using CFileFind, just files, so I was wondering if there was another way to do this.
Thanks
|
|
|
|
|
One solution is FindFirstFile() and FindNextFile(). Determine the file attribute to distinguish folders from files.
Kuphryn
|
|
|
|
|
I tried that and whenever it got a folder, and I tried to display the name of the folder, it was just a period. I'll give that another try though.
|
|
|
|
|
Yeah. Those functions could return periods, which indicate parent folder.
Kuphryn
|
|
|
|
|
Change the function you are using to scan through a folder to a recursive one. Whenever you encounter a folder, call that function again with the sub folder path. I have done this and it works.
|
|
|
|
|
Hi.
I have this class:
<br />
class CNetwork<br />
{<br />
public:<br />
void InitNetwork();<br />
DWORD WINAPI ListningForClients(LPVOID Arg1);<br />
void SendToClient(CLIENTS TheClient,char *Command);<br />
<br />
<br />
private:<br />
char ServerAddress[64];<br />
int ServerPort;<br />
struct hostent *ServerHost;<br />
int nReturn;<br />
<br />
SOCKET s; <br />
WSADATA wsda; <br />
SOCKET sListen, sClient;<br />
SOCKADDR_IN addr, RemoteAddress; <br />
};<br />
But I'm having some problems with the DWORD WINAPI ListingForClients call
DWORD WINAPI ListningForClients(LPVOID Arg1)<br />
{ <br />
......<br />
if (NumClientsConnected < MaxConnections)<br />
{<br />
CreateThread( NULL, 0, &ListningForClients, 0, 0, 0);<br />
}<br />
......<br />
}
This ofcourse calls itself, theirby creating a new thread..
But i'm getting this error when compiling.
CNetwork.cpp(42) : error C2276: '&' : illegal operation on bound member function expression
The function works when it's not incapsueled in a class!!
Thank for anyhelp.
|
|
|
|
|
Make ListningForClients static . For further info on callbacks over member functions, check Mike Dunn's C++ FAQ (top of this page), paragraph 6.1.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Okay I tried to make it static. but now i get some errors:
example: illegal reference to data member 'CNetwork::sListen' in a static member function
Might I ask, what does Static do?
|
|
|
|
|
Well, Mike's FAQ explains it all, but I'll try to clear the issue up myself. Non-static members have, so to say, a hidden parameter pointing to the object the member function applies to (the this parameter, if you want to see it like that). After changing ListningForClients to static , the member function is no longer bound to any particular object via this , hence the error. This is what static means when applies to member functions: general functions not associated to particular instances of the class.
The way out of this problem is to use a callback paramter CreateThread provides just for this sort of things. In this parameter you can store a pointer to the relevant object and then use it accordingly. Pseudocode follows:
class CNetwork
{
...
static DWORD WINAPI StaticListeningForClients(LPVOID Arg1)
{
CNetwork* object=(CNetwork*)(Arg1);
object->ListeningForClients();
}
void ListeningForClients()
{
}
...
CreateThread( NULL, 0, &ListeningForClients, this, 0, 0);
}; Hope you get the idea. Please read the FAQ for further clarification. Good luck.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
The problem is that you do not need to pass the Address of the the function ListenForClients, because ListenForClients as a symbol is already an address.
Just get rid of the ampersand.
CreateThread( NULL, 0, ListeningForClients, this, 0, 0);
|
|
|
|
|
How can I open an .exe file to see the actual code?
Alex
|
|
|
|
|
Use Visual Studio. Open as binary.
|
|
|
|
|
You can't see the actual code, just the machine language binary
numbers put out by the compiler/assembler/linker.
To get a better understanding of what's inside an exe file,
see the following article by Matt Pietrek:
http://msdn.microsoft.com/msdnmag/issues/02/02/PE/default.aspx
http://msdn.microsoft.com/msdnmag/issues/02/03/PE2/default.aspx
|
|
|
|
|
I need to loop through each pixel in a "device context" in GDI+. In the old GDI I just did this:
if(pDC->GetPixel(point) == crLineTwoColor)
{
::SetCursor( AfxGetApp()->LoadStandardCursor( IDC_SIZEWE ) );
}
but now with GDI+ I don't know how to check the "device context" pixel by pixel to check for a certain color. I check the documentation, but there is not function called GetPixel() in the Graphics class. I see there is a GetPixel() function in the Bitmap class, but I don't know how to put the contents of a device context into a Bitmap variable.
How do I check the "device context" pixel by pixel to check for a certain color using GDI+? or How do I put a copy of what is on my device context in a Bitmap variable so I can use the GetPixel() function?
P.S I know that it isn't called a device context anymore in the GDI+, but I don't know what else to call it.
Thanks in Advance!
Greg
|
|
|
|
|
Is there simple byte_swap function or does anyone know how to do it?
- Nitron
"Those that say a task is impossible shouldn't interrupt the ones who are doing it." - Chinese Proverb
|
|
|
|
|
What do you mean by byte swapping? Can you give an example of what you're after?
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
I am trying to read a legacy file format where data is written as follows:
snip--
Integers are 2-s complement, with high-order bytes first. Real numbers are in 32-bit IEEE 754 format with high-order bytes first.
im trying to figure out how to get the binary data into a float...
- Nitron
"Those that say a task is impossible shouldn't interrupt the ones who are doing it." - Chinese Proverb
|
|
|
|
|
As for the integers, here's a small routine (beware, not tested):
int swap_int(int x)
{
int y;
char *p0=reinterpret_cast<char *>(&x);
char *p1=reinterpret_cast<char *>(&y);
p1[0]=p0[3];
p1[1]=p0[2];
p1[2]=p0[1];
p1[3]=p0[0];
return y;
}
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
void ImageEncDec::ByteSwap(PWORD imptr, UINT length)
{
PWORD item;
PBYTE hi;
BYTE temp;
for( UINT i = 0; i < length; i++ ) {
item = &imptr[ i ];
hi = (PBYTE)item;
temp = hi[0];
hi[0] = hi[1];
hi[1] = temp;
}
}
John
|
|
|
|
|
template <class T> T ReverseBYTES (T &t)
{
int bytes = sizeof(T);
T rev;
BYTE *ptr1 = (BYTE *)&t;
BYTE *ptr2 = (BYTE *)&rev;
for (int x = 0; x < bytes; x++)
ptr2[x] = ptr1[bytes - x - 1];
return rev;
}
Works with data of any size.
Sonork 100.11743 Chicken Little
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
Within you lies the power for good - Use it!
|
|
|
|
|
sweet! thanx.
I also found a fun little function tucked away in winsock2.h...
u_long ntohl (
u_long netlong
);
The ntohl function takes a 32-bit number in TCP/IP network byte order and returns a 32-bit number in host byte order.
in other words: byte swap. Who'd a thought.
Anyway, I like your approach better, it's more generic. Thanks again!
- Nitron
"Those that say a task is impossible shouldn't interrupt the ones who are doing it." - Chinese Proverb
|
|
|
|