|
Before I setup the Printer Setup dialog I wanted to set the paper size and orientation ect.
What I did was:
CPrintDialog PDlg(TRUE);
GlobalAlloc(GMEM_MEVABLE, sizeof(DEVMODE));
DEVMODE* pDevMode = (DEVMODE*) GlobalLock(PDlg.m_pd.hDevMode);
pDevMode-> ...
...
GlobalUnlock(PDlg.m_pd.hDevMode);
PDlg.DoModal();
According to MSDN this should be enough to initialize things before the call to DoModal, right?
Thanks for any suggestions.
|
|
|
|
|
I'm interested to know what version control ppl use at work. I'm currently evaluating visual sourcesafe with sourceoffsite for distributed team collaboration on code and also cvs on a linux machine with windows gui clients. One is free and the other is not but has anyone had any experiences with both or use something else?
|
|
|
|
|
We use SourceSafe and SourceOffsite here. biut I'm afraid I've got no experience of CVS.
This topic has been discussed pretty extensively in the Lounge, so I'd suggest a quick trail through the posts (don't worry, there's only 77,000 of them ) would be a good starting point.
Just try setting the filter to "SourceSafe" or "version control" and you'll find plenty of information.
Andy Metcalfe - Sonardyne International Ltd
Trouble with resource IDs? Try the Resource ID Organiser Add-In for Visual C++
"I would be careful in separating your wierdness, a good quirky weirdness, from the disturbed wierdness of people who take pleasure from PVC sheep with fruit repositories."
- Paul Watson
|
|
|
|
|
We have used WinCVS at work and found that on many occations it 'Lied' to us about diffs in files.
We also us Source Safe on projects where we use Visual Studio as it is conviently intergrated. A warning however if the SS database is on a UNIX server, be sure that the file system which contains the 'sepository' is not subject to quotas. If a user overruns the soft quota during the checkin process, it screws up the repository because the file will be integrated and the history update may not happen. This happened a number of times on a previous project I worked on and now I have insisted that source code is free of quotas, because we know that no matter which system you use the repository will only grow and not shrink.
Happy programming!!
|
|
|
|
|
I have imported office 97 (or maybe XP), no dll hell any more, now it is called com hell;
#import "D:\Microsoft Office.97\Office\Mso97.dll"
#import "c:\Program files\Common Files\Microsoft Shared\VBA\VBE.DLL"
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBEEXT1.OLB"
#import "D:\Microsoft Office.97\Office\MSWORD8.OLB"
As i would like to support different office versions, i need "a bit" changed headers, so there wouldnt be any namespace conflict between different versions of imported librarys.
After checking tlh, i have encountered on #pragma start_map_region. What does it do?
|
|
|
|
|
The only thing I can think of is that start_map_region is a macro. Try searching for a definition...
Otherwise I'm afraid I can't help.
/moliate
|
|
|
|
|
How can i get the 16 byte MAC address (card address)
programatically..
Its not the IP.. the other one
Sameer
|
|
|
|
|
BOOL CRegistrationSerial::GetMAC(int adapter_num, char *pMacAddress)
{
struct STASTAT
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff[30];
};
// Reset the LAN adapter so that we can begin querying it
NCB Ncb;
memset(&Ncb, 0, sizeof(Ncb));
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = adapter_num;
if (Netbios(&Ncb) != NRC_GOODRET)
return false;
// Prepare to get the adapter status block
ZeroMemory(&Ncb,sizeof(Ncb));
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = adapter_num;
strcpy((char *) Ncb.ncb_callname, "*");
STASTAT stAdapter;
ZeroMemory(&stAdapter,sizeof(STASTAT));
Ncb.ncb_buffer = (unsigned char *)&stAdapter;
Ncb.ncb_length = sizeof(stAdapter);
// Get the adapter's info and, if this works, return it in standard,
// colon-delimited form.
if (Netbios(&Ncb) == 0)
{
sprintf(pMacAddress, "%02X:%02X:%02X:%02X:%02X:%02X",
int (stAdapter.adapt.adapter_address[0]),
int (stAdapter.adapt.adapter_address[1]),
int (stAdapter.adapt.adapter_address[2]),
int (stAdapter.adapt.adapter_address[3]),
int (stAdapter.adapt.adapter_address[4]),
int (stAdapter.adapt.adapter_address[5]));
return true;
}
return false;
}
|
|
|
|
|
I write the following code to draw a radial gradient fill,but it goes to slowly.Can anyone help to correct the code,please?
/////////////////////////////////////////////////////////////////////////////////////////////// Function Header
void PaintEllipse(CDC* pDC, int x, int y, int w, int h, COLORREF color)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
CRect rc = CRect(x,y,x+w,y+h);
CBrush brush(color);
CBrush* pOldBrush = pDC->SelectObject(&brush);
pDC->Ellipse(&rc);
pDC->SelectObject(pOldBrush);
}
void FillRadialGradient (CDC *pDC,CRect rect, COLORREF crStart, COLORREF crEnd)
{
CPen *pOldPen;
pOldPen = NULL;
PaintRect(pDC,rect.TopLeft().x,rect.TopLeft().y,rect.Width(),rect.Height(),crStart);
pOldPen = (CPen *)pDC->SelectStockObject(NULL_PEN);
CRect rcBound = rect;
int nTotal = max(rcBound.Width(),rcBound.Height());
double rStep,gStep,bStep,rVal,gVal,bVal;
COLORREF colorA=crStart,colorB=crEnd;
rVal=(double)GetRValue(colorA);
gVal=(double)GetGValue(colorA);
bVal=(double)GetBValue(colorA);
rStep=((double)GetRValue(colorB)-rVal)/nTotal;
gStep=((double)GetGValue(colorB)-gVal)/nTotal;
bStep=((double)GetBValue(colorB)-bVal)/nTotal;
double dX = max(fabs(rStep), max(fabs(gStep), fabs(bStep)));
if( dX < 1.0 / ((double)nTotal) )
dX = (double)nTotal;
else
dX = max(1.0, floor(1.0/dX));
int delY = 3 * (int)dX;
delY = max(delY, 3); // make sure it is not less than 2
if(nTotal < 70)
{
delY = 1;
}
int nSteps = nTotal/delY;
for (int i = 0; i < nSteps; i++)
{
// do a little alpha blending
BYTE bR = (BYTE) rVal;
BYTE bG = (BYTE) gVal;
BYTE bB = (BYTE) bVal;
CRect r2 = rect;
r2.DeflateRect(i * rect.Width() /(2 * nSteps),i * rect.Height() / (2 * nSteps),i * rect.Width() / (2 * nSteps),i * rect.Height() / (2 * nSteps));
PaintEllipse(pDC,r2.left,r2.top,r2.Width(),r2.Height(),RGB(bR, bG, bB));
rVal+=(rStep * delY);
gVal+=(gStep * delY);
bVal+=(bStep * delY);
}
if(pOldPen != NULL)
{
pDC->SelectObject(pOldPen);
}
}
Please!!!!!!!!
|
|
|
|
|
pDC->Ellipse(&rc); is consuming over 70% of the time spent in your two functions (using a rectangle with size 200 by 200 and a memory DC)
You are painting the same areas over and over again, excluding the outermost part of the ellipse.
|
|
|
|
|
Many thanks your reply,but how can I solute these problems.I have tried many methods.
Many thanks again!
|
|
|
|
|
how to judge IE have opened a page?
thanks a lot!
|
|
|
|
|
If you are taking in events, look for DocumentComplete (DISPID_DOCUMENTCOMPLETE) (DOM has been built, and is ready to be read/manipulated).
If not, check the readystate of the document with IHTMLDocument2::get_readyState
/moliate
|
|
|
|
|
Hi,
I just encountered a TransmitFile API call
Have anyone used it before.. i mean i want to
use it in my program to transmit a file to server.
Also, my server is a Linux server and i've written a
small program there.. how should i use this with the
server.. how should i code accordingly
|
|
|
|
|
Hi,
I want to know how to programatically create key's
and values in the Registry..
A small example would be helpful
Thanks in advance
Sameer
|
|
|
|
|
You can use CRegKey like so:
CRegKey reg;
BOOL ret = FALSE;
if (reg.Create(HKEY_CURRENT_USER, "Software\\YourApp") == ERROR_SUCCESS) {
reg.SetValue("Value", "Name");
reg.Close();
}
-Jack
To an optimist the glass is half full.
To a pessimist the glass is half empty.
To a programmer the glass is twice as big as it needs to be.
|
|
|
|
|
Thanx a lot.. but how can i come to know whether the
Key already exists..
Actually i just want to create if it does not exist..
And also can i make multiple subtrees
Sameer
|
|
|
|
|
Check this http://www.codeproject.com/system/registry.asp
Sonu
|
|
|
|
|
Hey~
I think I may have found a bug in Visual C++ with MFC. Could someone please either confirm it as a bug or offer a suggestion to fix the problem?
I've overridden PreTranslateMessage and OnInitDialog for every dialog in my app as per MSDN to support Accelerators... I even communicated with Paul DiLascia about this. Plus I've overriden ProcessMessageFilter and InitInstance in my main app class to support application wide accelerators. Everything works fine, EXCEPT when the focus of my application is on the WebBrowser control that I have on a dialog, and I hit the Ctrl+O key combination. I have set up my accelerator resource to map Ctrl+O to a function that I have. This function never gets called. If the focus of my app is ANYWHERE besides in the WebBrowser control, it works perfectly.
Is this a bug?
I placed TRACE calls in my PreTranslateMessage and ProcessMessageFilter functions to observe what was happening when I tried the various "hotkey" combinations. Everything worked as expected, but when I tried the Ctrl+O while the focus was on the WebBrowser control and the following message was displayed in the debug output for the app within Visual C++ 6.0.
Loaded 'C:\WINDOWS\SYSTEM\BROWSEUI.DLL', no matching symbolic information found.
I don't know if that will help anyone figure this out, but...
It seems as if the WebBrowser control is capturing the Ctrl+O and discarding it. Shouldn't the ProcessMessageFilter in my main app class capture this before any control gets a chance to?
I've been trying to figure this out for about 2 weeks now... someone HAS to know how to fix this...
Thanks in advance,
thundercatzlair
|
|
|
|
|
No, if the web control has the focus, it will get first dibs at processing the message. That's what I would expect, anyhow. Is the web control passing other key messages through to your main window ? Can it be set to ?
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
|
|
|
|
|
Yes, the web control is passing the other "hotkey" combinations through to my main window... just not Ctrl+O. I don't know if it can be set to... I have looked all over the place and scoured MSDN and haven't found any solution. There has to be one... I just haven't found it yet, I guess. Or maybe it's just that I wasn't looking for the correct thing.
thanks,
thundercatzlair
|
|
|
|
|
One possible solution is to inherit your own class from the web browser class, sub-class the window and intercept the message in your derived class before it sinks th messahes and loses it for you.
Not sure if you can do this with web broowser controls etc (I have no experience with them)
Roger Allen
Sonork 100.10016
If I had a quote, it would be a very good one.
|
|
|
|
|
Is there any way to timeout receive function?
I mean,if no data is send to me and I'm receiving. How
I could stop this receiving nicely? For example
in 30 seconds?
My code:
do
{
cout << "Socket Receiving" << endl;
nRead = tmpSocket->Receive(ReceiveStr, RECEIVE_BUFFER_SIZE);
strBuilder.addString(ReceiveStr, nRead);
} while (nRead == RECEIVE_BUFFER_SIZE);
|
|
|
|
|
Use setsockopt function. For example:
int timeout = 10;
setsockopt(tmpSocket, SOL_SOCKET, SO_RCVTIMEO,
(char *)&timeout, sizeof(timeout));
|
|
|
|
|
|