在win32 application 编程创建一个模态对话框,我用DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),hwnd,(DLGPROC)DlgProc);
并且DlgProc函数已经定义为BOOL CALLBACK DlgProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lParam),资源IDD_DIALOG1已经加入,但程序能够通过编译不能通过连接,提示错误DlgProc函数缺少四个参数,但此处我用到的是对话框处理函数的地址,希望高手能指出小弟的错误,不胜感激!
并且DlgProc函数已经定义为BOOL CALLBACK DlgProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lParam),资源IDD_DIALOG1已经加入,但程序能够通过编译不能通过连接,提示错误DlgProc函数缺少四个参数,但此处我用到的是对话框处理函数的地址,希望高手能指出小弟的错误,不胜感激!
解决方案 »
- MFC追踪代码的方法!
- 对excel的操作。。。。详细请进来再看。。。
- 明天立夏,CSDN提醒广大计算机从业者,夏季电脑安全使用。善意提醒,敬请留意。
- 为什么用CreateFontIndirect为对话框窗口创建字体没效果呢?步骤是...
- 关于线程句柄的问题, 请大家帮忙解释一下.
- 基于TCP/IP 的 MODBUS 协议,有谁做过
- 如何把.exe文件转换成.dll或.ocx文件,以供asp调用
- 请问,载入菜单资源的一个问题
- 用vc做字符识别!menu中的消息映射?在线等待!
- 如何得到视的可视范围
- 问一个问题:这个Project用C#还是VC++更合适?
- 要疯了~用INSTALLSHIELD6.22做的安装程序,在开始—>程序菜单中创建快捷方式时怎样加我自己的图标啊?
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
error C2664: 'DialogBoxParamA' : cannot convert parameter 4 from 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' to 'int (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
#include<windows.h>
#include "Resource.h"BOOL CALLBACK AboutDlgProc (HWND,UINT,WPARAM,LPARAM) ;int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,
PSTR szCmdLine,int iCmdShow)
{
DialogBox (hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,AboutDlgProc);
return 0;
}BOOL CALLBACK AboutDlgProc (HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG :
return TRUE ;
case WM_COMMAND :
switch (LOWORD(wParam))
{
case IDOK :
case IDCANCEL :
EndDialog (hDlg, 0) ;
return TRUE ;
}
break ;
}
return FALSE ;
}
#include "resource.h"
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
BOOL CALLBACK DlgProc(HWND,UINT WPARAM,LPARAM);
HMENU hmenu;
HINSTANCE hinst;
//HDIALOG hdialog;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
WNDCLASS wndclass;
HWND hwnd;
MSG message;
char lpszclassname[]="对话框";
char lpsztitlename[]="对话框事例程序";
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WndProc;
wndclass.lpszClassName=lpszclassname;
wndclass.lpszMenuName=NULL;
wndclass.style=0;
if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE;
} hmenu=LoadMenu(hInstance,MAKEINTRESOURCE(IDR_MENU1));
// hdialog=
hwnd=CreateWindow(lpszclassname,lpsztitlename,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,hmenu,hInstance,NULL);
ShowWindow(hwnd,nShowCmd);
UpdateWindow(hwnd);
hinst=hInstance;
while(GetMessage(&message,NULL,0,0))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
return message.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_NEW:
break;
case IDM_OPEN:
MessageBox(hwnd,"文件已经打开!","文件打开",MB_OK);
break;
case IDM_CLOSE:
break;
case IDM_SAVE:
MessageBox(hwnd,"文件保存成功!","文件保存",MB_OK);
break;
case IDM_SAVEAS:
break;
case IDM_EXIT:
SendMessage(hwnd,WM_DESTROY,0,0);
break;
case IDM_CUT:
break;
case IDM_COPY:
break;
case IDM_PASTE:
break;
case IDM_ABOUT:
DialogBox(hinst,MAKEINTRESOURCE(IDD_DIALOG1),hwnd,DlgProc);
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
BOOL CALLBACK DlgProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
EndDialog(hdlg,0);
return TRUE;
break;
}
break;
case WM_CLOSE:
EndDialog(hdlg,0);
return TRUE;
}
return 0;
}
thank you!