|
The following code gets the current mouse position :
POINT point;
GetCursorPos(&point);
The problem is to get this code called whenever the
mouse moves. WM_MOUSEMOVE only generates messages
when in the application window. The only way I have
found to do it is as follows:
1) add a WM_TIMER message to your application
2) code it as follows :
void YOUR_CLASS::OnTimer(UINT nIDEvent)
{
CDialog::OnTimer(nIDEvent);
POINT point;
GetCursorPos(&point);
3) start the timer :
SetTimer(1,200,NULL);
|
|
|
|
|
But is it possible to create a rebar that is permanently attached at the bottom edge of the frame, just above the status bar (and support show/hide also)?
|
|
|
|
|
How do convert an BSTR to an LPSTR.
I got the wrong value with this code:
CComBSTR strChatter("asdf");
char *cmdLine;
cmdLine = (char *) strChatter.m_str;
Im new on this and look forward to an answer.
Regards Jonas
|
|
|
|
|
Try this (no guarantees):
_bstr_t myBstr("asdf");
char cmdLine[256];
lstrcpy(cmdLine, (LPCTSTR)myBstr);
|
|
|
|
|
This works:
void CBstrtestView::OnButton1()
{
/* This approach uses the powerful conversion macros built into ATL
A2OLE and OLE2A are just 2 of a number of these macros.
This fragment is from an MFC test project that has included
atlbase.h and atlcom.h
*/
USES_CONVERSION; // the ATL conversion macro setup
TCHAR sTestIn[100];
// get some text into a TCHAR string
GetDlgItemText(IDC_EDIT1, sTestIn, 100);
BSTR bstrText;
bstrText = SysAllocString(A2OLE(sTestIn));
SetDlgItemText(IDC_EDIT2, OLE2A(bstrText));
SysFreeString(bstrText);
}
Look for the "String Conversion Macros" item under ATL Macros and Global Functions
|
|
|
|
|
I have 2 CStrings one has 2 dashs in it eg test1-test2-test3.txt
the other one has 3 dashs in it. eg test1-test2-test3-test4.txt
I need some code to find the one with the 3 dashs and kill the file.
I'm in a while loop but and have been trying to get the find to work right
I can find the first - but how do I continue on from there ?
Thanks in advance for any help
|
|
|
|
|
Maybe just count the number of '-' in the string ...
CString testString = "test1-test2-test3--.txt";
int numberFound = 0;
for (int i=0; i<testString.GetLength(); i++)
if (testString.GetAt(i) == '-') numberFound++;
|
|
|
|
|
Phil first thanks
I don't know if it was a typo but the i<testString would not compile
I changed it to i&testString and then it compiled fine but it's just
returning a UAB what is that ?
|
|
|
|
|
I am having problems formatting the "less than sign"
(it thinks it is a start of a html tag).
CString testString = "test-1test-2test3.txt";
int numberFound = 0;
for (int i=0; i LESS_THAN_SIGN testString.GetLength(); i++)
if (testString.GetAt(i) == '-')numberFound++;
the GetLength() is a member function of the CString class
|
|
|
|
|
int CountCharacters(CString sString, char cChar)
{
int nLen = sString.GetLength();
int nFound = 0;
if (cChar == '\0'
{
nFound = nLen;
}
else
{
for (int nIndex = 0; nIndex < nLen; nIndex++)
{
nFound += ((sString[nIndex] == cChar) ? 1 : 0);
}
}
return nFound;
}
//in the calling function, put this:
if (CountCharacters(myString, '-') == 3)
{
// ... do something ...
}
|
|
|
|
|
I'm getting this error. any clues ?
'CountCharacters' : local function definitions are illegal
|
|
|
|
|
I think that you put the CountCharacters() function INSIDE of an existing function. Place it at the end of your CPP file (and remember to declare it at the top of the CPP file or in the .H file)
|
|
|
|
|
Yeah, you've coopy the CountCharacters() function into another function.
While this is a valid construct in Pascal, it's a no-no in C/C++.
|
|
|
|
|
Hi,
Try this function to count the dashes:
int CountChar(CString str, TCHAR ch)
{
int found = 0;
int start = 0;
start = str.Find(ch, start);
while (start => 0)
{
found++;
start = str.Find(ch, start);
}
return found;
}
I wrote this while replying, so I didn't try that. Should work...
Paolo.
|
|
|
|
|
I have a CPropertySheet with stacked tabs. How can I find the total height of the stacked tabs. I add / remove various tabs in realtime, so the height will change!]
Thanks to anyone that can help!
|
|
|
|
|
Hi,
I wrote a small application which has a dialog box as UI. I put a BMP as background. The problem is when the user uses large fonts my dialog has a strange behavior... Is there an API to know if the large fonts are activated (so I can use several BMP !)
Thank you !
|
|
|
|
|
Hi,
This will tell you if large fonts are selected:
hDC=::GetDC(NULL);
if (::GetDeviceCaps(hDC, LOGPIXELSX)>96)
{ //running under 'Large Font' monitor setting
}
::ReleaseDC(NULL, hDC);
Regards,
John
|
|
|
|
|
I am starting a thread in my application with:
MIThread = AfxBeginThread(MyThreadProc, this)->m_hThread;
After starting the thread I am doing some DDE initialisations (In my thread code):
DdeInitialize (&pidInst, DdeCallback, APPCMD_CLIENTONLY, NULL);
if (!pidInst) return FALSE;
DdeCallback is my DDE callback procedure and is defined as follows:
(HDDEDATA CALLBACK DdeCallback(UINT uType, UINT uFmt, HCONV hconv, HSZ hsz1, HSZ hsz2,HDDEDATA hdata, DWORD dwData1, DWORD dwData2) { return 0;})
After that I am doing some additional DDE initialisations:
hszMI = DdeCreateStringHandle(pidInst, "MapInfo", CP_WINANSI);
hszAp = DdeCreateStringHandle(pidInst, "elp.mbx", CP_WINANSI);
hDDEMI = DdeConnect (pidInst, hszMI, hszAp, NULL);
if (!hDDEMI) return FALSE;
After that I use a loop (to recieve or send messages)
while (!bEndMapInfo)
{
//nothing (usually I am doing some things here but I commented it out for testing purpurses)
sleep(100);
}
As long as the thread stays in this loop oracle reports stops. When I exit the loop it countinues.
Has anyone an Idea to solve the problem???
Any suggestion is helpfull
|
|
|
|
|
if I leave out this lines:
DdeInitialize (&pidInst, DdeCallback, APPCMD_CLIENTONLY, NULL);
if (!pidInst) return FALSE;
it the problem is away
|
|
|
|
|
How can I synchronize one file which is used by multiple applications.
A detailed help will do more good to me.
Thanks in advance
Aasher
|
|
|
|
|
Hi!
I need some simple way of determining if the remote win nt sys on my intranet is 'Locked' / in Screen saver mode - this is required for the messaging software which i am developing.
I use VC++ for the project.
Thanks,
Anand
|
|
|
|
|
Hi All.
Any idea how to read in a tab delimited file? Can you actualy show me code?
Thank you for your help!
- Adrian
|
|
|
|
|
I have a string parsing class that allows you to specify a string and a delimiter character and builds an internal CStringArray. It also has accessor functions that allow you to retrieve a substring by index.
As far as reading the file goes, am I correct in assuming it's a text file?
|
|
|
|
|
Using OpenGl I have spent some time trying to devise a method of using what is already in the front buffer (in a double buffered context) for fast redraws.
This is useful when the window has finished rendering (maybe waiting for further user input) and a redraw message is sent to the application for some other reason (maybe the user has moved the window). It is a waste of time performing a full render because the final image will be identical to that prior to the redraw. And if the redraw is lengthy then the user cannot do anything until the redraw has finished (which could become annoying to the user). I have tried using glFlush()/glFinish() instead of swapbuffers() and this appears to work on the generic implementation, but with a Voodoo 3500 it doesn't work (who knows what they do with the front and back buffers). I do not want to use extensions that may not exist in a generic implementation or accelerated environment (PFD_SWAP_COPY, AUX buffer etc). I have also tried rendering to a bitmap then using BitBlt() in a single buffer context, but this is incredibly slow.
What can I do?
|
|
|
|
|
A few suggestions :
1) have you tried glReadPixels() / glDrawPixels() ?
2) The accumulation buffer is guaranteed to exist
in all openGL implementations ... maybe you can
use it somehow ?
What "windowing" system are you using ?
AUX ? GLUT ? wgl ?
|
|
|
|