|
"Calling convention in a DLL"
original post by Paul Riley
Just trying to keep the forces of entropy at bay
|
|
|
|
|
Hey guyz, I'm new here. I'm working on rewriting our company's password procedures. Dictionary base and such. All of the actual code for word lookup and such is done. It's now time for me to figure out a way to implement it in a DLL.
I've decide to go the way of this example[^]. I've created the dll in VC but I get a massive list of errors which are the following:
Compiling...
StdAfx.cpp
Compiling...
beta.cpp
H:\code_project\beta\beta.cpp(39) : error C2143: syntax error : missing ';' before '__stdcall'
H:\code_project\beta\beta.cpp(39) : error C2501: 'NTSTATUS' : missing storage-class or type specifiers
H:\code_project\beta\beta.cpp(41) : error C2065: 'PUNICODE_STRING' : undeclared identifier
H:\code_project\beta\beta.cpp(41) : error C2146: syntax error : missing ')' before identifier 'UserName'
H:\code_project\beta\beta.cpp(41) : warning C4229: anachronism used : modifiers on data are ignored
H:\code_project\beta\beta.cpp(41) : error C2501: 'PasswordChangeNotify' : missing storage-class or type specifiers
H:\code_project\beta\beta.cpp(44) : error C2059: syntax error : ')'
H:\code_project\beta\beta.cpp(64) : error C2143: syntax error : missing ';' before '{'
H:\code_project\beta\beta.cpp(64) : error C2447: missing function header (old-style formal list?)
H:\code_project\beta\beta.cpp(96) : error C2146: syntax error : missing ')' before identifier 'UserName'
H:\code_project\beta\beta.cpp(96) : warning C4229: anachronism used : modifiers on data are ignored
H:\code_project\beta\beta.cpp(100) : error C2059: syntax error : ')'
H:\code_project\beta\beta.cpp(127) : error C2143: syntax error : missing ';' before '{'
H:\code_project\beta\beta.cpp(127) : error C2447: missing function header (old-style formal list?)
Error executing cl.exe.
beta.dll - 12 error(s), 2 warning(s)
What's up with NTSTATUS giving me errors? Ne ideas?
---------------------------------
I'm new here, pardon the n00bing
---------------------------------
|
|
|
|
|
Just a wild guess, but it looks to me like a missing semicolon ( possibly in a header file ). Hard to tell for sure without seeing the code.
CPUA 0x5041
Sonork 100.11743 Chicken Little
"So it can now be written in stone as a testament to humanities achievments "PJ did Pi at CP"." Colin Davies
Within you lies the power for good - Use it!
|
|
|
|
|
Sometimes the compiler issues C2143 (the 1st error in your output) in lieu of saying it couldn't recognize the preceding identifier. If that's the case, you're missing an #include file somewhere. "NTSTATUS " and "PUNICODE_STRING " look like items from windows.h , so I would check that you've included it, and properly defined things like WINVER to get the definitions you need.
Gary R. Wheeler
|
|
|
|
|
How can I convert CTime to DATE or COleDateTime?
Mazy
"If I go crazy then will you still
Call me Superman
If I’m alive and well, will you be
There holding my hand
I’ll keep you by my side with
My superhuman might
Kryptonite"Kryptonite-3 Doors Down
|
|
|
|
|
donno does this help??
COleDateTime::SetTime( int nHour, int nMin, int nSec );
CTime::GetYear
CTime::GetMonth
CTime::GetDay
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
Be careful converting these two.
They are really apples and oranges.
CTime encapsulates an interval from
some known time (placement on a time
time line whose origin is attached to
a specific event) whereas COleDateTime
merely encapsulates a time representation
such as 5JUL1998 7:23AM. (placement on a
timeline whose origin is not attached to
any specific event)
So when converting, you need to provide
the origin value by which the COleDateTime
can be interpreted.
I prefer to convert as explicitly as possible
and not use methods which implicitly specify
the origin value for the COleDateTime conversion.
(that way lies madness.)
|
|
|
|
|
Oh yeah, code:
// ASSUMES COleDateTime represents UTC times
// COleDateTime --> CTime
COleDateTime Origin(1970,1,1,0,0,0); // corresponds to time_t(0) in UTC
CTime T(time_t((U-Origin).GetTotalSeconds()));
// CTime --> COleDateTime
double SecInDay=86400.0;
COleDateTime U=Origin+COleDateTimeSpan(T.GetTime()/SecInDay);
|
|
|
|
|
Hi,
I have an application that uses the list view to show some data. I want to be able to highlight some of the lines, let's say in red background. Is there a way to change the color of a specific line in the list view?
I tried to use the selection option but as soon as I click with the mouse on one of the items, all the selections are gone,
Any help is appreciated
Thank you
Shay Harel
|
|
|
|
|
|
Great, exactly what I needed
|
|
|
|
|
Hi
I don't know exactly how to explain my question...I'll try it that way:
Say I have created my own class CFoo , it has a function called void CallApplication(???) . I have seen classes where you could use parameters like
m_myClass.CallApplication(CFoo::Notepad);
How do I need to define my function/parameters in the class in order to let the user use parameters that way? E.g. you can use CFile like that CFile file("C:\foo.txt", CFile::typeBinary | CFile::modeRead); (I know that typeBinary is only for derived classes, I just wanted to show what my question is)
hope you understand my problem
regards
Greg
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Have a member in ur class:
static int Notepad;
or static enum { Notepad, WordPad };
and Somewhere
void CallApplication ( int openWhat )
{
switch ( openWhat )
{
case Notepad:
break;
}
}
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
Thank you very much! I didn't know I had to make those variables static
But why can I access the variables from outside the class now even if they are protected/private?
And one more question:
Actually if I type the second colon (e.g. CFoo:: ) VC usually shows me a list of all variables and functions available for this class, but my variables inside the enum do not appear in this list. Why?
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Just the name of the enum appears!
Declaring a variable static makes this variable shared between all the instances of your class, and being "present" without needing an instance of your class either.
So u can see it as a plain static int i; C style, nothing more nothing less.
Anyway declaring a function static makes impossible to this function to access non static member variables.
But u need to declare a function static if its a worker thread and u wanna add it to ur class.
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
Thanks for the very clear explanation
modified 12-Sep-18 21:01pm.
|
|
|
|
|
I wrote the following code to display text and images in a CTreeCtrl item,
but only the text is shown in the item.
CTreeCtrl* pCtrl = (CTreeCtrl*) GetDlgItem(IDC_TREE);
...
CImageList MyImageList;
MyImageList.Create(16, 16, ILC_COLOR8, 0, 4);
...
// IDR_ICON1 is a 16*16 icon
MyImageList.Add(AfxGetApp()->LoadIcon(IDR_ICON1));
pCtrl->SetImageList(&MyImageList, TVSIL_NORMAL);
...
TVINSERTSTRUCT tvInsert;
tvInsert.hParent = NULL;
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT | TVIF_IMAGE ;
tvInsert.item.iImage = 0; // zero index based, and I have only one picture
tvInsert.item.pszText = T("ItemText");
...
HTREEITEM hItem = pCtrl->InsertItem(&tvInsert);
Can you help me?
Tank you.
|
|
|
|
|
Image list neede to be a pointer because it will destruct itself otherwise.
|
|
|
|
|
|
You welcome, I had the same issue and I struggled with it for half a day
|
|
|
|
|
Folks,
Does anyone know who to disable the accelerator keys temporarily in a MFC application? I would like to disable the functionality of the entire menu bar when doing lengthy operation. Currently, I call the following function to disable the menu bar.
CMainFrame::EnableWindow ( FALSE );
Apparently, it works ok. The menu bar is grayed out and does not response to mouse clicks. However, when as user press "Alt", the menu bar turn ON again and start to operate. It seems like the "Alt" button enable the menu bar.
Anyway, to disable accelerator keys feature temporarily?
Thank you.
bluntagain
|
|
|
|
|
Folks,
Does anyone know who to disable the accelerator keys temporarily in a MFC application? I would like to disable the functionality of the entire menu bar when doing lengthy operation. Currently, I call the following function to disable the menu bar.
CMainFrame::EnableWindow ( FALSE );
Apparently, it works ok. The menu bar is grayed out and does not response to mouse clicks. However, when as user press "Alt", the menu bar turn ON again and start to operate. It seems like the "Alt" button enable the menu bar.
Anyway, to disable accelerator keys feature temporarily?
Thank you.
igloobear
|
|
|
|
|
is there any easy way to intercept serial port so that the data can be duplicated, with 1 copy sending out and 1 copy displaying in such an application??
thx so much
|
|
|
|
|
I fear you will need to dig into driver development to do that.
...if you're under 8 or younger. Chris Maunder, the Lounge
|
|
|
|
|
didnt try it but u can try something similar to this:
http://www.codeproject.com/dll/apihijack.asp
or else u gotta work with the DDK!
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|