|
It does now xp perform some other task behind the sence that windows 2000 does not .
|
|
|
|
|
so any solution to solve this problem
how does printing normaly work for the windows 2000
i use the standard OnPreaprePrint();
OnBeginPrint();
OnPrint()
OnDraw(){
in the draw i set CFont font; etc
pDC->SetFont(blah)
}
OnEndPrint();
Is this different when printing on Windows 2000
|
|
|
|
|
Nope. I have MFC based apps which print this way running identically on Win95,NT,2K and XP.
Some things to try;
pause the printer then try and print to it. This will let you see if the print job is even created.
put trace code in your OnPrint (If you don't have one, create one that just calls OnDraw like the default OnPrint for CView does.
Best of luck
Steve S
|
|
|
|
|
Does anyone know how to make a CDialog resizable in only 1 direction? i.e., when fwSide == 1.
(FYI: fwSide reference for CDialog::OnSizing())
4 3 5
+-------+
| |
1 | | 2
| |
+-------+
7 6 8
I would really like to disable the resizing arrows when the user tries to resize from any other side but 1.
- Nitron
"Those that say a task is impossible shouldn't interrupt the ones who are doing it." - Chinese Proverb
|
|
|
|
|
I took care of it in PreTranslateMessage()
- Nitron
"Those that say a task is impossible shouldn't interrupt the ones who are doing it." - Chinese Proverb
|
|
|
|
|
Do you mind if I tell other people?
|
|
|
|
|
winalice wrote:
Do you mind if I tell other people?
um.. no, go right ahead..
- Nitron
"Those that say a task is impossible shouldn't interrupt the ones who are doing it." - Chinese Proverb
|
|
|
|
|
|
Nitron wrote:
Does anyone know how to make a CDialog resizable in only 1 direction?
I was able to do it with:
void CMyDialog::OnSizing(UINT fwSide, LPRECT pRect)
{
CRect rc;
GetWindowRect(rc);
pRect->top = rc.top;
pRect->right = rc.right;
pRect->bottom = rc.bottom;
CDialog::OnSizing(fwSide, pRect);
}
Nitron wrote:
I would really like to disable the resizing arrows when the user tries to resize from any other side but 1.
I've seen this done before but forgot the details.
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
Hello!
Assume this: you have a popup menu and a main menu. Now I want to "copy" the popup menu items into a specific submenu of the main menu.
I tried this:
m_popmenu.LoadMenu(IDR_PWLIST_MENU);
CMenu *pDest = m_menu.GetSubMenu(1);
CMenu *pSrc = m_popmenu.GetSubMenu(0);
UINT i = 0;
UINT uState, uID;
CString str;
for(i = 0; i < pSrc->GetMenuItemCount(); i++)
{
uID = pSrc->GetMenuItemID(i);
uState = pSrc->GetMenuState(i, MF_BYPOSITION);
pSrc->GetMenuString(i, str, MF_BYPOSITION);
pDest->AppendMenu(uState, uID, (LPCTSTR)str);
}
m_popmenu.DestroyMenu(); But unfortunately this doesn't work correctly... It copies the items to the main menu but without text and the command ID or item ID is lost somehow...
What am I doing wrong? How would you merge two menus?
Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
(doesn't work on NT)
|
|
|
|
|
Search for AfxMergeMenus in MFC Source code (OleMisc.cpp): May help...
"...Ability to type is not enough to become a Programmer. Unless you type in VB. But then again you have to type really fast..."
Me
|
|
|
|
|
Hello, i am having some trouble writing a simple wrapper (in c++) for c windowing code, i have been trying to sort it out for a while and have figured out the class members as callbacks using setWindowLong and all that , but my main proble lies in CreateWindowEx, i have my code set up for error checking and creation of a WNDCLASSEX object goes fine and RegisterClassEx goes fine but when i call CreateWindowEx, it returns the error code 0, which means ERROR_SUCCESS, my createWindowEx call looks like this:
m_hWnd is an HWND that is set to NULL until this call,
m_hInstance is set with GetModuleHandle(NULL)
emsg is just a file for collecting error messages
m_StrTitle is a string containing my window/class name (it isn't NULL)
if (!(m_hWnd=CreateWindowEx(dwExStyle, m_StrTitle,
m_StrTitle, dwStyle |
WS_CLIPSIBLINGS |
WS_CLIPCHILDREN,
0, 0, WindowRect.right-WindowRect.left, WindowRect.bottom-WindowRect.top,
NULL, NULL, m_hInstance, this)))
{
emsg << "create glWindow: " << GetLastError();
emsg.close();
this->KillGLWindow();
MessageBox(NULL,"Window Creation Error","ERROR",MB_OK|MB_ICONEXCLAMATION);
return false;
}
my WNDCLASSEX creation looks like this:
WndProc is a static class member
WNDCLASSEX l_wc =
{ sizeof(WNDCLASSEX),
CS_GLOBALCLASS | CS_HREDRAW | CS_VREDRAW | CS_OWNDC,
(WNDPROC) WndProc,
0,
0,
m_hInstance,
LoadIcon(NULL, IDI_WINLOGO),
LoadCursor(NULL, IDC_ARROW),
NULL,
NULL,
m_StrTitle,
LoadIcon(NULL, IDI_WINLOGO),
};
once again the error code returned with GetLastError() after my call to CreateWindowEx returns zero which enumerates to ERROR_SUCCESS and i really don't know what to do, i have spent a lot of time building this code, any help would be very much appreciated, thank you in advance
-Matthew
|
|
|
|
|
|
I have looked there earlier this week, i have examined there code, and i have found no allusion to what the answer to my problem is, i am doing everything that they do very similarly and it isn't working, i don't know why, and i don't know why i would be getting the ERROR_SUCCESS thing. if you could help me with that, it would be greatly appreciated
-Matthew
|
|
|
|
|
Have you tried calling GetLastError after the failure point?
In the same way that UN*X and MS-DOS library/system calls set errno to indicate a specific cause for error, this might lead you somewhere, even if it's only "invalid argument"
Steve S
|
|
|
|
|
Did you not see that? The first thing happening after CreateWindowEx() fails is GetLastError() gets called.
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
Not until after I'd written my reply
I should've reread the whole thread from the root message first!
Steve S
|
|
|
|
|
super_matt wrote:
i am doing everything that they do very similarly and it isn't working
I realize it's only two words, but therein could lie the answer. I've not looked at the referenced Web site, but perhaps it would be worth your time to compile that project to make sure it works, and then retrofit it with some of your code until the problem surfaces.
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
I have taken working procedural code and tried to object orient it, all i really changed was instead of executing global methods i execute class members. i have made sure that works, i have tried procedural code executing those class members, it works. the only thing i really changed was making my WndProc static, and passing (void* this) to it as the LPVOID param, then casting it back. i think my problem is maybe in my WndProc method, but i don't know what it is. I have tried making my WndProc call MessageBox() and create a message box that tells that it was entered, i read that WndProc is called before CreateWindowEx or CreateWindow returns so, those messageboxes should appear, but they aren't so i can only assume that therin lies my problem.
here is my WndProc:
LRESULT CALLBACK GLWindow::WndProc(HWND hWnd,
LPARAM lParam,
WPARAM wParam,
UINT uMsg)
{
// GLWindow is my window class, i am trying to create a wrapper to create openGL windows
GLWindow* pWnd;
if (uMsg == WM_NCCREATE)
{
MessageBox(hWnd,"WM_NCCREATE","WndProc Message",MB_OK | MB_ICONINFORMATION);
assert(((LPCREATESTRUCT(lParam))->lpCreateParams));
SetWindowLong(hWnd, GWL_USERDATA, (long)((LPCREATESTRUCT(lParam))->lpCreateParams));
}
else if (uMsg == WM_CREATE)
{
MessageBox(hWnd,"WM_CREATE","WndProc Message",MB_OK | MB_ICONINFORMATION);
assert(((LPCREATESTRUCT(lParam))->lpCreateParams));
SetWindowLong(hWnd, GWL_USERDATA, (long)((LPCREATESTRUCT(lParam))->CreateParams));
}
pWnd = GetGLWindowPtr(hWnd);
if (pWnd != NULL)
return pWnd->MsgHandler(hWnd, uMsg, wParam, lParam, pWnd);
else
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
can you see my problem?
-Matt
|
|
|
|
|
hi
Can ne 1 tell me how I can access COM Ports using MFC
I have a semester proj
bye
raheela
|
|
|
|
|
Depending on the level of access required, answers may vary.
http://www.codeproject.com/managedcpp/howtocomport.asp
http://www.codeproject.com/system/serial_com.asp
http://www.codeproject.com/system/serial.asp
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
I don't know if there is a way to delete a member variable automatically, but I can't figure it out. Like in Visual C++ 6, if you add a member variable, you can go to the class wizard and remove it. Visuall C++ 6 automatically remove that variable from the project automatically.
But I could not find way to delete a member variable in Visuall C++.net. I have to go to the class to manually remove it, then I have to manually delete it from the DDX control as well.
Is there another way to delete member variable in VC++.net as does in Visual C++ 6?
|
|
|
|
|
I am not aware of any such possibilities in .NET but you could simply use the "Find in Files" utility giving your memeber variable as the search word which gives you a list of all accurances of this word.
Bunburry
|
|
|
|
|
Here is how i get that list : i call GetTrueTypeFonts with chtypeface = "" (see code);
EnumFontFamiliesEx calls the call back functions GetFaceName and GetStyleName.
Problem : if i test with FontData.lfCharSet = ANSI_CHARSET
i don't get fonts such as wingdings, symbols, .... (these fonts contain 'decorative' symbols). If i use DEFAULT_CHARSET, i get those wingdings etc... , but lots of the fonts included with ANSI_CHARSET are now missing.
The documentation says :
"If set to DEFAULT_CHARSET, the function enumerates all fonts in all character sets. If set to a valid character set value, the function enumerates only fonts in the specified character set."
So i thought that i would get all with DEFAULT_CHARSET.
(MapDefPolice is a CMap that collect all the fonts)
void GetTrueTypeFonts(const char *chtypeface, MapDefPolice *pMap)<br />
{<br />
LOGFONT FontData;<br />
strcpy(FontData.lfFaceName, chtypeface);<br />
FontData.lfPitchAndFamily = 0;<br />
FontData.lfCharSet = ANSI_CHARSET;<br />
HDC hDC = ::GetDC(NULL);<br />
EnumFontFamiliesEx(hDC, &FontData, <br />
chtypeface[0] ? (FONTENUMPROC)GetStyleName : (FONTENUMPROC)GetFaceName, <br />
(long)pMap, 0);<br />
::ReleaseDC( NULL, hDC);<br />
}<br />
<br />
int CALLBACK GetFaceName(ENUMLOGFONTEX *lpelf, NEWTEXTMETRIC *lpntm, DWORD FontType, LPARAM lParam)<br />
{<br />
if (FontType & TRUETYPE_FONTTYPE)<br />
GetTrueTypeFonts(lpelf->elfLogFont.lfFaceName, (MapDefPolice *)lParam);
return 1;<br />
}<br />
<br />
int CALLBACK GetStyleName(ENUMLOGFONTEX *lpelf, NEWTEXTMETRIC *lpntm, DWORD FontType, LPARAM lParam)<br />
{<br />
DefPolice *pDefPolice;<br />
long ID = GetTrueTypeID(lpelf->elfLogFont.lfFaceName, lpntm);<br />
MapDefPolice *pMapDef = (MapDefPolice *)lParam;<br />
pDefPolice = new DefPolice;<br />
pDefPolice->No = ID;<br />
ZeroMemory(&pDefPolice->Bits, sizeof(FontBits));<br />
pDefPolice->Bits.state = FONT_STATE_NEW;<br />
pDefPolice->strDescription = lpelf->elfLogFont.lfFaceName;<br />
pDefPolice->strDisplayName = lpelf->elfFullName;<br />
pDefPolice->Bits.weight = lpelf->elfLogFont.lfWeight;<br />
pDefPolice->Bits.bItalic = lpelf->elfLogFont.lfItalic;<br />
pDefPolice->Bits.bBold = ((lpntm->ntmFlags & NTM_BOLD) != 0);<br />
pDefPolice->Bits.bTrueType = 1;<br />
pMapDef->SetAt(pDefPolice->No, pDefPolice);<br />
return 1;<br />
}
|
|
|
|
|
Odd. Are you sure that FontData.lfFaceName is '\0' ? Is the value for FontData.lfPitchAndFamily filtering anything out?
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|