位图资源加载黑屏
我编写一个位图资源的应用程序,资源添加了,但是运行的时候就是一个黑屏的界面,而且黑屏区域鼠标也是夹在状态的漏斗,不知是哪里出错了。。。求帮助!
#include <Windows.h>
#include <stdio.h>
#include "8-1.h"
//窗口函数声明
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) //入口函数(主函数)
{
//定义窗口类
WNDCLASS wndclass;
wndclass.hInstance = hInstance;//当前应用程序实例句柄
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//窗口背景色为灰色
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);//窗口采用箭头光标
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);//窗口的最小化图标为默认图标
wndclass.lpszClassName = "My first windows";//窗口类名
wndclass.lpszMenuName =NULL;//窗口中无菜单
wndclass.lpfnWndProc = WndProc;//该窗口的处理函数为MyProc
wndclass.cbClsExtra = 0;//窗口类无扩展
wndclass.cbWndExtra = 0;//该窗口实例无扩展
wndclass.style = CS_HREDRAW | CS_VREDRAW;//该窗口的类型
if(!RegisterClass(&wndclass)) //注册窗口类
return 0;
//创建窗口
HBITMAP hBm=LoadBitmap(hInstance,"pic8_2");
HWND hwnd = CreateWindow(
"My first windows" //窗口类名
,"我的第一个窗口程序" //窗口实例的标题名
,WS_OVERLAPPEDWINDOW //窗口的风格
,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 1;//程序终止时将信息返回系统
}
//窗口函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
HDC hdcmem;
BITMAP bm;
PAINTSTRUCT ps;
switch(message){
case WM_CREATE:
hdc = GetDC(hwnd); //获取设备环境句柄
hdcmem = CreateCompatibleDC(hdc); //获取内存设备环境句柄
ReleaseDC(hwnd, hdc); //释放设备环境句柄
break;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
hdcmem = CreateCompatibleDC(hdc);
HBITMAP hBm = CreateCompatibleBitmap(hdc,500,500);
SelectObject(hdcmem, hBm); //将位图选入内存设备环境
//调用函数BitBlt 将内存设备环境中的位图复制到设备环境
GetObject(hBm,sizeof(BITMAP),(LPVOID)&bm);
BitBlt(hdc, 5, 5, bm.bmWidth, bm.bmHeight, hdcmem, 0, 0, SRCCOPY);
EndPaint(hwnd, &ps);
break;
return 0;
}
}
[解决办法]
单步调试和设断点调试是程序员必须掌握的技能之一。