How to receive messages using a message-only window in a console application? How to receive messages using a message-only window in a console application? windows windows

How to receive messages using a message-only window in a console application?


Your messages may be blocked by User Interface Privilege Isolation. In that case you can use the ChangeWindowMessageFilterEx() function to allow the WM_COPYDATA message through.


iam not sure that is wrong with your program, but i allways use the opposite approach:I create a win32 app, strip that down and add console window.

The stripped all containing winapp version (also removes all afx-junk files):

// Modify the following defines if you have to target a platform prior to the ones specified below.// Refer to MSDN for the latest info on corresponding values for different platforms.#ifndef WINVER                // Allow use of features specific to Windows XP or later.#define WINVER 0x0501        // Change this to the appropriate value to target other versions of Windows.#endif#ifndef _WIN32_WINNT        // Allow use of features specific to Windows XP or later.                  #define _WIN32_WINNT 0x0501    // Change this to the appropriate value to target other versions of Windows.#endif                       #ifndef _WIN32_WINDOWS        // Allow use of features specific to Windows 98 or later.#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.#endif#define WIN32_LEAN_AND_MEAN        // Exclude rarely-used stuff from Windows headers// MinWInApp.cpp : Defines the entry point for the application.//#include <windows.h>// C RunTime Header Files#include <stdlib.h>#include <malloc.h>#include <memory.h>#include <tchar.h>#include <strsafe.h>#define MAX_LOADSTRING 100#define SZ_TITLE "MinWinApp"#define SZ_WND_CLASS "MINWINAPP"// Global Variables:HINSTANCE g_hInst;                // current instanceHWND g_hWnd;HWND g_hwndNextViewer;TCHAR* szWndClass = TEXT(SZ_WND_CLASS);LRESULT CALLBACK  WndProc(HWND, UINT, WPARAM, LPARAM);int APIENTRY _tWinMain(HINSTANCE hInstance,                       HINSTANCE hPrevInstance,                       LPTSTR    lpCmdLine,                       int       nCmdShow){  UNREFERENCED_PARAMETER(hPrevInstance);  UNREFERENCED_PARAMETER(lpCmdLine);  // TODO: Place code here.  MSG msg;  WNDCLASSEX wcex;  wcex.cbSize = sizeof(WNDCLASSEX);  wcex.style      = CS_HREDRAW | CS_VREDRAW;  wcex.lpfnWndProc  = WndProc;  wcex.cbClsExtra    = 0;  wcex.cbWndExtra    = 0;  wcex.hInstance    = hInstance;  wcex.hIcon      = NULL;  wcex.hCursor    = LoadCursor(NULL, IDC_ARROW);  wcex.hbrBackground  = (HBRUSH)(COLOR_BTNFACE+1);  wcex.lpszMenuName  = NULL;  wcex.lpszClassName  = szWndClass;  wcex.hIconSm    =  NULL;  RegisterClassEx(&wcex);  g_hInst = hInstance; // Store instance handle in our global variable  g_hWnd = CreateWindow(szWndClass, TEXT(SZ_TITLE), WS_OVERLAPPEDWINDOW,    CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);  if (!g_hWnd)  {    return FALSE;  }  ShowWindow(g_hWnd, SW_SHOW);  // Main message loop:  while (GetMessage(&msg, NULL, 0, 0))  {    TranslateMessage(&msg);    DispatchMessage(&msg);  }  return (int) msg.wParam;}LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){  int wmId, wmEvent;  switch (message)  {  case WM_CREATE:    break;  case WM_COMMAND:    wmId    = LOWORD(wParam);    wmEvent = HIWORD(wParam);    // Parse the menu selections:    switch (wmId)    {    case 0:    default:      return DefWindowProc(hWnd, message, wParam, lParam);    }    break;  case WM_DESTROY:    PostQuitMessage(0);    break;  default:    return DefWindowProc(hWnd, message, wParam, lParam);  }  return 0;} 

here the code to add console window can be found:http://justcheckingonall.wordpress.com/2008/08/29/console-window-win32-app/