|
发表于 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;
}
不知道是不是你想要的效果,希望可以帮到你。加油,一起学习。
|
|