|
Here is data structures:
<br />
typedef unsigned char uint8;<br />
<br />
class MD2Mesh<br />
{<br />
struct Vertex<br />
{<br />
uint8 coord[3],<br />
normalIdx;<br />
};<br />
<br />
struct Frame<br />
{<br />
float translation[3],<br />
rotation[3];<br />
char name[16];<br />
Mesh::Vertex* vertices;<br />
};<br />
<br />
};<br />
At first I tried to do something like :
MD2Mesh::Frame* md2Frame = (MD2Mesh::Frame*)buffer
to get the values from the buffer without initializing the pointer and I managed to get the values of translation, rotation and name but the vertices address didn't point to the "buffer + 40(size of translation + rotation + name)" so i just pass the the address of vtx which is buffer + 40
|
|
|
|
|
Again you forgot to mention the type of buffer?
|
|
|
|
|
Hallo,
I upgraded from Visual Studio 2005 to Visual Studio 2008, and converted my Project from from VS2005 to VS2008.
But now I get an Error in the following lines:
LOGFONT lFont;
NONCLIENTMETRICS ncm;
ncm.cbSize = sizeof(NONCLIENTMETRICS);
VERIFY(SystemParametersInfo(SPI_GETNONCLIENTMETRICS,
sizeof(NONCLIENTMETRICS), &ncm, 0));
lFont = ncm.lfMessageFont;
In Windows XP SystemParametersInfo() returns false, and there are the following Values in ncm after executing the SystemParametersInfo() Function:
Screenshot
When I open my Project in Windows 7, it works without problem. In XP I get an access exeption in msvcr90d.dll when I ignore the failed execution of SystemParametersInfo.
Can someone help me?
Thank you!
|
|
|
|
|
I would guess NONCLIENTMETRICS has grown... And VS2008 will default WINVER to a later (higher) value, so the size you have compiled is the "bigger" one.
You pass the size of the structure to SystemParametersInfo - and the later OS can handle the earlier structure. But the earlier OS can't handle the later structure.
Doing a little digging...
http://msdn.microsoft.com/en-us/library/ms724506%28VS.85%29.aspx[^]
typedef struct tagNONCLIENTMETRICS {
UINT cbSize;
int iBorderWidth;
...
LOGFONT lfMessageFont;
#if (WINVER >= 0x0600)
int iPaddedBorderWidth;
#endif
} NONCLIENTMETRICS, *LPNONCLIENTMETRICS;
You can see my theory is probably right.
XP has no idea what to do with the oversized structure you're giving it...
If you want to be compatible with XP, define WINVER to an appropriate value (0x501 I thiiiink) before including the header files.
Good luck,
Iain.
I have now moved to Sweden for love (awwww).
|
|
|
|
|
Thank you, VS2008 sets WINVER to Windows Vista. I now set WINVER in the stdafx.h files of my DLLs to WinXP and now it works.
This is the greatest forum in the world!
|
|
|
|
|
Joschwenk666 wrote: This is the greatest forum in the world!
This is just a tribute!
(you're welcome, glad I helped)
Iain.
I have now moved to Sweden for love (awwww).
|
|
|
|
|
Hi,
I have some code that is as old as the hills and has always worked. It just gets the name of the file to save using the common control Save As dialog:
BOOL GetFileToSave(HWND hwnd, TCHAR *lpstrFileName, DWORD filter)<br />
{<br />
static char szFilter[MAX_PATH_LENGTH], szExtension[12];<br />
BOOL temp;<br />
char *file, *path;<br />
temp = FALSE;<br />
file = malloc(MAX_PATH_LENGTH);<br />
path = malloc(MAX_PATH_LENGTH);<br />
<br />
if (file && path)<br />
{<br />
GetFilter(szFilter, szExtension, filter);<br />
ofn.nFilterIndex = 1;<br />
ofn.lpstrDefExt = szExtension;<br />
ofn.lpstrFilter = szFilter;<br />
<br />
GetPathName(file, path, lpstrFileName);<br />
ofn.hwndOwner = hwnd;<br />
ofn.lpstrFile = file;<br />
ofn.lpstrInitialDir = path;<br />
ofn.Flags = OFN_HIDEREADONLY | OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT;<br />
EnableAllWindows(FALSE, 0);<br />
temp = GetSaveFileName(&ofn);<br />
EnableAllWindows(TRUE, 0);<br />
if (temp) strcpy(lpstrFileName, ofn.lpstrFile);<br />
}<br />
if (file) free(file);<br />
if (path) free(path);<br />
<br />
return temp;<br />
}<br />
<br />
I have SOME users on Windows 7 only who find that the Save As dialog can take up to 30 seconds before it allows the OK button to be pressed. In this time it seems to work normally, but it just not respond to OK being pressed.
This code works fine on all our W7 machines, and I suspect some problem with the enumeration of the attached drives. BUT, can anyone see any weakness in the code? As I say, only a few users with W7 report this issue, the vast majority don't get this, but I'm open to any suggestions about improving the code.
- Mark
|
|
|
|
|
Psychopasta wrote: This code works fine on all our W7 machines, and I suspect some problem with the enumeration of the attached drives.
So have you tried attaching those same drives on the machines that work correctly to see if they start misbehaving?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
Hi David,
Thanks! I am trying to track down any hardware problems like that, but my interest here is in whether anyone can spot something we've missed in the code snippet I posted. It has run just fine for 20 years or so, but you know how it is...sometimes you just 'get away with it' and then something else changes and what used to work just fine stops doing so.
BTW, I should have said originally that the actual API function we use is GetSaveFileName. GetFileToSave is our function to fill the structure ofn which is declared elsewhere as
static OPENFILENAME ofn;
The problem is that GetOpenFileName opens the common control Save As dialog, which -in rare cases- will wait about 30 seconds before responding to the OK button being pressed.
Thanks again,
- Mark
|
|
|
|
|
Hello!
I use CRichEditCtrl ver. 4.1 and try use advanced functions of this control. Unfortunately I have some weird problems. For example when I use numbered paragraphs with letters (PARAFORMAT2.wNumbering = 3 or 4) I get:
a. item 1
b. item 2
...
z. item 26
aa. item 27
ab. item 28
..
yy. item 675
yz. item 676
a'a item 677 - why!? should be "za"!
a'b item 678 ("zb)"
...
a'z item 702 ("zz")
aaa. item 703
.....
When I start list with PARAFORMAT2.wNumberingStart = 677 I got the same error :/
How to fix it? It's MS error? Mayby I must write my own auto-list code
I use TOM interface too but error still happen.
Others inconveniences:
1) TOM uses long type to numering of the list (ITextPara::SetListStart), but RichEdit can use max 65535 items ("crxo" with letters numbering). Sometimes it's too few...
2) ITextDocument::BeginEditCollection/EndEditCollection is not implemented, I can use only Undo(tomSuspend)/Undo(tomResume)
3) I can only use #. #) (#) # for list style numbering
Best regards
W.
|
|
|
|
|
Very simple project (C++ VS 2003) with this error
I use:
PARAFORMAT2 pf;
memset(&pf, 0, sizeof(pf));
pf.cbSize = sizeof(pf);
pf.dwMask = PFM_NUMBERING | PFM_NUMBERINGSTYLE | PFM_NUMBERINGSTART;
pf.wNumbering = 3;
pf.wNumberingStyle = 0x200 | 0x8000;
pf.wNumberingStart = 677;
mvEditor.SetParaFormat(pf);
W.
|
|
|
|
|
I have a project which was started as ANSI, and the project can't be converted to unicode for the foreseeable future. However, I have to display some unicode filenames in a list box by calling the unicode versions of the Win32 functions. But I have a problem.
LPCWSTR strFile = L"Some chinese or arabic unicode text, like that - يتشخيتختصضخيتضختصت.doc";
MessageBoxW(0, strFile, 0, 0);
SendDlgItemMessageW(GetSafeHwnd(), IDC_LISTBOX_FILES, LB_ADDSTRING, 0, (LPARAM) text);
The code above will show the message box with the correct unicode text, but it will display "????????.doc" in the list box. I tried changing the font of the list box but it didn't fix it.
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
What is the text here ?
virtual void BeHappy() = 0;
|
|
|
|
|
Hi friends,
I need immediatly simple treeview in cview full sample code, plz help me.
Thanks and Regards,
D.Manivelan,
|
|
|
|
|
Create a new project (either MDI or SDI) with the wizard and at one of the last step of the wizard, you can select what type of view you want to use as the default view of your application.
or, if you already have an application with a default CView class, you could create a CTreeCtrl object in the view and use it.
for example :
class YourView : public CView
{
CTreeCtrl m_YouTree;
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct );
afx_msg void OnSize(UINT nType, int cx, int cy);
};
and
int YourView::OnCreate(LPCREATESTRUCT lpCreateStruct )
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
CRect rect;
GetClientRect(rect);
m_Tree.Create(WS_CHILD|WS_VISIBLE, rect, this, 1234);
m_Tree.InsertItem(_T("root"), TVI_ROOT);
return 0;
}
void YourView::OnSize(UINT nType, int cx, int cy)
{
if ( m_Tree.GetSafeHwnd() )
{
CRect rect;
GetClientRect(rect);
m_Tree.MoveWindow(rect);
}
}
Max.
Watched code never compiles.
|
|
|
|
|
|
Hi, I made an app in MFC VS2008 which works ok, but there are some PC's where my app just wont work (you allready know this story right..) so I decide it would be for the best to staticly link MFC. This produced some errors while compiling:
1>mysys.lib(my_messnc.obj) : error LNK2001: unresolved external symbol __imp____p__iob
1>libmysql.lib(dbug.obj) : error LNK2019: unresolved external symbol __imp____p__iob referenced in function __db_push_
1>libmysql.lib(net.obj) : error LNK2001: unresolved external symbol __imp____p__iob
1>mysys.lib(safemalloc.obj) : error LNK2001: unresolved external symbol __imp____p__iob
1>mysys.lib(my_init.obj) : error LNK2001: unresolved external symbol __imp____p__iob
1>libmysql.lib(dbug.obj) : error LNK2019: unresolved external symbol __imp__fprintf referenced in function __db_enter_
1>libmysql.lib(net.obj) : error LNK2001: unresolved external symbol __imp__fprintf
1>mysys.lib(safemalloc.obj) : error LNK2001: unresolved external symbol __imp__fprintf
1>mysys.lib(my_init.obj) : error LNK2001: unresolved external symbol __imp__fprintf
1>libmysql.lib(dbug.obj) : error LNK2019: unresolved external symbol __imp__vfprintf referenced in function __db_doprnt_
1>libmysql.lib(dbug.obj) : error LNK2019: unresolved external symbol __imp__getpid referenced in function _DoPrefix
1>OLDNAMES.lib(getpid.obi) : error LNK2001: unresolved external symbol __imp__getpid
1>libmysql.lib(dbug.obj) : error LNK2019: unresolved external symbol __imp__perror referenced in function _DBUGOpenFile
1>libmysql.lib(dbug.obj) : error LNK2019: unresolved external symbol __imp__freopen referenced in function _dbug_flush
1>mysys.lib(my_error.obj) : error LNK2019: unresolved external symbol __imp____p__pctype referenced in function _my_error
1>mysys.lib(my_error.obj) : error LNK2019: unresolved external symbol __imp____p___mb_cur_max referenced in function _my_error
1>strings.lib(Int2str.obj) : error LNK2019: unresolved external symbol __imp__ldiv referenced in function _int2str
1>OLDNAMES.lib(getpid.obi) : error LNK2001: unresolved external symbol __imp___getpid if anyone can Help please do so. I've been googling and still couldn't find the right way. Thanks in advance, and sorry for my bad language!
|
|
|
|
|
I guess the libraries you're using link dynamically with the runtime.
Why don't you deploy the required DLL's instead of linking the project statically?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
First let me thank you for replaying.
I have following requirements I need to keep. I need to distribute my exe to multiple machines with no knowledge about OS installed. I've tried on several local computers and where app didn't work I've get different error messages. So by static linking MFC I hope I'll be able to get it to work!
|
|
|
|
|
However, if my previous guess was correct, you have to either get new (statically linked with the runtime) binaries of the libraries you use or compile yourself such libraries.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
My app works with mysql db and only lib's I'm linking are: libmysql.lib, mysys.lib and strings.lib. And trough my code I have
#pragma comment(lib, "Netapi32.lib")
#pragma comment(lib, "mpr.lib")
#pragma comment(lib, "shlwapi.lib") This is an simple sdi app created with vs2008. Sure I have some CMFC controls (like toolbars and so) which are from feature pack. I didn't try to install re-distributable file on target machines.
modified on Tuesday, March 23, 2010 8:28 AM added additional libs from my code
|
|
|
|
|
to link staticly is one solution. For that you need the static libs of mysys.lib etc.
or you build a setup which will include the dlls which you will need. Test it on virtual machines.
Press F1 for help or google it.
Greetings from Germany
|
|
|
|
|
With Release version errors are:
1>FileVersion.obj : error LNK2001: unresolved external symbol __pgmptr
1>nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
1>nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
|
|
|
|
|
There are both MFC runtime libraries and the C++ runtime library.
The linker error messages appear to relate to the runtime library, not MFC. They look to me like the libs referenced expect the runtime library to be dynamically linked. At least some of them appear to be specific to debugging, which would explain why your later post indicates that these errors go away in your release build.
Note that there are problems if a DLL and and exe are linked to different versions of the runtime library and one tries to release dynamic memory allocated by the other.
josip cagalj wrote: I didn't try to install re-distributable file on target machines.
Any dependencies of your program need to be included in your installation. The target machine may or may not have the appropriate versions of the MFC and runtime library dlls installed. This depends on the Windows version. It can also be impacted by service packs and other software installed on that machine.
josip cagalj wrote: 1>With Release version errors are:
1>FileVersion.obj : error LNK2001: unresolved external symbol __pgmptr
1>nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
1>nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
This sounds like an issue with the start-up code. Perhaps some sort of confusion between whether you are producing a console app or a GUI app?
Please do not read this signature.
|
|
|
|
|
Thanks for contributing, my app is SDI MFC.
One question just to make my self clear, when I use 'Project > Properties > Linker > Input > Additional Dependencies' entering libmysql.lib mysys.lib strings.lib is this dynamically linking or static. Same question for
#pragma comment(lib, "Netapi32.lib")
#pragma comment(lib, "mpr.lib")
#pragma comment(lib, "shlwapi.lib") entries.
When compiled will exe contain those lib's or do I need to make sure that those lib's exist on target machine by building msi file?
My gold is to have the exe which will contain all necessary stuff to work on win target machine (Win2000, XP, Vista, Win7).
|
|
|
|