hur.cn - 华软网

 热门搜索

代码错误求检查

  作者:未知    来源:网络    更新时间:2011/10/1
C++">
#include <windows.h>
#include "resource.h"

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
    )
{
    static char cAppName[] = "xxx" ;
    WNDCLASS wndcls ;
    HWND hwnd ;
    MSG msg ;

    wndcls.cbClsExtra = 0 ;
    wndcls.cbWndExtra = DLGWINDOWEXTRA ;
    wndcls.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
    wndcls.hCursor = LoadCursor (NULL, IDC_ARROW) ;
    wndcls.hIcon = LoadIcon (hInstance, cAppName) ;
    wndcls.hInstance = hInstance ;
    wndcls.lpfnWndProc = WndProc ;
    wndcls.lpszClassName = NULL ; 
    wndcls.lpszMenuName = cAppName ;
    wndcls.style = CS_HREDRAW | CS_VREDRAW ;

    RegisterClass (&wndcls) ;

    hwnd = CreateDialog (hInstance, cAppName, 0, NULL) ;

    ShowWindow (hwnd, nCmdShow) ;

    while (GetMessage (&msg, NULL, 0, 0))
    {
        TranslateMessage (&msg) ;
        DispatchMessage (&msg) ;
    }
    return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_CREATE :
        PlaySound ("xxx.wav", NULL, SND_FILENAME | SND_ASYNC) ;
        return 0 ;

    case WM_DESTROY :
        PostQuitMessage (0) ;
        return 0 ;
    }
    return DefWindowProc (hwnd, message, wParam, lParam) ;
}



为什么对话框创建了后,没有playsound,点右上角的叉叉也不能推出
我感觉wndproc根本没响应啊
我要用窗口产生的方法创建对话框

---华软 网友回答---
建议转C语言
---华软网友回复---
C++">#include "stdafx.h"

#include <windows.h>
#include "resource.h"

INT_PTR CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
    )
{
MSG msg;
    HWND hwnd = CreateDialog (hInstance, MAKEINTRESOURCE(IDD_DIALOG1), 0, (DLGPROC)WndProc) ;

    ShowWindow (hwnd, nCmdShow) ;

    while (GetMessage (&msg, NULL, 0, 0))
    {
        TranslateMessage (&msg) ;
        DispatchMessage (&msg) ;
    }
    return msg.wParam ;
}

INT_PTR CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_CREATE :
      //  PlaySound ("xxx.wav", NULL, SND_FILENAME | SND_ASYNC) ;
        return 0 ;

    case WM_DESTROY :
AfxMessageBox(_T("SFD"));
        PostQuitMessage (0) ;
        return 0 ;
    }
    return DefWindowProc (hwnd, message, wParam, lParam) ;
}

---华软网友回复---
while (GetMessage (&msg, NULL, 0, 0))
{
        TranslateMessage (&msg) ;
        DispatchMessage (&msg) ;
}

貌似不行吧.一般是获得消息,判断如果消息是WM_QUIT 就跳出循环.结束
---华软网友回复---
hwnd = CreateDialog (hInstance, cAppName, 0, NULL) ;
============
没有将对话框与消息处理函数关联起来
---华软网友回复---
.rc 里面少了 CLASS "XXX" 这项   自己解决了  谢谢
---华软网友回复---
楼主大约是想用对话框模板名代替窗口类来用,但是这样用是不行的。
按你的写法,你还要打开rc文件,加上class 窗口类名 才行。
---华软网友回复---
引用 6 楼 wltg2001 的回复:
楼主大约是想用对话框模板名代替窗口类来用,但是这样用是不行的。
按你的写法,你还要打开rc文件,加上class 窗口类名 才行。


大牛啊 
---华软网友回复---
过程函数没穿进对话框?      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。