游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1451|回复: 8

基于api的对话框出错

[复制链接]

33

主题

128

帖子

128

积分

注册会员

Rank: 2

积分
128
发表于 2006-3-20 19:55:00 | 显示全部楼层 |阅读模式
源代码如下:
#include <windows.h>
#include "resource.h"

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

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     static TCHAR szAppName[] = TEXT ("dialog") ;
     HWND         hwnd ;
     MSG          msg ;
     WNDCLASS     wndclass ;
     
     wndclass.style         = CS_HREDRAW | CS_VREDRAW;
     wndclass.lpfnWndProc   = DialogProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = DLGWINDOWEXTRA ;     
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (hInstance, szAppName) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;
     
     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }
     
     hwnd = CreateDialog(hInstance,MAKEINTRESOURCE(IDC1), 0,(DLGPROC)DialogProc) ;
     
     ShowWindow (hwnd, SW_SHOWNORMAL) ;
     UpdateWindow (hwnd) ;  
     
     while (GetMessage (&msg, NULL, 0, 0))
     {
        if(!IsWindow(hwnd) || !IsDialogMessage(hwnd, &msg))
                {
                    TranslateMessage (&msg) ;
            DispatchMessage (&msg) ;
                }         
     }

     return msg.wParam ;
}



LRESULT CALLBACK DialogProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  switch(message)
  {

   case WM_COMMAND:
   switch(LOWORD(wParam))
  {

    case IDOK:
          PostQuitMessage (0) ;
          return 0 ;
               
   }

  }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}
其中IDC1  为对话框ID,为了方面阅读只用了一个按钮IDOK
程序执行后,固定在屏幕有上角,不能移动,且没有标题 ,ok按钮可以响应。似乎DefWindowProc (hwnd, message, wParam, lParam) 没有执行
附上代码,请帮忙指点

sf_2006320195459.rar

3.31 KB, 下载次数:

3

主题

41

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2006-3-20 22:25:00 | 显示全部楼层

Re:基于api的对话框出错

DefWindowProc (hwnd, message, wParam, lParam)改成return 0

33

主题

128

帖子

128

积分

注册会员

Rank: 2

积分
128
 楼主| 发表于 2006-3-20 22:31:00 | 显示全部楼层

Re: 基于api的对话框出错

真是太谢谢你了,为什么要这样改呢?
这里对话框的缺省处理机制是怎么实现的?

3

主题

41

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2006-3-21 14:03:00 | 显示全部楼层

Re:基于api的对话框出错

没有为什么ms就是这么规定的

33

主题

128

帖子

128

积分

注册会员

Rank: 2

积分
128
 楼主| 发表于 2006-3-21 14:54:00 | 显示全部楼层

Re: 基于api的对话框出错

为什么点有上角的 Х ,不能关闭窗口呢?有讲用非MFC作基于对话框窗口的电子图书吗??

3

主题

41

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2006-3-21 18:27:00 | 显示全部楼层

Re:基于api的对话框出错

加上
case WM_CLOSE:
PostQuitMessage(0);
break;

33

主题

128

帖子

128

积分

注册会员

Rank: 2

积分
128
 楼主| 发表于 2006-3-22 23:24:00 | 显示全部楼层

Re: 基于api的对话框出错

谢谢你
能推荐本讲非mfc 作基于对话框程序这方面的书吗?

33

主题

128

帖子

128

积分

注册会员

Rank: 2

积分
128
 楼主| 发表于 2006-3-25 11:53:00 | 显示全部楼层

Re: 基于api的对话框出错

顶上来

3

主题

41

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2006-3-26 19:57:00 | 显示全部楼层

Re:基于api的对话框出错

《windows程序设计》
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 01:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表