用C编程 对话框

用C语言可以实现对话框吗不是C++有个程序要实现几个参数的输入,用弹出对话框的方式。毕业设计,不是计算机专业的学生,老师说让用对话框的方式,很头大啊。。... 用C语言 可以实现对话框吗 不是C++

有个程序要实现 几个参数的 输入, 用弹出对话框的方式。

毕业设计,不是计算机专业的学生,老师说让 用对话框的方式,很头大啊。。
展开
 我来答
超大个萝呗
2011-04-15 · TA获得超过402个赞
知道小有建树答主
回答量:81
采纳率:0%
帮助的人:81.4万
展开全部
在C语言中嵌入汇编
#include <windows.h>
#include <stdio.h>
char format[] = "%s %s\n";
char hello[] = "Hello";
char world[] = "world";
HWND hwnd;
void main( void )
{
__asm
{
//push NULL
//call dword ptr GetModuleHandle
//mov hwnd,eax
push MB_OK
mov eax, offset world
push eax
mov eax, offset hello
push eax
push 0//说明此处不能将前面注释掉代码处得到的hwnd压栈,否则对话框弹不出来。
call dword ptr MessageBox
}
}
但是这个对话框只能实现输出,无法在对话框中输入

参考资料: http://www.examda.com/ncre2/C/fudao/20071102/091632509.html

匿名用户
2011-04-20
展开全部
,对一块没有权限的内存进行赋值
另外,站长团上有产品团购,便宜有保证
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鬼谷子1949
2011-04-14 · TA获得超过188个赞
知道答主
回答量:241
采纳率:0%
帮助的人:148万
展开全部
可以实现对话框。
windows平台就是 调用 win32API,
《win32编程》
追问
哥们能说的明白点吗   有 源代码吗??
我很外行的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hanzsim
2011-04-14 · TA获得超过1540个赞
知道小有建树答主
回答量:922
采纳率:0%
帮助的人:1081万
展开全部
明知道回答得不到分数,不忍看你走向误区,说上几句吧.
问你一下,你用的操作系统是什么?你认为Windows系统和Unix系统图形界面是一样的吗?不一样你的问题是针对着Windows系统还是Unix系统?
按一般来说,应该是Windows吧,那么,你见过Windows下运行的C编译器么?别提VC,全称叫Visual C++6.0,实际是是Visual Studio 98的一个模块.
只能说是VC支持C语言,但根本不是标准C,差老远了.
与标准C最接近的是TC2.0,它开发的程序是纯16应用程序的,而且是针对直接硬件级的.有它在,DOS是狗屎了,哈哈.高手可以直接越过DOS操作硬件.可能这也是MS开发Windows的原因吧.
你还能问出来C可以实现对话框这种问题吗?
当然,如果单纯从语法上,调用API实现对话框的语句是C格式的....可是...你拿任何一个标准C的编译器,能编译通过吗?只有VC!而VC编的程序还叫C的程序吗????
#include<windows.h>
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPCTSTR lpszCmdLine,iCmdShow)
{
WNDCLASSEX wcex;
MSG msg;
HWND hWnd;
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style=CS_HREDRAW|CS_VREDRAW;
wcex.cbClsExtra=0;
wcex.cbWndExtra=0;
wcex.hInstance=hInstance;
wcex.lpfnWndProc=(WNDPROC)WndProc;
wcex.hIcon=LoadIcon(hInstance,IDI_APPLICATION);
wcex.hIconSm=LoadIcon(hInstnce,IDI_APPLICATION);
wcex.hCursor=LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground=(HBRUSH)COLOR_WINDOW;
wcex.lpszMenuName=NULL;
wcex.lpszClassName="MyWindow";
RegisterClassEx(&wcex);
hWnd=CreateWindow("MyWindow","窗口标题",WS_OVERLAPPEDWINDOW,0,0,1024,768,NULL,0,hInstance,NULL);
if(hWnd==NULL)
{
return 0;
}
ShowWindow(hWnd,iCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.message;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_CREATE:
MessageBox(hWnd,"显示对话框了吧?","我的程序",MB_OK|MB_ICONINFORMATION);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd,message,wParam,lParam);
}
哥这是纯手打的,所谓的Window API程序框架.这还叫C程序吗?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-14
展开全部
1.resource.h文件
//////////////////////////////////////////////////////////////
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by Script1.rc
//
#define IDD_DIALOG1 101
#define IDC_USERNAME 1000
#define IDC_PASSWD 1001
#define IDC_STATIC -1

// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

///////////////////////////////////////////////////
2.Script1.rc文件
///////////////////////////////////////////
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// Chinese (中国) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 187, 94
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 10, "System"
BEGIN
EDITTEXT IDC_USERNAME,72,27,65,12,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWD,72,42,65,12,ES_AUTOHSCROLL
DEFPUSHBUTTON "登陆",IDOK,40,64,50,14
PUSHBUTTON "取消",IDCANCEL,94,64,50,14
LTEXT "用户名:",IDC_STATIC,34,28,35,12
LTEXT "用户登陆",IDC_STATIC,77,7,33,11
LTEXT "密 码:",IDC_STATIC,35,43,35,12
END

/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_DIALOG1, DIALOG
BEGIN
RIGHTMARGIN, 180
TOPMARGIN, 7
BOTTOMMARGIN, 87
END
END
#endif // APSTUDIO_INVOKED

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END

2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END

3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END

#endif // APSTUDIO_INVOKED

#endif // Chinese (中国) resources
/////////////////////////////////////////////////////////////////////////////

#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//

/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

/////////////////////////////////////////////////
3.windows.cpp文件
///////////////////////////////////////////
#include <windows.h>
#include "resource.h"

HINSTANCE hInst = NULL;

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

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nCmdShow)
{
HWND hWnd;
MSG msg;
char classname[]="FirstWnd";

WNDCLASSEX wce;
wce.cbSize = sizeof(WNDCLASSEX);
wce.style = CS_HREDRAW|CS_VREDRAW;
wce.lpfnWndProc = (WNDPROC)WndProc;
wce.cbClsExtra = 0;
wce.cbWndExtra = 0;
wce.hInstance = hInstance;
wce.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wce.hCursor = LoadCursor(NULL,IDC_ARROW);
wce.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wce.lpszMenuName = NULL;
wce.lpszClassName = classname;
wce.hIconSm = LoadIcon(NULL,IDI_APPLICATION);

if(!RegisterClassEx(&wce))
{
MessageBox(NULL,"Register class error!","Register",MB_OK|MB_ICONERROR);
return 0;
}

hInst = hInstance;

hWnd = CreateWindowEx(NULL,classname,"First Window",WS_OVERLAPPEDWINDOW,100,100,600,500,NULL,NULL,hInstance,NULL);

ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);

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

return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch(nMsg)
{
case WM_CREATE:
DialogBox(hInst,(LPCTSTR)IDD_DIALOG1,hWnd,(DLGPROC)LoginDlg);
break;
case WM_LBUTTONDOWN:
MessageBox(hWnd,"Hello World!","text",MB_OK);
break;
case WM_PAINT:
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_CLOSE:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd,nMsg,wParam,lParam);
}
return DefWindowProc(hWnd,nMsg,wParam,lParam);
}

LRESULT CALLBACK LoginDlg(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
char username[20];
char passwd[20];
switch(nMsg)
{
case WM_INITDIALOG:
SetWindowText(hWnd,"登录");
break;
case WM_COMMAND:
{
switch(wParam)
{
case IDOK:
{
GetWindowText(GetDlgItem(hWnd,IDC_USERNAME),username,20);
GetWindowText(GetDlgItem(hWnd,IDC_PASSWD),passwd,20);
if(!strcmp(username,"admin")&&!strcmp(passwd,"123456"))
{
EndDialog(hWnd,1);
}
else
{
SetWindowText(GetDlgItem(hWnd,IDC_USERNAME),"");
SetWindowText(GetDlgItem(hWnd,IDC_PASSWD),"");
MessageBox(hWnd,"用户名或者密码错误!!!\n请重新输入...","错误",MB_OK);
}
}
break;
case IDCANCEL:
EndDialog(hWnd,0);
DestroyWindow(GetParent(hWnd));
break;
}
}
break;
case WM_CLOSE:
EndDialog(hWnd,0);
DestroyWindow(GetParent(hWnd));
break;
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式