请教,下面的代码怎么运行后,不显示窗口?

king_2007 2024-02-19 12:05:25

请问以下的代码,编译、调试都通过后,为什么执行时,看不到窗口?

代码如下:

#include "stdafx.h"
#include <windows.h>
#include "mmsystem.h"
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
    
int  WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,PSTR szCmdLine,int iCmdShow)
{
    static TCHAR szAppName[]=TEXT("我的窗口");
    HWND hwnd;
    MSG   msg;
    WNDCLASS wndclass;
    wndclass.style=CS_HREDRAW|CS_VREDRAW;
    wndclass.lpfnWndProc =WndProc;
    wndclass.cbClsExtra =0;
    wndclass.cbWndExtra =0;
    wndclass.hInstance =hInstance;
    wndclass.hIcon =LoadIcon(NULL,IDI_APPLICATION);
    wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndclass.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName =NULL;
    wndclass.lpszClassName =szAppName;
    hwnd=CreateWindow(szAppName,TEXT("我的窗口"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
    ShowWindow(hwnd,iCmdShow);
    UpdateWindow(hwnd);
    while(GetMessage(&msg,NULL,0,0))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }

return msg.wParam ;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParma,LPARAM lParma)
{
HDC hdc;
PAINTSTRUCT  ps;
RECT   rect;
switch(message)
{
case WM_CREATE:
    PlaySound(TEXT("Welcom98.wav"),NULL,SND_FILENAME|SND_ASYNC );
    return 0;
case WM_PAINT:
    hdc=BeginPaint(hwnd,&ps);
    GetClientRect(hwnd,&rect);
    DrawText(hdc,TEXT("hello,windows98"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
    EndPaint(hwnd,&ps);
    return 0;
case WM_DESTROY:
    PostQuitMessage(0);
    return 0;

}

return DefWindowProc(hwnd,message,wParma,lParma);
}
 

...全文
3327 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2024-02-19
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/8064396, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
zara 2024-02-19
  • 打赏
  • 举报
回复 1

CreateWindows() 之前,没有注册窗口类 RegisterClass()

king_2007 2024-03-12
  • 举报
回复
@zara 上面的代码不是我的源代码。我的源代码如下: #include "windows.h" LRESULT CALLBACK WNDFUN(HWND hWnd,UINT msg,WPARAM wparam,LPARAM lparam) { switch(msg) { case WM_PAINT: { HDC hdc=GetDC(hWnd); SetBkMode(hdc,TRANSPARENT); TextOut(hdc,20,20,"XXXXXX公司",20); DeleteDC(hdc); break; } case WM_CLOSE: { DestroyWindow(hWnd); break; } case WM_DESTROY: { PostQuitMessage(0); break; } default: return DefWindowProc(hWnd,msg,wparam,lparam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { WNDCLASS wndcls; wndcls.style =CS_DBLCLKS|CS_VREDRAW|CS_HREDRAW; wndcls.lpszMenuName =NULL; wndcls.lpszClassName ="CustomWnd"; wndcls.lpfnWndProc=WNDFUN; wndcls.hInstance =GetModuleHandle(NULL); wndcls.hIcon =NULL; wndcls.hCursor =NULL; wndcls.hbrBackground =(HBRUSH)GetStockObject(LTGRAY_BRUSH); wndcls.cbClsExtra =0; wndcls.cbWndExtra =0; RegisterClass(&wndcls); HWND hwnd; hwnd=CreateWindow("CustomWnd","第一个windows窗口",WS_CAPTION|WS_OVERLAPPEDWINDOW|WS_SYSMENU,50,50,500,500,NULL,NULL,wndcls.hInstance ,NULL); ShowWindow(hwnd,SW_SHOW); UpdateWindow(hwnd); MSG msg; while(GetMessage(&msg,NULL,0,0)); { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam ; }

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧