|
Alt key combination is treated as system key which cannot be handled by WM_KEYDOWN. Use WM_SYSKEYDOWN Message instead.
if (pMsg->message == WM_SYSKEYDOWN)
{
if( pMsg->wParam == VK_RETURN)
{
}
}
|
|
|
|
|
Please help write to give me.
thanks in advance.
|
|
|
|
|
Is this a homework?
What is difficult in this or what is the thing that is stopping you from going ahead and finishing off the assignment.
Start coding, and post your code in case you face any issues and then someone here might help you.
Also, as per the forum guidelines this is not the correct forum for posting this question.
I am a HUMAN. I have that keyword in my name........
_AnsHUMAN_
|
|
|
|
|
|
In that case get on with it yourself rather than expecting someone else to do it for you.
I must get a clever new signature for 2011.
|
|
|
|
|
|
Hello. I have the following code block:
#include <stdlib.h>
typedef struct List_s
{
int count;
void **items;
} List;
List *list_create()
{
List *list = malloc (sizeof (List));
list->count = 0;
list->items = malloc (1 * sizeof (void *));
return list;
}
void list_add (List *list, void *item)
{
list->items = realloc (list->items, (list->count + 1) * sizeof (void *));
list->items[list->count] = item;
list->count++;
}
void list_dealloc (List *list)
{
for (int i = 0; i < list->count; i++)
{
free (list->items[i]);
}
free (list->items);
free (list);
}
When I pass a List to list_dealloc I get a segmentation fault on the line in the for loop. I can print the contents of items[i] just fine (in my test case it's the string "Hello"). I'm using gcc-4.5.1 on 64 bit Fedora 14 if that's anything useful.
modified on Monday, February 28, 2011 12:57 PM
|
|
|
|
|
Jordanwb wrote: segmentation fault on the line in the for loop
If the crash is at free() function, ensure that you are passing a heap pointer as item to list_add() function, not the address of a stack variable.
|
|
|
|
|
Are you sure that all the items passed in to your list through the list_add() function have been created by malloc() ?
I must get a clever new signature for 2011.
|
|
|
|
|
Thanks for replying. This is what's in my main() function:
List *list = list_create();
list_add (list, "Hello");
list_dealloc (list);
|
|
|
|
|
So you are adding a pointer to a constant string which you later try to free() : result SEGV fault. You need to ensure that every pointer you pass into list_add() is pointing to a memory block that has been returned from malloc() . something like:
List *list = list_create();
char* pitem = (char*)malloc(10);
strcpy(pitem, "Hello");
list_add (list, pitem);
list_dealloc (list);
I must get a clever new signature for 2011.
|
|
|
|
|
|
Hi,
I need to send a mail to a particular email address from the application. For this purpose, I am using MAPI APIs.
Following is the code which is used in the application. This code is working properly with MS Outlook Express; however, in Lotus Notes, email ID specified in the code is not added to the "To" field of email. Other values given in the MapiRecipDesc structure is added to the email properly.
Can any one help to solve the issue?
#include "stdafx.h"
#include "Mail Application.h"
#include <MAPI.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}
else
{
MapiRecipDesc sender;
MapiRecipDesc recipient;
MapiMessage note;
HMODULE hinstMapi32Dll = NULL;
if (hinstMapi32Dll == NULL)
hinstMapi32Dll = ::LoadLibraryA("MAPI32.DLL");
if (hinstMapi32Dll == NULL)
{
AfxMessageBox(AFX_IDP_FAILED_MAPI_LOAD);
return -1;
}
ULONG (PASCAL *lpfnMAPISendMail)(ULONG, ULONG, MapiMessage*, FLAGS, ULONG);
lpfnMAPISendMail = (LPMAPISENDMAIL)GetProcAddress( hinstMapi32Dll, "MAPISendMail");
sender.ulReserved = 0;
sender.ulRecipClass = MAPI_ORIG;
sender.lpszName = "My Name";
sender.lpszAddress = "me@myeamil.com";
sender.ulEIDSize = 0;
sender.lpEntryID = NULL;
recipient.ulReserved = 0;
recipient.ulRecipClass = MAPI_TO;
recipient.lpszName = "Person Name";
recipient.lpszAddress = "SMTP:towhomitmayconcern@email.com";
recipient.ulEIDSize = 0;
recipient.lpEntryID = NULL;
note.ulReserved = 0;
note.lpszSubject = "Subject goes here";
note.lpszNoteText = "Message body goes here";
note.lpszMessageType = NULL;
note.lpszDateReceived = NULL;
note.lpszConversationID = NULL;
note.flFlags = 0L;
note.lpOriginator = &sender;
note.nRecipCount = 1;
note.lpRecips = &recipient;
note.nFileCount = 0;
note.lpFiles = NULL;
nRetCode = lpfnMAPISendMail( 0, 0L, ¬e, MAPI_DIALOG, 0L );
}
return nRetCode;
}
Regards,
Vinoth
modified on Wednesday, February 23, 2011 12:01 AM
|
|
|
|
|
Can any one help on this?
Regards,
Vinoth
|
|
|
|
|
Can someone tell me what's wrong with this code:
#include <stdio.h>
typedef void (*VoidFunctionPtr)(void);
void FunctionA()
{
printf("You are in Function A.\n");
}
void FunctionB()
{
printf("You are in Function B.\n");
}
int main(void)
{
VoidFunctionPtr fp = FunctionA;
fp();
}
In main(), the declaration of variable "fp" throws a C2275 error: "'VoidFunctionPtr': illegal use of this type as an expression." I don't get it. I have cross-referenced several books and internet articles. All show the same syntax. What am I missing?
|
|
|
|
|
Just tested your code with VC2010 express: compiles and runs Ok. Which compiler do you use?
cheers,
AR
When the wise (person) points at the moon the fool looks at the finger (Chinese proverb)
|
|
|
|
|
I am using VS2010 Premium. I come from a C++ background but I need to learn what the difference is between that and standard C. To facilitate that goal I created an empty C++ project and then set the following Project Properties to disable C++ components:
Language -> Disable Language Extensions = YES (command line switch /Za)
Advanced -> Compile As = Compile As C Code (command line switch /TC)
|
|
|
|
|
Tested and works in VS6.0, 2003, 2010. What compiler are you using? Is that the only piece of code you have? can you create new project and have only this code in it? What happens if you do that?
|
|
|
|
|
I found the problem. I only posted a limited version of the code to focus the direction of the inquiry. In the context of the full code, what is going on is that the compiler expects all variables to be declared at the beginning of the function.
Original code:
#include <stdio.h>
typedef void (*VoidFunctionPtr)(void);
void FunctionA(void)
{
printf("You are in Function A.\n");
}
int main(void)
{
printf("Here is a program that does something.\n");
VoidFunctionPtr fp = FunctionA;
fp();
}
Revised code:
#include <stdio.h>
typedef void (*VoidFunctionPtr)(void);
void FunctionA(void)
{
printf("You are in Function A.\n");
}
int main(void)
{
VoidFunctionPtr fp = FunctionA;
printf("Here is a program that does something.\n");
fp();
}
I'm sure this wouldn't happen in a C++ project, but I am using compiler settings to force Standard C compilation. I come from a C++ background but I'm trying to learn the differences between C++ and standard C. I bought a book on standard C, but it references the "C99" standard, which apparently allows variables to be defined anywhere in a function. I guess the MS C compiler works on an older standard?
|
|
|
|
|
When writing C, you should probably try to declare all variables at the beginning to make sure you have compatibility with all compilers since that wasn't allowed until later on (2000?).
http://en.wikipedia.org/wiki/ANSI_C[^]
|
|
|
|
|
|
MS isn't concerned with keeping up with the latest C specs, so you'll need to avoid C99-specific features.
--Mike--
Dunder-Mifflin, this is Pam.
|
|
|
|
|
Yeah, I figured that out. Do you happen to know what (if any) standard they do conform to? I know there are several through the years.
|
|
|
|
|
If you look at the link I provided before, it states that they implemented "Microsoft Visual C++ (C90. A few features of C99)". I'm guessing you would have to dig deep to figure out what they did and didn't implement.
|
|
|
|
|
Oh, there it is. I don't know how I missed that before
|
|
|
|