anthonyc
asked on
Centering a Common Dialog Box in VB5
All,
I need to center (or position, it doesn't matter) a common dialog control. I've tried using the FindWindow API call. The problem is, I can't capture the window. If I call the findwindow API, prior to showing the CDLG, It returns nothing. If I call it in a timer that I enable prior to showing, it doesn't work (CDLG is modal). Any help?
Anthony
I need to center (or position, it doesn't matter) a common dialog control. I've tried using the FindWindow API call. The problem is, I can't capture the window. If I call the findwindow API, prior to showing the CDLG, It returns nothing. If I call it in a timer that I enable prior to showing, it doesn't work (CDLG is modal). Any help?
Anthony
Not possible .
ASKER
You have to give more of an explanation than "Not Possible" to expect a grade at all.. Right now, I reject the answer. I'm sure it's possible.
Anthony
Anthony
coz CDLG is modal
ESI is right. As a modal form, before it runs, you can't get it. After it runs, you can't get it. Get it?
Also, while it's running, you aren't running, so you can't get it! To do what you want, you have to use your own controls, in which case you can position the form before making it visible, even if you make it modal.
ASKER
Well I am still certain there is a way. I understand what you told me, and it's nothing that I didn't know! I will still reject the answer. Sorry, no cheap points from me.
Anthony
Anthony
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks! At least this is a response, with some reason. I thought of both ideas before. The second one is not really reasonable, and the first one is stupid. I can call the common dialog DLL myself. When you do that, the CDLG window position is at the top/left portion of the owner. If I make a usercontrol, where the user positions the control is where the topleft is. I am answering my own question.
Anthony
Anthony
I found out that the CommonDialog Control will appear in the Top-Left Corner of its parent. Therefore, if you place it inside a PictureBox Control, it will appear in the Top Left corner of the Control. Therefore if you can center the corner of the PictureBox, you can center the CommonDialog Control as well.
NB: As much as I would like to claim credit for this answer, I did in fact copy it from elsewhere - but any points gratefully receievd nonetheless.
NB: As much as I would like to claim credit for this answer, I did in fact copy it from elsewhere - but any points gratefully receievd nonetheless.
A third solution I'd like to add to those Vorlon gave, and which might be as simple as the 1st :
Open a tiny & invisible form from which the CLDG will be called, centering it indeed on the flight.
Open a tiny & invisible form from which the CLDG will be called, centering it indeed on the flight.