|
I have a drop down menu on one of my toolbar buttons. I am having problem with checking menu items. If I use CCmdUI::SetCheck method, there is no problem, but I want to do this in a different way.
Why does this code give error?
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
...
...
menu_tb2_btn1.LoadMenu(IDR_MENU_TOOLBAR2_BUTTON1);
ASSERT(menu_tb2_btn1);
pPopup = menu_tb2_btn1.GetSubMenu(0);
...
...
return 0;
}
void CMainFrame::OnTb2btn1Item1()
{
// TODO: Add your command handler code here
...
...
pPopup->CheckMenuRadioItem(0,3,1,MF_BYPOSITION);
...
...
}
|
|
|
|
|
Kapgan wrote:
Why does this code give error?
Exactly what error does it give? Is it a compiler error? A linker error? A run-time error? If the latter, what steps are you taking that leads up to this point?
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
It's a run-time error. It says debug assertion failure. I defined a pPopup named object and tried to make it hold the drop down menu, so that I can easily have access to other functions. But unfortunately I couldn't do this.
|
|
|
|
|
Kapgan wrote:
It says debug assertion failure.
Which line of which file?
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
|
As the assertion is related to a CString object, the code snippet you've provided is of no help. You'll need to locate the CString object in question. Given that m_pchData is in error, my first guess is that it is a heap-based object.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
how can i use a hotkey in a tabctrl (in first script or first tab) while runnig a dailog base application using tabs ??
|
|
|
|
|
hi
How i can get a size of RAM and a speed of prossesor by C++ (borland) ?
|
|
|
|
|
|
I HAVE DOWNLOADED AN EXE FILE USING URLOPEN().NOW I WANT TO SET-UP THAT EXE FILE WITHOUT SHOWING ME THE SET UP WINDOW,ASKING FOR PARAMETRS TO SET-UP.THE INSTALLATION SHOULDNOT ASK PARAMETERS FOR INSTALLATION FOR ANY EXE FILE I DOWNLOAD.
IS THERE ANYWAY IT AUTOMATICALLY ACCEPT DEFAULT PARMETERS.
|
|
|
|
|
sunit5 wrote:
NOW I WANT TO SET-UP THAT EXE FILE WITHOUT SHOWING ME THE SET UP WINDOW
Please clarify. Are you wanting to run the .exe file using something like CreateProcess() or ShellExecute() ? Unless the .exe file that you are wanting to run accepts command-line parameters, there is nothing you can do.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
thanks for ur suggestion it helped me.if the exe file accepts command-line parameters then only i can do silient installation.otherwise in windows i have to know what parameters does that .exe will accept.pls pour in ur suggestions if i m wrong.
|
|
|
|
|
you can make your exe file to go for silent install , it depend how you make your exe file.
and also pls dont use caps for messages.
Regards
Tarundeep Singh Kalra
************************
www.tarunsadhana.com
************************
All men die. Not all men really live”. - “Braveheart”, 1995
|
|
|
|
|
Hi, I'm developing on WinCE, ppc2003
these are dialog's datas from .rc file:
IDD_LAMINERKIA_DIALOG DIALOGEX 12, 11, 200, 300
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
EXSTYLE WS_EX_CLIENTEDGE | WS_EX_STATICEDGE
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,0,23,240,30
LTEXT "Stat",
IDC_STATIC,0,70,233,100,0,WS_EX_CLIENTEDGE
END
well.. how do I retrieve Dialog's information regarding its size and position.. I mean: how do I get the values underlined 12, 11, 200, 300?
[Note: GetWindowRect() or GetLocalRect() both give me values regarding the screen position.. and I need the exact values of the .rc file!]
Any help is welcome.
|
|
|
|
|
Dialog dmensions in an .rc file are in dialog base units[^], not pixels. To obtain the dialog's dimension in client coordinates, convert the size obtained using GetWindowRect() , like so:
CRect rect;
GetWindowRect (&rect);
ScreenToClient (&rect);
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Hi, Ravi,
thank u, but.. a couple of things:
1) ScreenToClient() lets unchanged the values of rect .. and even ClientToScreen() seems totally worthless. What reason for this?
2) The values I get in rect with GetWindowRect() and with GetClientrect() are those of the screen.. I mean.. exactly the coordinates where the device places the dialog automatically.. they're different from the values on my .rc file... and they're not even these I'd expect with the conversion..
Any idea on how to retrieve the values from the .rc file directly ...not having to convert anything?
|
|
|
|
|
As I mentioned, the width and height dimensions in your .rc file are in dialog base units, not pixels (i.e. screen coordinates). You can use GetDialogBaseUnits() to help convert screen coords to dialog base units, and MapDialogRect() to go in the other dirextion.
Hope this helps.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
This is exactly what I did, but the strange event is this:
neither GetWindowRect() nor GetClientRect() retrieves me values looking like my dialog's values
This is the example:
this is the sample dialog
IDD_LAMA_DIALOG DIALOG DISCARDABLE 50, 50, 200, 200
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,58,23,100,30
LTEXT "S",
IDC_STATIC,7,70,200,100,0,WS_EX_CLIENTEDGE
END
and this is the rect I get calling GetWindowRect()
[ I call this function inside the Onpaint() event ] :
top=26 (just under the menu bar)
bottom=294
left=0
right=240
(the screen resolution of my device is 240X320)
These values seems to have nothing to do with my .rc values.. and they represent size and dimension of the Dialog after it's been diplayed automatically and has filled the screen place.
So the question is the same.. I have to find the correct way to get the original size and position of mydialog ... after I will convert.
|
|
|
|
|
It seems that Windows is maximizing your dialog to fill the screen. You should try to disable this behavior - I suspect that will cause Windows to position the dialog at the screen coords corresponding to (50, 50, 200, 200).
Once again, note that the (50, 50, 200, 200) dimensions in your .rc file are in dialog base units, and NOT pixels!
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Lvca wrote:
exactly the coordinates where the device places the dialog automatically.. they're different from the values on my .rc file...
As has already been mentioned, the values in the .rc file are in dialog base units (DBUs), which are device-independent. These are different than pixels. The reason, and benefit, for this is so that an application can use a single template to create the same dialog box for all types of display devices. This ensures that a dialog box will have the same proportions and appearance on all screens despite differing resolutions and aspect ratios between screens.
Last time I bothered messing with them, one DBU was equal to about 1/4 the size of a system-font character. Using a different font changes this ratio. To get the number of pixels per DBU for the current display, use the GetDialogBaseUnits() function
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
You can process the resource data directly out of the binary resource data of your DLL, OCX, EXE, etc. using the EnumResourceNames, EnumResourceTypes, EnumResourceLanguages, etc. family of functions.
From your statement it is unclear exactly when you want to get these values. You should be able to read the resources from within the dialog, or you can do it from elsewhere in your program, or from another program entirely.
|
|
|
|
|
Hello,
How do I temporary disable the WM_PAINT operation during the time I am the scrolling CView? The reason is that I have a list of heavy drawing operations in my OnDraw. I would like it to draw only after I stop the scrolling of my CView.
thank you
|
|
|
|
|
I think the SetRedraw(TRUE|FALSE) function disables/enables calls to the drawing mechanism. I use it to disable drawing while populating large entries in my tree and list controls. I think this is a function of the CWnd class, so should also work in your CView derived class.
I Dream of Absolute Zero
|
|
|
|
|
Thanks, I will try that.
Yang
|
|
|
|
|
Try with CWnd::SetRedraw(FALSE);
Have a nice day
|
|
|
|