请问在手动创建的窗口里面,如何接受其他程序发给它的自定义消息?

netyou netyou 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
请问在手动创建的窗口里面,如何接受其他程序发给它的自定义消息?如何书写代码?代码该写在那里?
例子如下:
(所有应用到的函数事先已经定义申明)

static LRESULT WINAPI g_windowproc(HWND wnd,UINT msg,WPARAM wp,LPARAM lp) {
switch (msg) {
//自定义消息是不是加到这里?
case WM_CREATE:
{
assert (g_wnd == NULL);

// Store the window handle for use by other functions.
g_wnd = wnd;

// If "Remember window positions is enabled, this will
// restore the last position of our window. Otherwise it
// won't do anything.
apply_window_placement(cfg_window_placement, wnd);
}
break;

case WM_DESTROY:
{
// If "Remember window positions is enabled, this will
// save the current position of our window. Otherwise it
// won't do anything.
read_window_placement(cfg_window_placement, wnd);

// Remove our window handle from the global variable.
g_wnd = NULL;
}
break;

case WM_CLOSE:
{
// Hide and disable the window.
g_hide_window();
}
break;

case WM_KEYDOWN:
switch (wp) {

case VK_ESCAPE:
{
// Hide and disable the window.
g_hide_window();
}
break;
}
break;

case WM_PAINT:
{
PAINTSTRUCT ps;
BeginPaint(wnd, &ps);

// We will only paint out client area in white for now.
FillRect(ps.hdc, &ps.rcPaint, (HBRUSH)GetStockObject(WHITE_BRUSH));

EndPaint(wnd, &ps);
}
break;

default:
return uDefWindowProc(wnd,msg,wp,lp);
}
return 0;
}

static void g_show_window() {
static bool registered = false;
static const char * TUTORIAL1_WINDOW_CLASS = "fb2k tutorial 1 class";

if (!registered) {
uWNDCLASS wc;
memset(&wc,0,sizeof(wc));
wc.style = CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;
wc.lpfnWndProc = g_windowproc;
wc.hInstance = core_api::get_my_instance();
wc.hCursor = uLoadCursor(0,IDC_ARROW);
wc.hbrBackground = 0;
wc.lpszClassName = TUTORIAL1_WINDOW_CLASS;
registered = uRegisterClass(&wc) != 0;
}

if (!g_wnd && registered) {
uCreateWindowEx(
WS_EX_TOOLWINDOW,
TUTORIAL1_WINDOW_CLASS,
TUTORIAL " " SUPERLYRICS,
WS_POPUP|WS_THICKFRAME|WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT,
200, 200,
core_api::get_main_window(),
/* no menu */ 0,
core_api::get_my_instance(),
/* no parameter */ 0 );
cfg_enabled = g_wnd != NULL;
}
}

希望各位大侠高手出招,先谢了!
...全文

相关推荐

delphi 自定义消息窗口和进度条窗口,使用方便

和showmessage一样好用,定时自动关闭提示窗口, 进度条窗口也可以各种自定义,很cool

黑贝是条狗

Winform布局自适应:FormAutoScaler辅助类实现多分辨率与高DPI适配

在桌面应用开发中,界面布局自适应是提升用户体验的关键技术。其核心原理是通过建立原始设计状态与当前运行状态之间的映射关系,利用比例因子动态计算控件位置与大小,实现从绝对定位到相对定位的转换。这项技术的价值在于解决传统Winform框架在多变屏幕环境下的布局错乱问题,尤其适用于工业控制、遗留系统维护等需要兼容不同分辨率与DPI的场景。通过实现一个健壮的FormAutoScaler辅助类,开发者可以高效处理控件缩放、字体适配及嵌套容器等复杂情况,其中递归处理控件树和协同锚定属性是确保布局一致性的关键。本文聚焦于W

weixin_30595035

VC++6.0 自学简单window窗口程序(窗口创建、消息处理)

本人自学写出的第一个window窗口程序,包含window窗口、组件创建、消息处理、窗口绘图等。

hxznhf

MFC创建窗口实例

一个用MFC创建窗口的实例,详细描述了用在Windows环境下用MFC创建窗口的四个步骤。

好儿郎-志在四方

C语言创建windows窗口实例

主要介绍了C语言创建windows窗口实例,本文直接给出实现代码,同时讲解了编码的步骤,需要的朋友可以参考下

weixin_38595850
评论 4
收藏 已收藏
分享
返回顶部
netyou
VC/MFC 16,550 成员 421,606 内容