VC Win32对话框设计,我想做一个简单的登陆界面?为什么下面的代码老编译不通过?

BOOLCALLBACKLogIn(HWNDhDlg,WPARAMwParam,LPARAMlParam){switch(LOWORD(wParam))//不是应该跟控件... BOOL CALLBACK LogIn(HWND hDlg,WPARAM wParam,LPARAM lParam)
{
switch(LOWORD(wParam))//不是应该跟控件的IDC相关联么,为什么跟消息IDOK..相关联,况且系统又不知道//我按的哪个按钮,怎么处理消息?
{
case IDCANCEL:
{
EndDialog(hDlg,IDCANCEL);

}break;
case IDOK:
{

}break;
}
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
// DialogBox(hInstance,(LPCSTR)(IDD_DIALOG1),NULL,MainProc);
DialogBox(hInstance,(LPCSTR)(IDD_LOGIN),NULL,LogIn);

return 0;
}
//还有求大神解释一下他是怎么区分按钮的?我的意思是点击登录传递的消息会是什么??到底点击什么时候传递IDOK什么时候传递IDCANCEL?
展开
 我来答
intehel
推荐于2016-07-19 · TA获得超过1293个赞
知道大有可为答主
回答量:1601
采纳率:100%
帮助的人:1769万
展开全部

问题:

1、你的LogIn函数没有返回值;

2、LogIn函数作为对话框窗口过程,需要4个参数而不是三个;需要在第二个位置添加UINT uMsg参数,并需要返回INT_PTR类型,如下(手敲,可能有误,仅说明原理):

INT_PTR CALLBACK LogIn(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    switch(uMsg)
    {
        case WM_COMMAND:    //
            switch(LOWORD(wParam))
            {
                case IDCANCEL:
                    break;
                case IDOK:
                    break;
            }
            break;
        default:
            break;
    }
}

3、DialogBox函数的第二个参数需要使用MAKEINTRESOURCE宏进行转换;

4、建议多看MSDN。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式