+ -
当前位置:首页 → 问答吧 → 使用ShowWindow显示不出来窗口但是有进程 ,求解!

使用ShowWindow显示不出来窗口但是有进程 ,求解!

时间:2011-12-09

来源:互联网

#include <Windows.h>
#include <stdio.h>

LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd )
{
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
  wndcls.lpfnWndProc=WinSunProc;
wndcls.lpszClassName=(LPCWSTR)"WEIX";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW|CS_VREDRAW;
nShowCmd=SW_SHOWDEFAULT;
RegisterClass(&wndcls);

HWND hwnd;
hwnd=CreateWindow((LPCWSTR)"WeiXin2003",(LPCWSTR)"中国bj",WS_OVERLAPPEDWINDOW,
0,0,600,400,NULL,NULL,hInstance,NULL);
  ShowWindow(hwnd, nShowCmd);
  UpdateWindow(hwnd);

  MSG msg;
while (GetMessage(&msg,NULL,0,0))

TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lPARAM)
{
switch (uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"Char is %d",wParam);
MessageBox(hwnd,(LPCWSTR)szChar,(LPCWSTR)"WeiXin",0);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,(LPCWSTR)"mouser clicked",(LPCWSTR)"WeXin",0);
  HDC hdc;
hdc=GetDC(hwnd);
TextOut(hdc,0,50,(LPCTSTR)"计算机C++Lesson",strlen("计算机C++Lesson1"));
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT:
HDC hDC;
PAINTSTRUCT ps;
hDC=GetDC(hwnd);
TextOut(hDC,0,0,(LPCWSTR)"课室1", strlen ("课室1"));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:
if (IDYES==MessageBox(hwnd,(LPCWSTR)"是否真的结束",(LPCWSTR)"WeiXin",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lPARAM);
}
}

作者: gh1223189184   发布时间: 2011-12-09

C/C++ code

LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd )
{
    WNDCLASS wndcls;
    TCHAR szAppName[] = _T("test");
    wndcls.cbClsExtra=0;
    wndcls.cbWndExtra=0;
    wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
    wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
    wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
    wndcls.hInstance=hInstance;
    wndcls.lpfnWndProc=WinSunProc;
    wndcls.lpszClassName=(LPCWSTR)"WEIX";
    wndcls.lpszMenuName=NULL;
    wndcls.style=CS_HREDRAW|CS_VREDRAW;
    wndcls.lpszClassName = szAppName;
//    nShowCmd=SW_SHOWDEFAULT;
    if(!RegisterClass(&wndcls))
    {
        MessageBox(NULL,_T("Register Wnd class failed!\n"),_T("test"),MB_ICONERROR);
        return 0 ;
    }
    

    HWND hwnd;
    hwnd=CreateWindow(szAppName,_T("中国bj"),WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
    ShowWindow(hwnd, nShowCmd);
    UpdateWindow(hwnd);

    MSG    msg;
    while (GetMessage(&msg,NULL,0,0))
    {  
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return 0;
}
LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lPARAM)
{
    switch (uMsg)
    {
    case WM_CHAR:
        char szChar[20];
        sprintf(szChar,"Char is %d",wParam);
        MessageBox(hwnd,(LPCWSTR)szChar,(LPCWSTR)"WeiXin",0);
        break;
    case WM_LBUTTONDOWN:
        MessageBox(hwnd,(LPCWSTR)"mouser clicked",(LPCWSTR)"WeXin",0);
        HDC hdc;
        hdc=GetDC(hwnd);
        TextOut(hdc,0,50,(LPCTSTR)"计算机C++Lesson",strlen("计算机C++Lesson1"));
        ReleaseDC(hwnd,hdc);
        break;
    case WM_PAINT:
        HDC hDC;
        PAINTSTRUCT ps;
        hDC=GetDC(hwnd);
        TextOut(hDC,0,0,(LPCWSTR)"课室1", strlen ("课室1"));
        EndPaint(hwnd,&ps);
        break;
    case WM_CLOSE:
        if (IDYES==MessageBox(hwnd,(LPCWSTR)"是否真的结束",(LPCWSTR)"WeiXin",MB_YESNO))
        {
            DestroyWindow(hwnd);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hwnd,uMsg,wParam,lPARAM);
    }
}



由于你的类名没有写,所以出现问题的

作者: W170532934   发布时间: 2011-12-10

wndcls.lpszClassName=(LPCWSTR)"WEIX";
CreateWindow((LPCWSTR)"WeiXin2003",

上面的两个名字应该取一样的,否则不能显示 。
而且unicode是TEXT("WEIX")这样写,你那样写的话不行了。

。。。

作者: mingliang1212   发布时间: 2011-12-10