如题。就像VB一开始就有的那种对话框一样。但是没有主窗体。
代码如下:
#include<windows.h>bool CALLBACK DlgProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdParam, int nCmdShow)
{
HWND hWnd;
DialogBox(hInst, "IDD_DIALOG1", NULL, (DLGPROC)DlgProc); return 0;
}bool CALLBACK DlgProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch(Message)
{
case WM_INITDIALOG:
return true;
case WM_COMMAND:
if(LOWORD(wParam)==IDOK||LOWORD(wParam)==IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return true;
}
break;
}
return false;
}对话框在资源文件resource.h中建立IDD_DIALOG1 DIALOG 0, 0, 380, 218
STYLE WS_CAPTION | WS_SYSMENU
CAPTION "Test Dialog"
BEGIN
DEFPUSHBUTTON "确定",IDOK,103,183,50,14
PUSHBUTTON "取消",IDCANCEL,209,183,50,14
CTEXT "Hello World",IDC_STATIC,75,53,220,69,SS_CENTERIMAGE |
SS_ENDELLIPSIS | WS_BORDER,WS_EX_CLIENTEDGE
END用vc .net 2003编译没有问题,但是运行的时候却没有生成对话框,程序直接返回。
代码如下:
#include<windows.h>bool CALLBACK DlgProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdParam, int nCmdShow)
{
HWND hWnd;
DialogBox(hInst, "IDD_DIALOG1", NULL, (DLGPROC)DlgProc); return 0;
}bool CALLBACK DlgProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch(Message)
{
case WM_INITDIALOG:
return true;
case WM_COMMAND:
if(LOWORD(wParam)==IDOK||LOWORD(wParam)==IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return true;
}
break;
}
return false;
}对话框在资源文件resource.h中建立IDD_DIALOG1 DIALOG 0, 0, 380, 218
STYLE WS_CAPTION | WS_SYSMENU
CAPTION "Test Dialog"
BEGIN
DEFPUSHBUTTON "确定",IDOK,103,183,50,14
PUSHBUTTON "取消",IDCANCEL,209,183,50,14
CTEXT "Hello World",IDC_STATIC,75,53,220,69,SS_CENTERIMAGE |
SS_ENDELLIPSIS | WS_BORDER,WS_EX_CLIENTEDGE
END用vc .net 2003编译没有问题,但是运行的时候却没有生成对话框,程序直接返回。
解决方案 »
- 打开ftp异常求助?
- 调试窗口的auto标签(就是可以看上下文变量值的那个标签)不小心关掉了,怎么再打开?
- 请问谁知道slimak的email或其他联系方式?请问版主能否查询?
- 为什么都是大写?
- 奇怪的问题??我试图在我的对话框中改变鼠标光标不起作用~??
- 我找到一个程序,用sdk写的,界面是英文的,我把它换成中文,就乱码了
- 简单问题
- 老难题,ocx如何获取IE关闭的消息
- Vc6 代码区域上方的Context和Definition框丢失
- MFC 两个listctrl ,怎么比较其内容
- 只有这些分了,各位老大笑纳 --关于wince 和telnet
- IWebBrowser2::Navigate 的问题
改为
DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DlgProc);
#define IDD_DAILOG1 100
在你的cpp文件中加上
#include "resource.h"
#include "resource.h"
....
DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DlgProc);
//下面是一个完整的Dlg sdk程序 其中 IDD_DIALOG 是你的对话框资源 ID
//Alon
/**********************************************/
/* 显示 Dialog Box */
/**********************************************/
#include <windows.h>
#include "resource.h"// 函数类型说明
LRESULT CALLBACK MainDialogProc( HWND, UINT, WPARAM, LPARAM );// Windows 主函数
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG),NULL,(DLGPROC)MainDialogProc);
return TRUE;
}// Windows 事件处理
LRESULT CALLBACK MainDialogProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{
//消息的处理,我想你要的就是这里了
switch(message)
{
case WM_COMMAND: //IDC_CLOSE 是我在对话框中加入的一个按钮的ID 也可以关闭
if (LOWORD(wParam)==IDOK) PostQuitMessage(0);
return TRUE;
break;
case WM_CLOSE: //关闭在这里
EndDialog(hDlg, TRUE);
return TRUE;
break;
}
return FALSE;
}
DialogBox(hInst, "Dialog1", NULL, (DLGPROC)DlgProc);
这样可以没问题 谁规定一定要写成
MAKEINTRESOURCE(IDD_DIALOG1)这样啊不过你在RC中也得用"IDD_DIALOG1"而不是IDD_DIALOG1
hwnd = DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DlgProc);
ShowWindow(hwnd, SW_SHOW);
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("Demo") ;
HWND hwnd ;
MSG msg ;
RECT rect ;
WNDCLASS wndclass ;
int iError; wndclass.style = 0 ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = NULL ;
wndclass.hbrBackground = NULL ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR|MB_OK) ;
return 0 ;
} hwnd = CreateWindow (szAppName, TEXT ("Demo"),
WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, hMenu, hInstance, NULL) ;
hwndDlg = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DEMODLG), hwnd, demoDlgProc); GetWindowRect (hwndDlg, &rect) ;
AdjustWindowRect (&rect, WS_CAPTION | WS_BORDER, FALSE) ; SetWindowPos (hwnd, NULL, 0, 0, rect.right - rect.left,
rect.bottom - rect.top, SWP_NOMOVE) ; ShowWindow (hwndDlg, SW_SHOW) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; // Normal message loop when a modeless dialog box is used. while (GetMessage (&msg, NULL, 0, 0))
{
if (hwndDlg == 0 || !IsDialogMessage (hwndDlg, &msg))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
}
return msg.wParam ;
}