标题:vc编写的windows程序编译链接都没错误,但窗口不能输出,求高人解答
只看楼主
tauke_wang
Rank: 2
等 级:论坛游民
帖 子:32
专家分:11
注 册:2011-9-22
结帖率:100%
 问题点数:0 回复次数:5 
vc编写的windows程序编译链接都没错误,但窗口不能输出,求高人解答
#include<windows.h>
#include<stdlib.h>
#include<string.h>
int i=0;

long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,long lParam);
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindowsClass(HINSTANCE hInstance,int nCmdShow);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpszCmdLine,int nCmdShow)
{
    MSG Message;
    if(!InitWindowsClass(hInstance))
        return FALSE;
    if(!InitWindowsClass(hInstance,nCmdShow))
        return FALSE;
    while(GetMessage(&Message,0,0,0))
    {
        TranslateMessage(&Message);
        DispatchMessage(&Message);
    }
    return Message.wParam;
}

long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
    HDC hDC;
    HBRUSH hBrush;
    HPEN hPen;
    PAINTSTRUCT PtStr;
    switch(iMessage)
    {
    case WM_PAINT:
        hDC=BeginPaint(hWnd,&PtStr);
        SetMapMode(hDC,MM_ANISOTROPIC);
        
        if(0==i%3)
        {
            hBrush=(HBRUSH)CreateSolidBrush(RGB(255,0,0));
        }
        else if(1==i%3)
        {
            hBrush=(HBRUSH)CreateSolidBrush(RGB(0,255,0));
        }
        else
        {
            hBrush=(HBRUSH)CreateSolidBrush(RGB(0,0,255));   
        }
        SelectObject(hDC,hBrush);
        Rectangle(hDC,0,0,1000,550);
        i++;
        
        DeleteObject(hBrush);
        EndPaint(hWnd,&PtStr);

        Sleep(1000);
        InvalidateRect(hWnd,NULL,1);
        return 0;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    default:
        return DefWindowProc(hWnd,iMessage,wParam,lParam);
    }
}
BOOL InitWindowsClass(HINSTANCE hInstance)
{
    WNDCLASS wndclass;
    wndclass.cbClsExtra=0;
    wndclass.cbWndExtra=0;
    wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndclass.hInstance=hInstance;
    wndclass.lpfnWndProc=WndProc;
    wndclass.lpszClassName="WinFill";
    wndclass.lpszMenuName=NULL;
    wndclass.style=CS_HREDRAW|CS_VREDRAW;
    return RegisterClass(&wndclass);
}
BOOL InitWindowsClass(HINSTANCE hInstance,int nCmdShow)
{
    HWND hWnd;
    hWnd=CreateWindow("颜色",
        "颜色",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        0,
        CW_USEDEFAULT,
        0,
        NULL,
        NULL,
        hInstance,
        NULL);
    if(!hWnd)
        return FALSE;
    ShowWindow(hWnd,nCmdShow);
    UpdateWindow(hWnd);
    return TRUE;
}


搜索更多相关主题的帖子: while include windows return 
2011-10-23 16:55
naruto01
Rank: 4
等 级:业余侠客
帖 子:103
专家分:280
注 册:2011-5-23
得分:0 
InitXXX函数内部的WNDCLASS HWND都是局部变量,函数返回就无效了。
定义成全局变量,或者static试试
2011-10-23 17:52
tauke_wang
Rank: 2
等 级:论坛游民
帖 子:32
专家分:11
注 册:2011-9-22
得分:0 
回复 2楼 naruto01
我其他的程序的结构也是这样写的,都可以运行的,没说WENCLASS HWND是局部变量的限制
2011-10-24 22:00
h3wardt
Rank: 2
等 级:论坛游民
帖 子:8
专家分:20
注 册:2011-11-1
得分:0 
这是编程中经常容易犯的错误,要注意你注册的窗口类名要与创建的窗口类名要一致。
也就是wndclass.lpszClassName=thisclassname;CreateWindow(thisclassname),这两个参数要相同。
 
2011-11-01 04:07
wgd123pl
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:23
专家分:24
注 册:2008-8-16
得分:0 
一句话,就是要把你注册窗口的名称与创建窗口的名称一致就可以了。
2011-11-02 21:06
tauke_wang
Rank: 2
等 级:论坛游民
帖 子:32
专家分:11
注 册:2011-9-22
得分:0 
谢谢了!
2011-11-24 14:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-353223-1-1.html




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

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