鱼C论坛

 找回密码
 立即注册
查看: 4502|回复: 7

如何使用自定义消息

[复制链接]
发表于 2013-6-6 16:38:08 | 显示全部楼层 |阅读模式
50鱼币
各位,请问在sdk编程的条件下,如何使用自定义消息


纠结了一天了,网上的都是MFC编程的。现在还不想学习MFC呢………………

最佳答案

查看完整内容

VC建一个Win32 Application写的。 #include "stdafx.h" //自定义消息 #define WM_MYMESSAGE WM_USER+10001 //用于接收本进程句柄 HINSTANCE g_hInstance = 0; //窗口处理函数 LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam ) { switch( nMsg ) { //消息处理 case WM_MYMESSAGE: M ...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-6 16:38:09 | 显示全部楼层
本帖最后由 fanki 于 2013-6-7 23:38 编辑

VC建一个Win32 Application写的。
#include "stdafx.h"

//自定义消息
#define WM_MYMESSAGE WM_USER+10001
//用于接收本进程句柄
HINSTANCE g_hInstance = 0;

//窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg,
                                                 WPARAM wParam, LPARAM lParam )
{
        switch( nMsg )
        {
//消息处理
        case WM_MYMESSAGE:
                MessageBox( NULL, "WM_MYMESSAGE", "Infor", MB_OK );
                break;
//创建时发送一个自己定义的消息
        case WM_CREATE:                //用于发送消息的函数
                SendMessage( hWnd, WM_MYMESSAGE, 1, 2 );
                break;
        case WM_DESTROY:
                PostQuitMessage( 0 );//可以使getmessage函数返回0
                break;
        }
        return DefWindowProc( hWnd, nMsg, wParam, lParam );
}

//注册窗口类
BOOL Register( LPSTR lpClassName, WNDPROC wndproc )
{
        WNDCLASSEX wce = { 0 };
        wce.cbSize = sizeof( wce );
        wce.cbClsExtra = 0;
        wce.cbWndExtra = 0;
        wce.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
        wce.hCursor = NULL;
        wce.hIcon = NULL;
        wce.hIconSm = NULL;
        wce.hInstance = g_hInstance;
        wce.lpfnWndProc = wndproc;
        wce.lpszClassName = lpClassName;
        wce.lpszMenuName = NULL;
        wce.style = CS_HREDRAW | CS_VREDRAW;
        ATOM nAtom = RegisterClassEx( &wce );
        if (nAtom == 0)
                return FALSE;
        return TRUE;
}

//创建主窗口
HWND CreateMain( LPSTR lpClassName, LPSTR lpWndName )
{
        HWND hWnd = CreateWindowEx( 0, lpClassName, lpWndName, WS_OVERLAPPEDWINDOW,
                CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL,
                g_hInstance, NULL );
        return hWnd;
}

//显示窗口
void Display( HWND hWnd )
{
        ShowWindow( hWnd, SW_SHOW );
        UpdateWindow( hWnd );
}

//消息循环
void Message( )
{
        MSG nMsg = { 0 };
        while ( GetMessage( &nMsg, NULL, 0, 0) )
        {
                TranslateMessage( &nMsg );
                DispatchMessage( &nMsg );
        }
}

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
         // TODO: Place code here.
        g_hInstance = hInstance;
        Register( "Main", WndProc );
        HWND hWnd = CreateMain( "Main", "window" );
        Display( hWnd );
        Message( );
        return 0;
}

不知道是不是你想要的效果,希望可以帮到你。加油,一起学习。

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-6 21:20:07 | 显示全部楼层
本帖最后由 小新110 于 2013-6-6 21:21 编辑

#include <windows.h>
#include <iostream>
using namespace std;

int main()
{
DWORD dwThread;
MSG msg;
DWORD dwMyMsg = WM_USER + 128;

dwThread = GetCurrentThreadId();
PostThreadMessage(dwThread, dwMyMsg, (WPARAM)0, (LPARAM)0);

while (GetMessage(&msg, NULL, 0, WM_USER+129))
{
if (msg.message == dwMyMsg)
cout << "has receive dwMyMsg\n";
else
cout << "Message: " << msg.message << endl;
}

return 0;
}

这段程序输出has receive dwMyMsg
参考资料:
http://bbs.csdn.net/topics/100019218
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-9 00:03:16 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-9 00:04:17 | 显示全部楼层
fanki 发表于 2013-6-7 23:35
VC建一个Win32 Application写的。
#include "stdafx.h"

谢谢。再问个问题,那个如何在线程之间传递消息啊???:P
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-9 00:55:05 | 显示全部楼层
1144290241 发表于 2013-6-9 00:04
谢谢。再问个问题,那个如何在线程之间传递消息啊???

{:7_155:}多线程,这个不太会,我看看。你想怎么多线程吖?我好像都是通过消息做的,一起学习,今天比较晚上,明天再看看,先睡啦,好困{:7_175:}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-10 21:47:09 | 显示全部楼层
学习一哈。。。。。。。。。。。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-13 20:04:26 | 显示全部楼层
貌似很复查的样子。。。。。。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-25 21:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表