|
Is there a way to get/enumerate the available sizes for a particular font ? heck, I don't even know if it does make
sense.
I only found example where the sizes are added manually (6, 8, 10, ...), but not automatically.
Not urgent.
Thanks.
Max.
This signature was proudly tested on animals.
|
|
|
|
|
MSDN:The EnumFontFamiliesEx function enumerates all fonts in the system that match the font characteristics specified by the LOGFONT structure. EnumFontFamiliesEx enumerates fonts based on typeface name, character set, or both.
Maximilien wrote: Not urgent.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
Thanks.
according to this[^] it can work for NON true type fonts.
For true-type fonts, it does not matter.
|
|
|
|
|
Hi i want to use the shortcuts for handling the menu operations in my application.
can anybody suggest me how to do that??????
For ex:if i click "ctrl+ space" window shud exit etc...
Thnaks in advance
|
|
|
|
|
Hi all i am new to vc++.
i want to have tooltips for the controls in my application but i am not able to generate the tool tips for the controls inside the group box using
ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTipNotify)
Can anybody suggest me the apt way for doing it..
Thanks in advance
|
|
|
|
|
I'm a newbie to MFC or even WIN32 GDI programming too.
I've tried your test.(Eg, deal with TTN_NEEDTEXT notification)
Yes, in the group box it doesn't work at all.
But indeed, we can figure out this problem by using ::CreateWindowEx, passing the TOOLTIPS_CLASS as the window class name,
This link would help you.http://www.codeproject.com/KB/cpp/Tool_Tip.aspx[^]
If you're using VC6.0, you'll encounter this compile error:
<br />
error C2065: 'TTS_BALLOON' : undeclared identifier
I haven't found an excellent resolution. And I googled, someone fixed this by adding this line(in the stdafx.h or somewhere):
<br />
#define TTS_BALLOON 0x40
If you found why 'TTS_BALLOON' showed undeclared, please reply my thread, I'd like to know too.
|
|
|
|
|
Excute me, I wanna to show multi-lines in the tooltips. I add '\n' in the text, it doesn't work.
Can somebody help me?
DWORD dwToolStyle = WS_EX_TOOLWINDOW | WS_EX_TOPMOST |WS_EX_WINDOWEDGE;
m_hwndTooltip = ::CreateWindowEx(dwToolStyle, TOOLTIPS_CLASS, NULL,
WS_POPUP | TTS_ALWAYSTIP | TTS_NOPREFIX | TTS_BALLOON,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
this->GetSafeHwnd(), NULL, ::AfxGetResourceHandle(), NULL);
ASSERT(m_hwndTooltip);
::SendMessage(m_hwndTooltip, TTM_ACTIVATE, (WPARAM)TRUE, NULL);
::SendMessage(m_hwndTooltip, TTM_SETDELAYTIME, TTDT_INITIAL, MAKELONG(1000, 0));
::SendMessage(m_hwndTooltip, TTM_SETDELAYTIME, TTDT_AUTOPOP, MAKELONG(1000, 0));
::SendMessage(m_hwndTooltip, TTM_SETDELAYTIME, TTDT_RESHOW, MAKELONG(1000, 0));
TOOLINFO info = {0};
info.cbSize = sizeof(TOOLINFO);
info.uFlags = TTF_CENTERTIP | TTF_IDISHWND | TTF_SUBCLASS;
info.hwnd = this->GetSafeHwnd();
info.uId = (UINT)::GetDlgItem(this->GetSafeHwnd(), IDC_APPLE);
info.rect = CRect(0, 0, 0, 0);
info.hinst = ::AfxGetResourceHandle();
info.lpszText = _T("You can check this to see\n\n\nwhat is this");
if ( !::SendMessage(m_hwndTooltip, TTM_ADDTOOL, NULL, (LPARAM)&info) )
{
::AfxMessageBox("Add tool fail");
}
|
|
|
|
|
Hi,
We have create a C++ DLL. While creating this DLL we have included "string.h" "vector.h" etc and so on...
We are able to compile and able to use exported functions in sample program with out any error.
We have distributed our DLL with .lib and .h files. He reports that when he includes our .h file in his program, it is not compiling (compile or link errors). He is tell this is boz because it has multiply defines. Is there any way to avoide this?
-Nandu
|
|
|
|
|
Nandu_77b wrote: We have distributed our DLL with .lib and .h files. He reports that when he includes our .h file in his program, it is not compiling (compile or link errors). He is tell this is boz because it has multiply defines. Is there any way to avoide this?
Yes. Before distributing your DLL,lib and H files to "him", test them in your own project before you distribute them.
led mike
|
|
|
|
|
first debugging, now testing.
What will you ask for next, documentation?
|
|
|
|
|
Luc Pattyn wrote: What will you ask for next, documentation?
Yes that was my plan. Then I was planning on asking for thinking next. I am trying to ease people into the concept.
led mike
|
|
|
|
|
probably because he is including your header several times, and because your header is not robust.
have you set an exclusive inclusion system in it (like the following) ?
#pragma once //depending on the compiler. not all support this
#ifndef __HEADER_H_INCLUDED__
#define __HEADER_H_INCLUDED__
#endif
|
|
|
|
|
Hi,
Thanks Toxcct,
Do i Need to add the below in my header file
//header.h
#ifndef __HEADER_H_INCLUDED__
#define __HEADER_H_INCLUDED__
//your header body here...
#endif
OR
Who is going to use the DLL should include my header as below?
#ifndef __HEADER_H_INCLUDED__
#define __HEADER_H_INCLUDED__
header.h
#endif
Which is the correct and best approach?
-Nandu
|
|
|
|
|
yes, you put the #ifndef construction in your own header.
now, each time the file is included, this stuff prevents the header content to be actually included more than once.
check this:
yourheader.h
<hr width="95%" />
src1.h:
#include "yourheader.h"
<hr width="95%" />
src1.cpp:
<code>#include "src1.h"</code>
#include "yourheader.h"
do you see what happens in src1.cpp ?
the user is including his own header (src1.h ), and your header (yourheader.h ).
but the problem is that in src1.cpp, when including yourheader.h , it is already included (by src1.h ), thus the "already defined identifier" error.
so by putting such a code in your own header, you prevent such an error to occur; if the header is #included several times in the same compilation unit, only the first inclusion will be taken in account...
|
|
|
|
|
The above eplaination gives me clear understanding, Thanks a lot.
Just for my clarification, one can include yourheader.h file only in src1.h and no need to include it again in src1.cpp. IS this correct?
-Nandu
|
|
|
|
|
yes of course, my example was a bit too fast, but it happens (and i believe that's what happened to you) when you include files that include files that include.... and you can't control exactly what's included anymore...
|
|
|
|
|
TOx back after long time.. great!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You/xml>
|
|
|
|
|
holidays my friend
|
|
|
|
|
Nandu_77b wrote: We have distributed our DLL with .lib and .h files. He reports that when he includes our .h file in his program, it is not compiling (compile or link errors). He is tell this is boz because it has multiply defines.
Please post the exact (full) error message because otherwise we will need to guess...
|
|
|
|
|
Hi there.
My use case is rather simple but after looking several hours and trying different things I'm getting clueless.
I want to set the file filter combo box control within an CFileDialog. I have an derived dialog from CFileDialog, where I implemented some special settings. There it should be possible to change the current active file filter type, e.g. from JPG to GIF. And this should affect then also the normal CFileDialog.
I simply can get the dialog item cmb1 which reflects the file filter control and set the wanted filter like here:
CComboBox* pFileTypeCombo = (CComboBox*)wndDlg->GetDlgItem(cmb1);
pFileTypeCombo->SetCurSel(mSelectedFilterID - 1);
This also works but the folder view won't get updated, it still displays all JPG files only in my current folder instead of all GIF files now.
Is there a way to refresh the view or another way of setting the file filter?
Thanks a lot in advance!
Regards
Eric
|
|
|
|
|
I'd use Spy++ to check just what messages are being sent when the selection changes manually. In order to save doign refreshes so often, maybe the dialog waits for a CBN_CLOSEUP notification message to be sent? Maybe sending CB_SETCURSEL (which you are doing) does not then send a CBN_SELCHANGE notification. After all, why should it? You just changed it yourself!
This is a very dated control we're talking about, and every optimisation under the sun was used to make it perky on 386s (remember windows 3?) and then kept for compatibility.
Iain.
Plz sir... CPallini CPallini abuz drugz, plz plz help urgent.
|
|
|
|
|
Yes I looked in Spy++, normally there is sent:
message:0xC06F (Registered:"commdlg_LBSelChangedNotify") wParan:0000470 lParam:00000000
where wParam is simply the ID of cmb1 and lParam the new selected filter ID.
So I tried simply also to send this afterwards using:
SendMessage(0xc06f, cmb1, 1);
But it seems it doesn't work, also if I see this message now also in Spy++
|
|
|
|
|
That's curious... because LBN_SELCHANGE is 1 in my header files, as is CBN_SELCHANGE...
In a "normal" window, the message arrives as follows:
uMsg = WM_COMMAND (which is 0x111...)
High word of wParam = 1, lo word is control ID, so 0x470 doesn't fit that pattern...
So this is not a classic control at all! All bets are off for my answer then, sadly...
Using a registered message is a bit of a hint.
One thought... Being a registered message, that value of 0xc06f may not work between runs of your software. (It *probably* will, but you can't rely on it). So get the message from
UINT m_CustomNotify = RegisterWindowMessage (_T("commdlg_LBSelChangedNotify"));
instead of using a hard coded value.
Iain.
Plz sir... CPallini CPallini abuz drugz, plz plz help urgent.
|
|
|
|
|
hm it's derived dialog but rather standard anyway. Maybe this is depends on OFN_EXPLORER flag is set or not? At least I read it might behave differently then...
Now I used
SendDlgItemMessageA(wndDlg->m_hWnd, cmb1, CB_SETCURSEL, mSelectedFilterID - 1, 0);
SendMessageA(wndDlg->m_hWnd, WM_COMMAND, MAKEWPARAM(cmb1, CBN_SELCHANGE), (LPARAM)wndDlg->GetDlgItem(cmb1));
The control updated but the view still not, so it's seems similar like direct call of SetCurSel
|
|
|
|
|
I solved it! I had to send CBN_SELENDOK instead of CBN_SELCHANGE message...then it worked...
|
|
|
|
|