win32 消息
#include <Windows.h>
#include <stdio.h>
#include <string.h>
// 用于在 win32 中获取控制台
HANDLE g_hOutput = NULL;
// 全局保存实例对象
HINSTANCE g_hInstance = NULL;
LRESULT CALLBACK WnProc(
HWND hwnd,
UINT msg,
WPARAM wparam,
LPARAM lparam)
{
switch (msg)
{
case WM_CREATE:
{
break;
}
case WM_CLOSE:
{
DestroyWindow(hwnd);
PostQuitMessage(0);
}
default:
break;
}
return DefWindowProc(hwnd, msg, wparam, lparam);
}
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int nCmdShow)
{
g_hInstance = hInstance;
// 在 win32 中获取控制台
AllocConsole();
g_hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
WNDCLASS wndclass;
ZeroMemory(&wndclass, sizeof(WNDCLASS));
wndclass.lpfnWndProc = WnProc;
wndclass.lpszClassName = "MyWndClass";
if (!RegisterClass(&wndclass))
{
MessageBox(NULL, TEXT("regist windwos class failed!"), "failed", MB_ICONERROR);
return 0;
}
HWND hwnd = CreateWindow(
wndclass.lpszClassName,
"window name",
// WS_OVERLAPPEDWINDOW,
WS_EX_TOOLWINDOW |
WS_EX_NOACTIVATE |
WS_EX_TRANSPARENT |
WS_EX_LAYERED |
WS_EX_TOPMOST,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd, SW_NORMAL);
UpdateWindow(hwnd);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
MFC 对话框模板
#include <afxwin.h>
#include "resource.h"
class CMyDlg : public CDialog
{
DECLARE_MESSAGE_MAP()
public:
CMyDlg() : CDialog(IDD_DIALOG1) {};
virtual BOOL OnInitDialog();
virtual void DoDataExchange(CDataExchange* pDX);
};
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
END_MESSAGE_MAP()
BOOL CMyDlg::OnInitDialog()
{
return TRUE;
}
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
}
class CMyWinApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
BOOL CMyWinApp::InitInstance()
{
CMyDlg myDlg;
this->m_pMainWnd = &myDlg;
myDlg.DoModal();
return FALSE;
}
CMyWinApp theApp;
标签:windows,hwnd,编程,wndclass,WS,CMyDlg,msg,NULL,模板 From: https://www.cnblogs.com/zhh567/p/17416225.html