|
Anyone know of a program / class / piece of code that will take an irregularly spaced set of (x,y,z) data and transform to regularly spaced contours?
cheers,
Chris Maunder
|
|
|
|
|
Sound like the problem faced in Boundary Element Method.
...
|
|
|
|
|
GTS - GNU Triangulated Surface Library:
http://gts.sourceforge.net/index.html[^]
which won't create the contours, but will generate the delaunay triangulation.
From there you could write a routine to find all triangles spanning a given elevation, interpolate along their edges to get x,y coord and generate the contours.
GMT should be able to do what you want:
http://gmt.soest.hawaii.edu/[^]
... although it is a bit of overkill.
It's a bit of pain to get through the website, as a short-cut:
- goto ftp://falcon.grdl.noaa.gov/pub/gmt/4/[^]
- download GMT_progs.zip
- to start with look at xyz2grd.c and grdcontour.c
...cmk
Save the whales - collect the whole set
|
|
|
|
|
here is my code:
---------------------------------------------
RECT rect;
GetWindowRect(hWnd, & rect);
HDC hDC = GetDC(hWnd);
HDC hDCMem = CreateCompatibleDC(hDC);
HBITMAP hBmp = NULL;
hBmp = CreateCompatibleBitmap(hDC, rect.right - rect.left, rect.bottom - rect.top);
HGDIOBJ hOld = SelectObject(hDCMem, hBmp);
SendMessage(hWnd, WM_PRINT, (WPARAM) hDCMem, PRF_CHILDREN | PRF_CLIENT | PRF_ERASEBKGND | PRF_NONCLIENT | PRF_OWNED);
SelectObject(hDCMem, hOld);
OpenClipboard(NULL);
EmptyClipboard();
SetClipboardData(CF_BITMAP, hBmp);
CloseClipboard();
DeleteDC(hDCMem);
ReleaseDC(hWnd,hDC);
---------------------------------------------
if hWnd holds the handle of the window of the same program in which i place this code then it works fine. but if i store another program's window's handle in it then it gives me black image. the size of the image is according to the window whose handle was given but the image is totally black. i get the handle of other windows through the FindWindow fucntion.
can anybody tell me where did i go wrong?
|
|
|
|
|
im not sure i think window must be visible on screen ... try test with HWND hWnd = GetForegroundWindow();
|
|
|
|
|
use:
-------------------------------
HDC hdc;
RECT rect;
HWND hWnd = GetForegroundWindow();
hdc = GetWindowDC(hWnd);
GetClientRect(hWnd, &rect);
HDC hDest = CreateCompatibleDC(hdc);
HBITMAP hbDesktop = CreateCompatibleBitmap(hdc, rect.right - rect.left, rect.bottom - rect.top);
SelectObject(hDest, hbDesktop);
BitBlt(hDest, 0,0, rect.right - rect.left, rect.bottom - rect.top, hdc, 0, 0, SRCCOPY);
OpenClipboard(NULL);
EmptyClipboard();
SetClipboardData(CF_BITMAP, hbDesktop);
CloseClipboard();
DeleteDC(hDest);
ReleaseDC(hWnd,hdc);
-------------------------------
|
|
|
|
|
BitBlt requires that your window is not minmized and not even covered. I don't want this. I want to do it with SendMessage. Even if I first get the window to foreground and then capture its image, i get a black one. (if the handle was of another program's window)
|
|
|
|
|
Hello,
I want to know how I can convert ASCII strings into their Hex Values. For example:
A = 41
K = 4B
I'm programming with Dev-C++ if this is any help.
With best regards,
Benedikt
|
|
|
|
|
use:
char* mystring = "Hello world!";
for (int x = 0; x < strlen(mystring); x++)
{
printf("%x ", mystring[x]);
}
|
|
|
|
|
Thank you !
And how can I convert hex back to ascii ?
With best regards,
RedDragon2kx
|
|
|
|
|
lol its little harded but ok use this:
--------------
BYTE StringHexToByte(LPCSTR HexString)
{
BYTE hi;
BYTE lo;
hi = 0;
lo = 0;
if ((HexString[0] - 0x30)<10)
{
hi = HexString[0] - 0x30;
}
else {
switch (toupper(HexString[0])) {
case 'A':
hi = 0x0a;
break;
case 'B':
hi = 0x0b;
break;
case 'C':
hi = 0x0c;
break;
case 'D':
hi = 0x0d;
break;
case 'E':
hi = 0x0e;
break;
case 'F':
hi = 0x0f;
break;
}
}
if ((HexString[1] - 0x30)<10) {
lo = HexString[1] - 0x30;
}
else {
switch (toupper(HexString[1])) {
case 'A':
lo = 0x0a;
break;
case 'B':
lo = 0x0b;
break;
case 'C':
lo = 0x0c;
break;
case 'D':
lo = 0x0d;
break;
case 'E':
lo = 0x0e;
break;
case 'F':
lo = 0x0f;
break;
}
}
return (hi << 4) | lo;
}
static void StringHexToArray(IN LPCSTR HexString, OUT PBYTE Array)
{
UINT i = 0;
while (i < strlen(HexString))
{
*Array++ = StringHexToByte(&HexString[i]);
i += 3;
}
}
---------------
call as
BYTE* lpData = (PBYTE)malloc(1024);
ZeroMemory(lpData, 1024);
StringHexToArray(SourceString, lpData);
free(lpData);
|
|
|
|
|
Have you tried strtol() to change from one representation to another?
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
yes but how can I get that value in a variable the one that is printed ??
gabby
|
|
|
|
|
Are you wanting to know how to represent a value in base-16 rather than base-10? For example, the values:
65 (base 10)
41 (base 16)
1000001 (base 2)
are all the same but in a different base. Therefore, the concept of converting from one base to the other does not exist. You can represent a value in a different base, however. Hunter has provided an example of that.
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
i suddenly have problems when i try share folder on windows XP on ntfs filesystem, because i cannot access share maked with from remote computer. I read that i must set on folder permissions for group to everyone. Soo i read msdn. I make this function: http://hunter.localstudio.info/netshareadd.cpp but that dont work well still it havent perrmisions
|
|
|
|
|
You are trying to create a share on a remote XP machine with an NTFS volume. Correct? Is the share created successfully? On which machine are you unable to access it, the machine running your code or the machine with the newly-created share?
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
no, im trying create on local machine. Its create success and i cant access from remote computer (on network).. I try open on remote computer and there is "Access Denied"... share created with windows (right click on folder properties and file and folder share) works wihout problems
|
|
|
|
|
What does the call to NetShareAdd() look like?
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
omg it add success share but i need just change NTFS permissions on folder for everyone... Its windows Its not soo simple as in Linux do you understand? all i need ís set permission on shared folder.. else i cannot access from second pc on network
|
|
|
|
|
Anonymous wrote:
...it add success share...
But what value are you using for the shi2_permissions member of SHARE_INFO_2 ?
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
Hai....
For the dial-up duration status i am using RAS function to get the statistics of dial-up....similarly i need to get the duration how long the LAN was connected..is there a direct function or do i need to set a timer everytime the adapter is enabled!!!
Thnx
|
|
|
|
|
hi, all
I got access violatin at \MFC\SRC\DLGCORE.CPP At this point
void CDialog::EndDialog(int nResult)
{
ASSERT(::IsWindow(m_hWnd));
if (m_nFlags & (WF_MODALLOOP|WF_CONTINUEMODAL))
EndModalLoop(nResult);
::EndDialog(m_hWnd, nResult);
}
the m_hWnd is 0000000, the nResult is 2. does it sound right? what is nResult=2 means at this point? Thanks
|
|
|
|
|
valerie99 wrote:
what is nResult=2 means at this point?
It means that EndDialog() was called with an argument of 2 (IDCANCEL ).
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
Hi,
I need to go into a windows application and read/write a ListBox control. Or at least this is what Visual C .Net lists it as, when I load .exe application file (in the dialog directory).
any of the spy programs from this site do not list it as a simple ListBox, but as some proprietary List controls.
I have applied sendmessage function to the handle of this control with all possible combination of messages (that would make sense) and all I get is "0", despite the fact that the list is populated with at least one item most of the time.
Please help. Thanks
|
|
|
|
|
What is it exactly that you are wanting to do to this list control? Are you wanting to add items to, or read items from, an existing control, create a control at runtime, or something completely different?
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|