小编tyl*_*ler的帖子

.NET运行时内部是否映射到win32函数调用?

换句话说,.NET框架最终会在某处调用以完成其工作吗?或者Microsoft是否在.NET框架中完全重新创建了win32库的所有功能.

谢谢!

.net c winapi runtime

10
推荐指数
4
解决办法
657
查看次数

在WIN32中的"BUTTON"类窗口上显示位图

编辑:我认为在创建子窗口期间(即我的按钮)不会发送WM_CREATE消息.因此,通过在WM_CREATE期间调用SendMessage,我正在向尚未创建的窗口发送消息.现在的解决方案是在WM_SHOWWINDOW消息期间调用SendMessage().子窗口是否在创建时发送WM_CREATE消息?

为什么按钮上没有显示位图?位图为180x180像素.

我有一个资源文件:

Bit BITMAP bit.bmp
Run Code Online (Sandbox Code Playgroud)

然后我创建了主窗口和一个子"BUTTON"窗口,其中包含:

HWND b, d;

b = CreateWindow(L"a", NULL, WS_OVERLAPPEDWINDOW, 0, 0, 500, 500, 0, 0, 
                  hInstance, 0);

d = CreateWindow(L"BUTTON", NULL, WS_CHILD | WS_VISIBLE | BS_BITMAP, 
                 10, 10, 180, 180, b, 200, hInstance, 0);
Run Code Online (Sandbox Code Playgroud)

然后,在我的Windows程序中,我向"BUTTON"窗口发送"BM_SETIMAGE"消息:

HBITMAP hbit; 

case WM_CREATE:    // It works if I change this to: case WM_SHOWWINDOW 

hbit = LoadBitmap(hInstance, L"Bit");

SendMessage(d, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hbit);
Run Code Online (Sandbox Code Playgroud)

LoadBitmap()返回一个有效的句柄,因为它没有返回NULL,我能够使用BitBlt()函数在客户区显示位图.所以我要么没有正确发送消息,要么我没有正确创建"按钮"窗口.

我究竟做错了什么?

谢谢!

c winapi bitmap button

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×2

winapi ×2

.net ×1

bitmap ×1

button ×1

runtime ×1