|
sorry guys, I don't understand - I only know how to make menus (at the moment) by adding it in the resource editor as IDR_MENU1 and manually adding sections to it. I have tried "system menu" on and off in the dialog properties, in both cases, the menu I made with File/View/Help across the top and several sub items appears correctly WITHOUT a call to SetMenu.
I made the menu in exactly the same way in VS2005 (actually I may have even converted the project as well, and it would not display unless I added the SetMenu line.
BOOL CTestFolderBrowseDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
/*
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
*/
CMenu theMenu;
theMenu.LoadMenu(IDR_MENU1);
CRect rect;
m_Table.GetClientRect(&rect);
int nColInterval = rect.Width()/6;
m_Table.InsertColumn(0, _T("E(nominal)"), LVCFMT_LEFT, nColInterval);
m_Table.InsertColumn(1, _T("E(measured)"), LVCFMT_LEFT, nColInterval);
m_Table.InsertColumn(2, _T("Geske Dose"), LVCFMT_LEFT, nColInterval);
m_Table.InsertColumn(3, _T("E(actual)"), LVCFMT_LEFT, nColInterval);
m_Table.InsertColumn(4, _T("Tolerance"), LVCFMT_LEFT, nColInterval);
m_Table.InsertColumn(5, _T("Result"), LVCFMT_LEFT, rect.Width()-5*nColInterval);
m_wndStaticFilePath.SubclassDlgItem (IDC_STATIC2, this);
m_wndStaticFilePath.SetPath (TRUE);
m_CalFactor.SetWindowText("1");
//EnableToolTips(TRUE);
return TRUE; // return TRUE unless you set the focus to a control
}
|
|
|
|
|
Please check the following thing in the vc6.
right click on your dialog->Take properties->And in the "General tab" there will be combobox with name Menu. Tell me is there any thing selected in that combobox.
nave
|
|
|
|
|
ah yes - there it is. Many thanks Naveen!
|
|
|
|
|
Does anyone have a solution for trapping the proper messages which will allow you to enable your menu item in some hooked programs which always disable the menu items?
I guess I'm looking for something equivalent to ON_COMMAND_UPDATE_UI but as a message caught using a hook dll. My attached menu items can be enabled by trapping some messages from the other program but when it paints the window my menu is disabled again.
Any help would be appreciated.
Jeremy Pemberton-Pigott
A programmer with a dream can accomplish anything. So, start by implementing your castle in the clouds and then working on its interface to a foundation
Quote by: Jeremy Pemberton-Pigott
New Dawn Engineering
|
|
|
|
|
A couple of data blocks with BITMAPHEADER (40,176,144,1,24,0,76032,0,0,0,0)and (40,176,144,1,12,808596553,38016,0,0,0,0) . How should I display this two blocks ?
Thanks
|
|
|
|
|
Mmmm,
First thing... Do you mean BITMAPHEADER or BITMAPINFOHEADER???
One way is to get the parameters of the structures one per one and formating a CString to have the value in. Then display as you want. I.E:
BITMAPINFOHEADER bmi;
CString szSize = "", szWidth = "", szHeight = "";
szSize.Format (_T("%d"), bmi.biSize);
szWidth.Format (_T("%d"), bmi.biWidth);
Now you can put the parameters on the screen, AfxMessageBox (), save them...
Hope it helps (and it is what you were asking for, if not... explain it better :P )
Edit: I forgot to close a () in the code
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
|
|
|
|
|
Oh,thanks.But I know the format,these are two different format DIB(from the header). What I want to do is display the two different images.
|
|
|
|
|
That mode is supported on pretty much all video capture drivers.
An example how to set that mode:
LONG lWidth = 176
LONG lHeight = 144;
WORD wBitsPerPixel = 24;
BITMAPINFO BitmapInfo;
memset(&BitmapInfo, 0, sizeof(BITMAPINFO));
BitmapInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
BitmapInfo.bmiHeader.biWidth = lWidth;
BitmapInfo.bmiHeader.biHeight = lHeight;
BitmapInfo.bmiHeader.biPlanes = 1;
BitmapInfo.bmiHeader.biBitCount = wBitsPerPixel;
BitmapInfo.bmiHeader.biCompression = BI_RGB;
BitmapInfo.bmiHeader.biSizeImage = (DWORD)((((lWidth * (long)wBitsPerPixel + 31L) & (~31L)) / 8L) * lHeight);
capSetVideoFormat(m_capwnd, &BitmapInfo, sizeof(BITMAPINFO));
To display an image (or a video frame) in that format, the easiest way is with a StretchDIBits.
You have the format (BITMAPINFO) - all you need to do is call StretchDIBits passing as the lpBits
parameter a pointer to the bitmap/video frame pixel data.
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
I am sorry,that codes could not work remainly. It would fail at capSetVideoFormat function.
My video seems doesn't surport such format,it using I420 biCompression.
|
|
|
|
|
kcynic wrote: it using I420 biCompression
What kind of device is it? You'll need a decompressor to view it then, right?
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
biCompression=808596553
biSizeImage=38016
and other values are equal to your given/
|
|
|
|
|
Right - you need to display that bitmap data? If so, it needs to be decompressed to a
displayable format.
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Yes,I should display it.Because one divece on a computer capture such data and translate to another to show.
But I don't know how to decompress the data.
|
|
|
|
|
Since you are using VFW, probably the easiest way to decompress the frames is with the
Video Compression Manager[^]. The section "Using the Video Compression Manager[^]"
documents the necessary steps and has sample code for each step.
I'm not sure if an I420 codec comes with Windows or if you need a third-party one. If you have a
codec that isn't a VCM codec you could use that of course
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
If I declaration a string like this:
<br />
char str[8] = {0};<br />
<br />
cout << sizeof(str) << endl;
But if I use new expression created a string in heap, for example
<br />
char* s = new char[8];<br />
<br />
cout << sizeof(s) << endl; <br />
So, how can get the size of string by use the new expression? Thanks!
|
|
|
|
|
try _msize() function.
nave
|
|
|
|
|
_msize is not standard. This may or may not be an issue.
Steve
|
|
|
|
|
not standard?Why you say so?Can u pls explain?
nave
|
|
|
|
|
Probably because of the leading underscore.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Do a Google search for _msize standard[^] and you'll find plenty of info. Essentially it's not officially part of C++.
Steve
|
|
|
|
|
hi steve,
None of them specifies about the _msize() implementation in vc++. And I know how this is implemented in vc++ 6( you can find it out just by steping into the CRT codes ). Please check it and then tell me is there any thing wrong in using it.
nave
|
|
|
|
|
As far as I know there is no problem with using it. I don't use it myself and never would so I can't guarantee this. If all you care about is MSVC then the fact that it’s non-standard will not concern you.
Steve
|
|
|
|
|
Why not simply use strlen ? If this is a standard NULL terminated string, that's the way to go.
EDIT: I just saw the answer of Naveen and I'm wondering what you want to know exactly: the number of characters in the string (it will stop at the NULL termination wihtout counting it) or the size of the memory block allocated ? For the latter, then check the post of Naveen.
|
|
|
|
|
My compiler is Visual C++ 6.0. This compiler can use the _msize function.
Now, my problem has been solved.
|
|
|
|
|
hanlei0000000009 wrote: So, how can get the size of string by use the new expression? Thanks!
One possibility is to look at the 32 bits preceding the address returned from new . This may be what _msize() is doing internally but with some extra stuff.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|