windows 32 控制台自定义消息

原创 2015年07月10日 10:58:23
#include<windows.h>
#include<stdio.h>
LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);//过程函数声明
HWND bhwnd;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{//设计、注册、显示窗口。。。
    WNDCLASS wndc;
    wndc.cbClsExtra=0;
    wndc.cbWndExtra=0;
    wndc.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH);
    wndc.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndc.hInstance=hInstance;
    wndc.lpfnWndProc=WindowProc;
    wndc.lpszClassName="MyWin";
    wndc.lpszMenuName=NULL;
    wndc.style=CS_HREDRAW|CS_VREDRAW;

    RegisterClass(&wndc);

    HWND hwnd;
    hwnd=CreateWindow("MyWin","自定义窗口",WS_OVERLAPPEDWINDOW,300,300,400,300,NULL,NULL,hInstance,NULL);
    ShowWindow(hwnd,SW_SHOWNORMAL);
    UpdateWindow(hwnd);
bhwnd=CreateWindow("Button","MyButton",WS_CHILDWINDOW,100,100,100,100,hwnd,NULL,hInstance,NULL);
ShowWindow(bhwnd,SW_SHOWNORMAL);
    MSG msg;
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return 0;
}

LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    switch(uMsg)
    {
case WM_COMMAND:
if(DWORD(lParam)==(int)bhwnd)
{
MessageBox(hwnd,"Hello!","",NULL);
}
break;
          case WM_CLOSE:
        DestroyWindow(hwnd);
        break;
          case WM_DESTROY:
        PostQuitMessage(0);
        break;
          default:
                 return DefWindowProc(hwnd,uMsg,wParam,lParam);    
    }
    return 0;

}

添加按钮button

#include <windows.h>
 
// Declare WndProcedure
LRESULT CALLBACK WndProcedure(HWND hWnd, UINT uMsg,
               WPARAM wParam, LPARAM lParam);
 
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
               LPSTR lpCmdLine, int nCmdShow)
{
    HWND       button;
    MSG        Msg;
    HWND       hWnd;
    HRESULT       hRet;
    WNDCLASSEX WndClsEx;
 
    // Populate the WNDCLASSEX structure
    WndClsEx.cbSize        = sizeof(WNDCLASSEX);
    WndClsEx.style         = CS_HREDRAW | CS_VREDRAW;
    WndClsEx.lpfnWndProc   = WndProcedure;
    WndClsEx.cbClsExtra    = 0;
    WndClsEx.cbWndExtra    = 0;
    WndClsEx.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    WndClsEx.hCursor       = LoadCursor(NULL, IDC_ARROW);
    WndClsEx.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    WndClsEx.lpszMenuName  = NULL;
    WndClsEx.lpszClassName = "GlowdotWin32TutorialPartI";
    WndClsEx.hInstance     = hInstance;
    WndClsEx.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
 
    // Register the class
    RegisterClassEx(&WndClsEx);
 
    // Create the window object
    hWnd = CreateWindow("GlowdotWin32TutorialPartI",
              "Glowdot Win32 Tutorial - Part I",
              WS_OVERLAPPEDWINDOW,
              CW_USEDEFAULT,
              CW_USEDEFAULT,
              CW_USEDEFAULT,
              CW_USEDEFAULT,
              NULL,
              NULL,
              hInstance,
              NULL);
 
    button = CreateWindow( 
    "BUTTON",                                    // predefined class
    "OK",                                        // button text
    WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,    // styles 
                                                 // Size and position values are given 
                                                 // explicitly, because the CW_USEDEFAULT 
                                                 // constant gives zero values for buttons. 
    100,                                          // starting x position
    100,                                          // starting y position 
    200,                                         // button width 
    200,                                         // button height 
    hWnd,                                        // parent window 
    NULL,                                        // No menu 
    hInstance,                                   // Our apps HINSTANCE 
    NULL                                         // pointer not needed 
);
 
    if ( !button)
       return 0;
    // Verify window creation
    if( !hWnd ) // If the window was not created,
        return 0; // stop the application
 
    // Show the window
    ShowWindow(hWnd, SW_SHOWNORMAL);
    ShowWindow(button, SW_SHOWNORMAL);
    UpdateWindow(hWnd);
    UpdateWindow(button);
    // our message pump
    while( (hRet = GetMessage( &Msg, NULL, 0, 0 )) != 0)
    { 
        if (hRet == -1)
        {
        // handle the error and possibly exit
        }
        else
        {
            TranslateMessage(&Msg); 
            DispatchMessage(&Msg); 
        }
    }
}
 
//////////////////
// WndProcedure //
//////////////////
 
LRESULT CALLBACK WndProcedure(HWND hWnd, UINT Msg,
               WPARAM wParam, LPARAM lParam)
{
    switch(Msg)
    {
    case WM_DESTROY:
        // user wants to exit
        PostQuitMessage(WM_QUIT);
        break;
    default:
        // Hand off unprocessed messages to DefWindowProc
        return DefWindowProc(hWnd, Msg, wParam, lParam);
    }
 
    return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

c++控制台(非窗口,非MFC框架)里线程如何通过自定义消息通信

MFC只是封装了API 可以参考下使用WIN32 API编写窗口实例程序。 http://blog.csdn.net/bluesky_03/article/details/3423738 里面有消息传...
  • fuck487
  • fuck487
  • 2015年03月13日 18:54
  • 1068

windows自定义消息

当我们通过这种方式注册应用程序自定义消息,
  • shb8845369
  • shb8845369
  • 2014年07月10日 10:29
  • 4295

WINDOWS自定义消息范围

WINDOWS自定义消息WM_USER和WM_APP 常量是Windows帮助应用程序定义私有窗口类里的私有消息,通常使用WM_USER+一个整数值,但总值不能超过0x7FFF。 ...
  • haoxiang110
  • haoxiang110
  • 2014年11月01日 22:18
  • 864

win32 socket的一个简单的例子 控制台

 在visual c++里建两个win32控制台工程,分别编译下面的服务端和客户端 服务端: [cpp] view plain copy print? ...
  • u011555996
  • u011555996
  • 2017年04月15日 13:48
  • 582

Windows消息:如何自定义窗口消息与线程消息

自定义消息一、自定义窗口消息 #define WM_MY_MSG WM_USER + 0x100 afx_msg LRESULT OnMyMsg(WPARAM, LPARAM);LRESULT CTe...
  • wangyao1052
  • wangyao1052
  • 2015年05月16日 21:59
  • 1132

Win32控制台中使用定时器的方法

在MFC中用OnTimer()函数就可以很方便的实现定时事件,但在Win32控制台工程中没有消息循环,MSDN里也不推荐把SetTimer()用在Console Applications里。 方法:在...
  • jiangqin115
  • jiangqin115
  • 2015年06月20日 15:22
  • 1921

MFC和win32自定义消息

MFC自定义消息 1.  在头文件stdafx.h中增加一个自定义消息宏                                 #define WM_USER_THREADEND...
  • jolin678
  • jolin678
  • 2015年10月09日 11:27
  • 966

推箱子基础代码(win32版)

今天在网上看到一个网友的《超级玛丽》的制作,一时手痒,决定也做个以前的经典小游戏。 由于时间有限,也没做过游戏,就选择了自己比较喜欢的,也比较简单的《推箱子》。 (遥想当年上自习的时候,借同学的文...
  • crybird
  • crybird
  • 2012年07月22日 00:08
  • 1233

VC++如何处理自定义消息

ClassWizard不允许增加用户自定义消息,所以你必须手工输入。输入后,ClassWizard就可以象处理其它消息一样处理你自定义的消息了。 下面是增加自定义消息的步骤: 第一步:定义...
  • cytj129
  • cytj129
  • 2015年04月24日 17:45
  • 421

极光推送能收到通知却收不到自定义消息

那是因为你没有在自定义广播中做相应的处理package com.jiawabang.Receicer;import android.content.BroadcastReceiver; import ...
  • xiyangyang8110
  • xiyangyang8110
  • 2016年10月17日 11:07
  • 5001
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:windows 32 控制台自定义消息
举报原因:
原因补充:

(最多只允许输入30个字)