说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

请教对话框的创建

编辑:说三道四文库 发布时间:2018-02-25 02:16
HTML文档下载 WORD文档下载 PDF文档下载
在VC中不用MFC,直接创建一个空的Win32 Application,在主函数中用CreateDialog创建了一个对话框,上面有一个按钮,点击这个按钮时用DialogBox创建另外一个对话框,可第二个对话框是透明的,请问有谁碰到过这种情况吗?这可能是什么原因引起的呢?谢谢
贴源程序上来看看。。
// test.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "resource.h"
#include "windows.h"
#include "sipapi.h"
#include "shlobj.h"
#include "prsht.h"
#include "aygshell.h"

HINSTANCE g_hInstance;
HWND g_main;


BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
BOOL InitDialog(HWND hDlg);

BOOL InitResultDialog(HWND hDlg);
BOOL CALLBACK ResultDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR    lpCmdLine,
int       nCmdShow)
{
  // TODO: Place code here.
MSG msg;
HACCEL hAccelTable;
hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDD_DIALOG1));

g_hInstance = hInstance;
g_main = CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DialogProc);

ShowWindow(g_main, nCmdShow);
UpdateWindow(g_main);

// Main message loop:
while (GetMessage(&msg, NULL, 0, 0)) 
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

return msg.wParam;
}


BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
HDC hdc;
RECT rect;
PAINTSTRUCT ps;
LPNMHDR lpNotifyHeader;
int phoneindex = 0;

switch (uMsg)
{
     case WM_INITDIALOG:
 if(!InitDialog(hwndDlg))
 {
//EndDialog(hwndDlg,-1);
PostQuitMessage(0);
return FALSE;
 }
 return TRUE;
 //*

case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_BUTTON1:
HWND htemp;
htemp = CreateDialog(g_hInstance,MAKEINTRESOURCE(IDD_DIALOG2),g_main,(DLGPROC)ResultDlgProc);
ShowWindow(htemp, SW_SHOW);
UpdateWindow(htemp);
break;
case IDOK:
//EndDialog(hwndDlg, 1);
PostQuitMessage(0);
break;
}
return TRUE;
}
    return FALSE;

}




BOOL InitDialog(HWND hDlg)
{
// Create a Done button and size it.  
SHINITDLGINFO shidi;
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN |SHIDIF_EMPTYMENU;
shidi.hDlg = hDlg;
if(!SHInitDialog(&shidi))return FALSE;

return TRUE;
}


BOOL CALLBACK ResultDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
RECT rect;
PAINTSTRUCT ps;
LPNMHDR pnmh;
switch(message)
{
case WM_INITDIALOG:
 if(!InitResultDialog(hDlg))
 {
EndDialog(hDlg,-1);
return FALSE;
 }  
 //ShowWindow(hDlg, SW_SHOW);
      return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
EndDialog(hDlg,1);
return TRUE;
}
}
return TRUE;
}


BOOL InitResultDialog(HWND hDlg)
{
// Create a Done button and size it.  
SHINITDLGINFO shidi;
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN |SHIDIF_EMPTYMENU;
shidi.hDlg = hDlg;
if(!SHInitDialog(&shidi))return FALSE;

return TRUE;
}
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘