,Windows 下编程 有关对话框程序的问题,待解决!!

fengcaho 2004-05-05 04:14:10
程序是这样的:我建了一个对话框资源,然后在里面添加了CLASS "Server2"
下面运行
#include "stdafx.h"
#include "resource.h"
#include <windows.h>

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char szAppName[]="Server2" ;
UINT Ret;
MSG msg;
HWND hwnd ;


WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = DLGWINDOWEXTRA ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
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,szAppName,0,NULL);
Ret=GetLastError();
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)

{
HWND hText;//
HDC hdc ;
PAINTSTRUCT ps ;
int iTemp;

switch (message)

{
case WM_CREATE:
MessageBox(NULL,"A","A",NULL);
break;
case WM_PAINT://显示本机IP地址
break;
case WM_COMMAND:
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;

}
为什么我CreateDialog()之后得到的句柄是0?但是Ret的值也为0,怎么回事?请高手解答!!!
...全文
65 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengcaho 2004-05-06
  • 打赏
  • 举报
回复
我的窗口就是从对话框模板创建的啊,正是因为这样,才使用CreateDialog()函数的
fenforever 2004-05-06
  • 打赏
  • 举报
回复
CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, (DLGPROC)WndProc);

那些注册窗口类的代码可以去掉,因为对话框是系统已经定义了的窗口类。
vc99 2004-05-06
  • 打赏
  • 举报
回复
老弟,你心太急,以致于几乎所有的涉及到的基本概念都没搞清楚,混淆了。
我帮你把程序修改了一下,你再仔细看看对话框的有关内容,就会明白了。
我觉得你的代码中最直接的错误是这句:CreateDialog(hInstance,szAppName,0,NULL);
既然你使用了szAppName做为参数,那么你必须把你定义的对话框资源的ID指定为"Server2"。

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

BOOL CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char szAppName[]="Server2" ;
DialogBox(hInstance,szAppName,NULL,(DLGPROC)WndProc);

return 1;
}


BOOL WINAPI WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;

case WM_PAINT:

break;

case WM_COMMAND:
switch(LOWORD(wParam))
{

case IDCANCEL:
EndDialog(hwnd,FALSE);
return TRUE;
}

}
return FALSE;
}
comshowboy 2004-05-05
  • 打赏
  • 举报
回复
这个是好像看不出什么问题呀 肯能因为我是一个新手吧
以后的多向大家学习
fenforever 2004-05-05
  • 打赏
  • 举报
回复
因为CreateDialog是需要你从一个资源中的对话框模板来创建的,所以你不需要创建窗口类。
你的程序可以使用CreateWindow。
lincoder666 2004-05-05
  • 打赏
  • 举报
回复
你创建的好象不是SDK程序
lincoder666 2004-05-05
  • 打赏
  • 举报
回复
看不出有什么问题
fengcaho 2004-05-05
  • 打赏
  • 举报
回复
对话框过程就是WndProc啊
lincoder666 2004-05-05
  • 打赏
  • 举报
回复
你没定义对话框窗口过程
资源地址: 中文1 http://download.csdn.net/source/1922034 中文2 http://download.csdn.net/source/1922079 中文3 http://download.csdn.net/source/1922197 中文4 http://download.csdn.net/source/1922298 中文5 http://download.csdn.net/source/1924370 中文6 http://download.csdn.net/source/1924437 英文1 http://download.csdn.net/source/1892113 英文2 http://download.csdn.net/source/1892112 C#与.NET3.5高级程序设计(第4) 中文5 不在作者其他资源内显示,可以用高级搜索找到 《Pro C# 2010 and the .NET 4.0 Platform, Fifth Edition》已经出http://www.apress.com/book/view/9781430225492 大家快去订购吧 amazon有折扣 http://www.amazon.com/Pro-2010-NET-Platform-Fifth/dp/1430225491/ref=sr_1_1?ie=UTF8&s=books&qid=1261446530&sr=8-1 C#与.NET3.5高级程序设计(第4) 中文 其他网友本资源我下了,都没有下载下来 本人从其他地方找的 然后按章压缩 请大家试一下能不能下载 第22章 ADO.NET之一:连接层 580 22.1 ADO.NET高层次定义 580 22.2 ADO.NET的数据提供程序 581 22.3 其他的ADO.NET命名空间 584 22.4 System.Data命名空间的类型 584 22.5 使用接口抽象数据提供程序 588 22.6 创建AutoLot数据库 590 22.7 ADO.NET 数据提供程序工厂模型 594 22.8 ADO.NET的连接式访问 598 22.9 使用数据取器 603 22.10 构建可重用的数据访问库 604 22.11 创建控制台UI前端 610 22.12 使用SqlCommand进行异步数据访问 614 22.13 数据库事务 616 22.14 小结 619 第23章 ADO.NET之二:断开连接层 620 23.1 ADO.NET断开连接层 620 23.2 DataSet的作用 621 23.3 使用DataColumn 623 23.4 使用DataRow 625 23.5 使用DataTable 627 23.6 将DataTable对象绑定到用户界面 631 23.7 使用数据适配器填充DataSet/ DataTable 639 23.8 重访AutoLotDAL.dll 641 23.9 切换多表DataSet对象 644 23.10 Visual Studio 2008的数据访问工具 649 23.11 从UI层解耦自动生成的代码 656 23.12 小结 659 第24章 LINQ API编程 660 24.1 LINQ to ADO.NET的作用 660 24.2 使用LINQ to DataSet编程 660 24.3 使用LINQ to SQL编程 665 24.4 使用sqlmetal.exe生成实体类 669 24.5 使用Visual Studio 2008建立实体类 674 24.6 使用LINQ to XML操作XML文档 676 24.7 在内存文档中导航 680 24.8 小结 682 第25章 WCF 683 25.1 各种分布式计算API 683 25.2 WCF的作用 688 25.3 WCF核心程序集 690 25.4 Visual Studio WCF项目模板 691 25.5 WCF应用程序的基本构成 692 25.6 WCF的ABC 693 25.7 构建WCF服务 697 25.8 承载WCF服务 700 25.9 构建WCF客户端应用程序 706 25.10 使用WCF服务库项目模板 710 25.11 以Windows服务承载WCF服务 712 25.12 异步调用服务 716 25.13 定义WCF数据契约 717 25.14 小结 722 第27章 Windows Forms编程 754 27.1 Windows Forms 命名空间 754 27.2 创建一个简单的Windows Forms 程序(不用IDE) 755 27.3 Visual Studio Windows Forms项目模板 759 27.4 剖析Form 764 27.5 响应鼠标活动 769 27.6 响应键盘活动 771 27.7 设计对话框 772 27.8 通过GDI+呈现图形数据 778 27.9 创建一个完整的Windows Forms应用程序 782 27.10 小结 788 虽然法律没有具体规定不可上传出物电子,如侵犯您的利益,请与本人或管理员联系删除资源;纸质起来更舒服,请购买正图书

16,547

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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