| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2345 人关注过本帖
标题:初学win 32 窗体创建hwnd 遇到创建hwnd为空 请问什么原因
取消只看楼主 加入收藏
zxlovezxl
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-3-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
初学win 32 窗体创建hwnd 遇到创建hwnd为空 请问什么原因
以下是 全部代码,建Win32 空项目,c.bmp文件一个
#include <windows.h>
#include <iostream>
#include <time.h>
using namespace std;
const string APPTITLE = "Game Loop";
HWND window;
HDC device;
bool gameover = false;
void DrawBitmap(char *filename, int x, int y)
{
    HBITMAP image = (HBITMAP)LoadImage(0, "c.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    BITMAP bm;
    GetObject(image, sizeof(BITMAP), &bm);
    HDC hdcImage = CreateCompatibleDC(device);
    SelectObject(hdcImage, image);
    BitBlt(device, x, y, bm.bmWidth, bm.bmHeight, hdcImage, 0, 0, SRCCOPY);
    DeleteDC(hdcImage);
    DeleteObject((HBITMAP)image);
}
bool Game_Init()
{
    srand(time(NULL));
    return 1;
}
void Game_Run()
{
    if (gameover == true) return;
    RECT rect;
    GetClientRect(window, &rect);
    int x = rand() % (rect.right - rect.left);
    int y = rand() % (rect.bottom - rect.top);
    DrawBitmap("c.bmp", x, y);
}
void Game_End()
{
    ReleaseDC(window, device);
}
LRESULT CALLBACK WinProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_DESTROY:
        gameover = true;
        PostQuitMessage(0);
        break;
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
}
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wc;
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.lpfnWndProc = (WNDPROC)WinProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = NULL;
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = APPTITLE.c_str();
    wc.hIconSm = NULL;
    return RegisterClassEx(&wc);
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
    window = CreateWindow(APPTITLE.c_str(), APPTITLE.c_str(), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL);
    if (window == 0) return 0;
    ShowWindow(window, nCmdShow);
    UpdateWindow(window);
    device = GetDC(window);
    return 1;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    MSG msg;
    MyRegisterClass(hInstance);
    if (!InitInstance(hInstance, nCmdShow)) return 0;
    if (!Game_Init()) return 0;
    while (!gameover)
    {
        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        Game_Run();
    }
    Game_End();

    return msg.wParam;
}
请问为什么 不出结果,一闪而过,window为什么为空
搜索更多相关主题的帖子: include window false 项目 
2017-03-24 23:16
zxlovezxl
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-3-24
收藏
得分:0 
高手啊一语道破 谢谢,已解决
2017-03-27 11:55
快速回复:初学win 32 窗体创建hwnd 遇到创建hwnd为空 请问什么原因
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020349 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved