不使用资源的对话框

原创 2007年10月14日 22:28:00
void * Align(void * p)  //Align by DWORD(4)
{
    DWORD   dwVal;
    dwVal 
= (DWORD)p;
    dwVal 
+= 3;
    dwVal 
>>= 2;
    dwVal 
<<= 2;
    
return  (void *)dwVal;
}


#define INPUT_ID_EDT1    0x1001
#define INPUT_ID_BTN1    IDOK
#define INPUT_ID_BTN2    IDCANCEL

//    lParam -> 0:
BOOL CALLBACK InputProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    
static DWORD *p;
    
if (uMsg == WM_INITDIALOG)
    
{
        p 
= (DWORD *)lParam;
        ::SendMessage(::GetDlgItem(hwndDlg, INPUT_ID_EDT1), WM_SETFONT, (LPARAM)p[
4], MAKELPARAM(TRUE, 0));
        ::SendMessage(::GetDlgItem(hwndDlg, INPUT_ID_BTN1), WM_SETFONT, (LPARAM)p[
4], MAKELPARAM(TRUE, 0));
        ::SendMessage(::GetDlgItem(hwndDlg, INPUT_ID_BTN2), WM_SETFONT, (LPARAM)p[
4], MAKELPARAM(TRUE, 0));
        ::SetDlgItemText(hwndDlg, INPUT_ID_EDT1, (TCHAR 
*)p[0]);
        
return TRUE;   
    }

    
else if(uMsg == WM_COMMAND)
    
{
        
if(LOWORD(wParam) == IDOK)
        
{
            ::GetDlgItemText(hwndDlg, INPUT_ID_EDT1, (TCHAR 
*)p[1], p[2]);
            EndDialog (hwndDlg, IDOK);
            
return TRUE;
        }

        
if(LOWORD(wParam) == IDCANCEL)
        
{
            EndDialog (hwndDlg, IDCANCEL);
            
return TRUE;
        }

    }
   
    
else if ((uMsg == WM_SYSCOMMAND) && (wParam == SC_CLOSE)) 
    
{     
        EndDialog (hwndDlg, IDCANCEL);
        
return TRUE;
    }

    
return FALSE;
}


int GetInput(HWND hWnd, TCHAR *pCapt, TCHAR * pText, TCHAR * pOutBuf, DWORD dwBufSize)
{
    HFONT    hFont;
    LOGFONT    LogFont;
    WORD    
*p, *pdlgtemplate;
    
int     nchar;
    
int     nButW = 40, nButH = 12, nDis = 6;
    
int        nWidth = 120, nHeigh = 41;
    DWORD   lStyle 
= 0, lExStyle = 0;
    DWORD   dwMem[
5];
    DWORD    dwEdtStyle 
= WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | ES_LEFT | ES_AUTOHSCROLL;
    DWORD    dwEdtExStyle 
= WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE;
    DWORD    dwButStyle 
= WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT;
    hFont 
= (HFONT)::SendMessage(hWnd, WM_GETFONT, 00);
    GetObject(hFont, 
sizeof(LogFont), &LogFont);
    
//    LogFont.lfWeight ++;
    hFont = CreateFontIndirect(&LogFont);
    dwMem[
0= (DWORD)pText;
    dwMem[
1= (DWORD)pOutBuf;
    dwMem[
2= dwBufSize;
    dwMem[
3= (DWORD)hWnd;
    dwMem[
4= (DWORD)hFont;
    pdlgtemplate 
= p = (PWORD) LocalAlloc (LPTR, 1000);
    
///////////////////////   Init for DLGTEMPLATEEX     /////////////////////////////////
    lStyle = DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE;
    
*p++ = LOWORD (lStyle);             //style
    *p++ = HIWORD (lStyle);             //style
    *p++ = 0;                           // LOWORD (dwExtendedStyle)
    *p++ = 0;                           // HIWORD (dwExtendedStyle)
    *p++ = 3;                           // NumberOfItems
    *p++ = 0;                           // x
    *p++ = 0;                           // y
    *p++ = nWidth;                      // cx
    *p++ = nHeigh;                      // cy
    *p++ = 0;                           // Menu resource Name
    *p++ = 0;                           // Class Name
    TcharTowChar(pCapt, (PWSTR)p);      // title
    nchar = (int)wcslen((LPWSTR)p) + 1;
    p 
+= nchar;                         // title
    p = (WORD *)Align(p);               // Align DWORD boundary 
    ///////////////////////   Init for DLGITEMTEMPLATEEX  Edit  ////////////////////////
    *p++ = LOWORD (dwEdtStyle);         //style
    *p++ = HIWORD (dwEdtStyle);            //style
    *p++ = LOWORD (dwEdtExStyle);       // LOWORD (dwExtendedStyle)
    *p++ = HIWORD (dwEdtExStyle);       // HIWORD (dwExtendedStyle) 
    *p++ = nDis;                        // x
    *p++ = nDis;                        // y
    *p++ = nWidth - 2*nDis;             // cx
    *p++ = nHeigh - 3*nDis - nButH;     // cy
    *p++ = INPUT_ID_EDT1;               // ID
    *p++ = (WORD)0xffff;                //Class Name Or Class Ary
    *p++ = (WORD)0x0081;                //0x0080 Edit 
    nchar = ctowc(("OK"), (PWSTR)p);    //title
    p += nchar;                         //title
    *p++ = 0;                           //extraCount
    p = (WORD *)Align(p);               // Align DWORD boundary 
    ///////////////////////   DLGITEMTEMPLATEEX OK Button   ///////////////////////////
    *p++ = LOWORD (dwButStyle);             //style
    *p++ = HIWORD (dwButStyle);             //style
    *p++ = LOWORD (lExStyle);           // LOWORD (dwExtendedStyle)
    *p++ = HIWORD (lExStyle);           // HIWORD (dwExtendedStyle)
    *p++ = nDis;                        // x
    *p++ = nHeigh - 1*nDis - nButH;     // y
    *p++ = nButW;                       // cx
    *p++ = nButH;                       // cy
    *p++ = IDOK;                        // ID
    *p++ = (WORD)0xffff;                //Class Name Or Class Arry
    *p++ = (WORD)0x0080;                //0x0080 Button 
    nchar = ctowc(("OK"), (PWSTR)p);    //title
    p += nchar;                         //title
    *p++ = 0;                           //extraCount
    p = (WORD *)Align(p);               //Align DWORD boundary 
    ///////////////////////   Init for DLGITEMTEMPLATEEX  Cancel  Button  //////////////
    *p++ = LOWORD (dwButStyle);             //style
    *p++ = HIWORD (dwButStyle);             //style
    *p++ = LOWORD (lExStyle);           // LOWORD (dwExtendedStyle)
    *p++ = HIWORD (lExStyle);           // HIWORD (dwExtendedStyle)
    *p++ = nWidth - 1*nDis - nButW;     // x
    *p++ = nHeigh - 1*nDis - nButH;     // y
    *p++ = nButW;                       // cx
    *p++ = nButH;                       // cy
    *p++ = IDCANCEL;                    // ID
    *p++ = (WORD)0xffff;                //Class Name Or Class Arry
    *p++ = (WORD)0x0080;                //0x0080 Button 
    nchar = ctowc(("Cancel"), (PWSTR)p);//title
    p += nchar;                         //title
    *p++ = 0;                           //extraCount
    p = (WORD *)Align(p);               //Align DWORD boundary
    int nRet = (int)DialogBoxIndirectParam((HINSTANCE)::GetWindowLong(hWnd, GWL_HINSTANCE), 
        (LPDLGTEMPLATE)pdlgtemplate, hWnd, (DLGPROC) InputProc, (LPARAM)dwMem);
    DeleteObject(hFont);
    LocalFree (LocalHandle (pdlgtemplate));
    
return nRet;
}


int GetInputs(HWND hWnd, TCHAR *pCapt, TCHAR * pText, TCHAR * pOutBuf, DWORD dwBufSize, int nWidth, int nHeigh)
{
    HFONT    hFont;
    LOGFONT    LogFont;
    WORD    
*p, *pdlgtemplate;
    
int     nchar;
    
int     nButW = 40, nButH = 12, nDis = 6;
    DWORD   lStyle 
= 0, lExStyle = 0;
    DWORD   dwMem[
5];
    DWORD    dwEdtStyle 
= WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | ES_LEFT | ES_AUTOHSCROLL | ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL;
    DWORD    dwEdtExStyle 
= WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE;
    DWORD    dwButStyle 
= WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT;
    hFont 
= (HFONT)::SendMessage(hWnd, WM_GETFONT, 00);
    GetObject(hFont, 
sizeof(LogFont), &LogFont);
//    LogFont.lfWeight ++;
    hFont = CreateFontIndirect(&LogFont);
    dwMem[
0= (DWORD)pText;
    dwMem[
1= (DWORD)pOutBuf;
    dwMem[
2= dwBufSize;
    dwMem[
3= (DWORD)hWnd;
    dwMem[
4= (DWORD)hFont;

    pdlgtemplate 
= p = (PWORD) LocalAlloc (LPTR, 1000);
    
///////////////////////   Init for DLGTEMPLATEEX     /////////////////////////////////
    lStyle = DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE;
    
*p++ = LOWORD (lStyle);             //style
    *p++ = HIWORD (lStyle);             //style
    *p++ = 0;                           // LOWORD (dwExtendedStyle)
    *p++ = 0;                           // HIWORD (dwExtendedStyle)
    *p++ = 3;                           // NumberOfItems
    *p++ = 0;                           // x
    *p++ = 0;                           // y
    *p++ = nWidth;                      // cx
    *p++ = nHeigh;                      // cy
    *p++ = 0;                           // Menu resource Name
    *p++ = 0;                           // Class Name
    TcharTowChar(pCapt, (PWSTR)p);      // title
    nchar = (int)wcslen((LPWSTR)p) + 1;
    p 
+= nchar;                         // title
    p = (WORD *)Align(p);               // Align DWORD boundary 
    ///////////////////////   Init for DLGITEMTEMPLATEEX  Edit  ////////////////////////
    *p++ = LOWORD (dwEdtStyle);         //style
    *p++ = HIWORD (dwEdtStyle);         //style
    *p++ = LOWORD (dwEdtExStyle);       // LOWORD (dwExtendedStyle)
    *p++ = HIWORD (dwEdtExStyle);       // HIWORD (dwExtendedStyle) 
    *p++ = nDis;                        // x
    *p++ = nDis;                        // y
    *p++ = nWidth - 2*nDis;             // cx
    *p++ = nHeigh - 3*nDis - nButH;     // cy
    *p++ = INPUT_ID_EDT1;               // ID
    *p++ = (WORD)0xffff;                //Class Name Or Class Ary
    *p++ = (WORD)0x0081;                //0x0080 Edit 
    nchar = ctowc(("OK"), (PWSTR)p);    //title
    p += nchar;                         //title
    *p++ = 0;                           //extraCount
    p = (WORD *)Align(p);               // Align DWORD boundary 
    ///////////////////////   DLGITEMTEMPLATEEX OK Button   ///////////////////////////
    *p++ = LOWORD (dwButStyle);         //style
    *p++ = HIWORD (dwButStyle);         //style
    *p++ = LOWORD (lExStyle);           // LOWORD (dwExtendedStyle)
    *p++ = HIWORD (lExStyle);           // HIWORD (dwExtendedStyle)
    *p++ = nDis;                        // x
    *p++ = nHeigh - 1*nDis - nButH;     // y
    *p++ = nButW;                       // cx
    *p++ = nButH;                       // cy
    *p++ = IDOK;                        // ID
    *p++ = (WORD)0xffff;                //Class Name Or Class Arry
    *p++ = (WORD)0x0080;                //0x0080 Button 
    nchar = ctowc(("OK"), (PWSTR)p);    //title
    p += nchar;                         //title
    *p++ = 0;                           //extraCount
    p = (WORD *)Align(p);               //Align DWORD boundary 
    ///////////////////////   Init for DLGITEMTEMPLATEEX  Cancel  Button  //////////////
    *p++ = LOWORD (dwButStyle);         //style
    *p++ = HIWORD (dwButStyle);         //style
    *p++ = LOWORD (lExStyle);           // LOWORD (dwExtendedStyle)
    *p++ = HIWORD (lExStyle);           // HIWORD (dwExtendedStyle)
    *p++ = nWidth - 1*nDis - nButW;     // x
    *p++ = nHeigh - 1*nDis - nButH;     // y
    *p++ = nButW;                       // cx
    *p++ = nButH;                       // cy
    *p++ = IDCANCEL;                    // ID
    *p++ = (WORD)0xffff;                //Class Name Or Class Arry
    *p++ = (WORD)0x0080;                //0x0080 Button 
    nchar = ctowc(("Cancel"), (PWSTR)p);//title
    p += nchar;                         //title
    *p++ = 0;                           //extraCount
    p = (WORD *)Align(p);               //Align DWORD boundary
    int nRet = (int)DialogBoxIndirectParam((HINSTANCE)::GetWindowLong(hWnd, GWL_HINSTANCE), 
        (LPDLGTEMPLATE)pdlgtemplate, hWnd, (DLGPROC) InputProc, (LPARAM)dwMem);
    DeleteObject(hFont);
    LocalFree (LocalHandle (pdlgtemplate));
    
return nRet;
}

#undef  INPUT_ID_EDT1
#undef    INPUT_ID_BTN1
#undef    INPUT_ID_BTN2

#define INPUT_ID_RADIO    0x1001
#define INPUT_ID_BTN1    IDOK
#define INPUT_ID_BTN2    IDCANCEL

//    lParam -> 0:
BOOL CALLBACK SelectProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    
static DWORD *p;
    DWORD        i;
    
if (uMsg == WM_INITDIALOG)
    
{
        p 
= (DWORD *)lParam;
        ::SendMessage(::GetDlgItem(hwndDlg, INPUT_ID_BTN1), WM_SETFONT, (LPARAM)p[
4], MAKELPARAM(TRUE, 0));
        ::SendMessage(::GetDlgItem(hwndDlg, INPUT_ID_BTN2), WM_SETFONT, (LPARAM)p[
4], MAKELPARAM(TRUE, 0));

        
for(i=0; i<p[1]; i++)
            ::SendMessage(::GetDlgItem(hwndDlg, INPUT_ID_RADIO
+i), WM_SETFONT, (LPARAM)p[4], MAKELPARAM(TRUE, 0));
        CheckRadioButton(hwndDlg, INPUT_ID_RADIO, INPUT_ID_RADIO
+p[1]-1, INPUT_ID_RADIO);

        
return TRUE;   
    }

    
else if(uMsg == WM_COMMAND)
    
{
        
if(LOWORD(wParam) == IDOK)
        
{
            
for(i=0; i<p[1]; i++)
            
{
                
if(IsDlgButtonChecked(hwndDlg, INPUT_ID_RADIO+i))
                
{
                    EndDialog (hwndDlg, i);
                    
return TRUE;
                }

            }

            EndDialog (hwndDlg, 
-1);
            
return TRUE;
        }

        
if(LOWORD(wParam) == IDCANCEL)
        
{
            EndDialog (hwndDlg, 
-1);
            
return TRUE;
        }

    }
   
    
else if ((uMsg == WM_SYSCOMMAND) && (wParam == SC_CLOSE)) 
    
{     
        EndDialog (hwndDlg, 
-1);
        
return TRUE;
    }

    
return FALSE;
}


//NotifyText[nCount][nSize]        Ret: -1 -> Cancel 0-X:Index
int GetSelect(HWND hWnd, TCHAR * pCapt, TCHAR *pNotifyText, int nCount, int nSize)
{
    _bstr_t    bStrTmp;
    HFONT    hFont;
    LOGFONT    LogFont;
    WORD    
*p, *pdlgtemplate;
    
int     nchar, i;
    
int     nButW = 40, nButH = 12, nDis = 6;
    
int        nWidth = 120, nHeigh = 41;
    DWORD   lStyle 
= 0, lExStyle = 0;
    DWORD   dwMem[
5];
    DWORD    dwRdoStyle 
= WS_CHILDWINDOW | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_TABSTOP;
    DWORD    dwRdoExStyle 
= WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_NOPARENTNOTIFY;
    DWORD    dwButStyle 
= WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT;
    hFont 
= (HFONT)::SendMessage(hWnd, WM_GETFONT, 00);
    GetObject(hFont, 
sizeof(LogFont), &LogFont);
    
//    LogFont.lfWeight ++;
    hFont = CreateFontIndirect(&LogFont);
    dwMem[
0= (DWORD)pNotifyText;
    dwMem[
1= (DWORD)nCount;
    dwMem[
2= 1024;
    dwMem[
3= (DWORD)hWnd;
    dwMem[
4= (DWORD)hFont;

    nHeigh 
+= (nCount-1* (nButH + nDis/3);

    pdlgtemplate 
= p = (PWORD) LocalAlloc (LPTR, 1000);
    
///////////////////////   Init for DLGTEMPLATEEX     /////////////////////////////////
    lStyle = DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE;
    
*p++ = LOWORD (lStyle);             //style
    *p++ = HIWORD (lStyle);             //style
    *p++ = 0;                           // LOWORD (dwExtendedStyle)
    *p++ = 0;                           // HIWORD (dwExtendedStyle)
    *p++ = nCount+2;                           // NumberOfItems
    *p++ = 0;                           // x
    *p++ = 0;                           // y
    *p++ = nWidth;                      // cx
    *p++ = nHeigh;                      // cy
    *p++ = 0;                           // Menu resource Name
    *p++ = 0;                           // Class Name
    bStrTmp = pCapt;
    wcscpy((wchar_t 
*)p, bStrTmp);      // title
    p += bStrTmp.length()+1;            // title
    p = (WORD *)Align(p);               // Align DWORD boundary 

    
///////////////////////   Init for DLGITEMTEMPLATEEX  Radio  ////////////////////////
    *p++ = LOWORD (dwRdoStyle | WS_GROUP);         //style
    *p++ = HIWORD (dwRdoStyle | WS_GROUP);            //style
    *p++ = LOWORD (dwRdoExStyle);       // LOWORD (dwExtendedStyle)
    *p++ = HIWORD (dwRdoExStyle);       // HIWORD (dwExtendedStyle) 
    *p++ = nDis;                        // x
    *p++ = nDis;                        // y
    *p++ = nWidth - 2*nDis;             // cx
    *p++ = nButH;                        // cy
    *p++ = INPUT_ID_RADIO;               // ID
    *p++ = (WORD)0xffff;                //Class Name Or Class Ary
    *p++ = (WORD)0x0080;                //0x0080 Radio(Button) 
    bStrTmp = pNotifyText;
    wcscpy((wchar_t 
*)p, bStrTmp);      //title
    p += bStrTmp.length()+1;            //title
    *p++ = 0;                           //extraCount
    p = (WORD *)Align(p);               // Align DWORD boundary 

    
for(i=1; i<nCount; i++)
    
{
        
*p++ = LOWORD (dwRdoStyle);         //style
        *p++ = HIWORD (dwRdoStyle);            //style
        *p++ = LOWORD (dwRdoExStyle);       // LOWORD (dwExtendedStyle)
        *p++ = HIWORD (dwRdoExStyle);       // HIWORD (dwExtendedStyle) 
        *p++ = nDis;                        // x
        *p++ = nDis + i*(nButH + nDis/3);   // y
        *p++ = nWidth - 2*nDis;             // cx
        *p++ = nButH;                        // cy
        *p++ = INPUT_ID_RADIO + i;          // ID
        *p++ = (WORD)0xffff;                //Class Name Or Class Ary
        *p++ = (WORD)0x0080;                //0x0080 Radio(Button) 
        bStrTmp = pNotifyText+i*nSize;
        wcscpy((wchar_t 
*)p, bStrTmp);      //title
        p += bStrTmp.length()+1;            //title
        *p++ = 0;                           //extraCount
        p = (WORD *)Align(p);               // Align DWORD boundary 
    }


    
///////////////////////   DLGITEMTEMPLATEEX OK Button   ///////////////////////////
    *p++ = LOWORD (dwButStyle);         //style
    *p++ = HIWORD (dwButStyle);         //style
    *p++ = LOWORD (lExStyle);           // LOWORD (dwExtendedStyle)
    *p++ = HIWORD (lExStyle);           // HIWORD (dwExtendedStyle)
    *p++ = nDis;                        // x
    *p++ = nHeigh - 1*nDis - nButH;     // y
    *p++ = nButW;                       // cx
    *p++ = nButH;                       // cy
    *p++ = IDOK;                        // ID
    *p++ = (WORD)0xffff;                //Class Name Or Class Arry
    *p++ = (WORD)0x0080;                //0x0080 Button 
    nchar = ctowc(("OK"), (PWSTR)p);    //title
    p += nchar;                         //title
    *p++ = 0;                           //extraCount
    p = (WORD *)Align(p);               //Align DWORD boundary 
    ///////////////////////   Init for DLGITEMTEMPLATEEX  Cancel  Button  //////////////
    *p++ = LOWORD (dwButStyle);             //style
    *p++ = HIWORD (dwButStyle);             //style
    *p++ = LOWORD (lExStyle);           // LOWORD (dwExtendedStyle)
    *p++ = HIWORD (lExStyle);           // HIWORD (dwExtendedStyle)
    *p++ = nWidth - 1*nDis - nButW;     // x
    *p++ = nHeigh - 1*nDis - nButH;     // y
    *p++ = nButW;                       // cx
    *p++ = nButH;                       // cy
    *p++ = IDCANCEL;                    // ID
    *p++ = (WORD)0xffff;                //Class Name Or Class Arry
    *p++ = (WORD)0x0080;                //0x0080 Button 
    nchar = ctowc(("Cancel"), (PWSTR)p);//title
    p += nchar;                         //title
    *p++ = 0;                           //extraCount
    p = (WORD *)Align(p);               //Align DWORD boundary
    int nRet = (int)DialogBoxIndirectParam((HINSTANCE)::GetWindowLong(hWnd, GWL_HINSTANCE), 
        (LPDLGTEMPLATE)pdlgtemplate, hWnd, (DLGPROC) SelectProc, (LPARAM)dwMem);
    DeleteObject(hFont);
    LocalFree (LocalHandle (pdlgtemplate));
    
return nRet;
}


#undef  INPUT_ID_RADIO
#undef    INPUT_ID_BTN1
#undef    INPUT_ID_BTN2

动态库中使用对话框资源

在CSDN论坛上最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题。这里我们从Win32DLL和MFC DLL两个方面来分析并解决这个问题。 ...
  • rankun1
  • rankun1
  • 2016年01月30日 16:44
  • 2248

MFC中对话框资源的复制

在工程中导入已建好的对话框,方法有三:   法一:   1、首先要生成一个*.ogx的文件。    方法:打开包含有所要加的对话框资源的工程(别的工程)。     ...
  • xin_yu_xin
  • xin_yu_xin
  • 2014年09月03日 15:02
  • 6025

[MFC]对话框创建的基本步骤、定义对话框模板

1. 对话框的基本功能:     1) 对话框是一种特殊的窗口,主要用于响应用户的输入,大部分空间都应放在对话框中;     2) 对话框的创建比普通窗口简单的多,可以直接在资源脚本.rc文件中通过脚...
  • Lirx_Tech
  • Lirx_Tech
  • 2015年09月01日 21:26
  • 2063

PE总结 – 资源表

PE总结 – 资源表
  • chenlycly
  • chenlycly
  • 2016年11月28日 15:46
  • 437

在DLL中使用对话框资源

在CSDN论坛上最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题。这里我们从Win32 DLL和MFC DLL两个方面来分析并解决这个问题。 ...
  • woshibendangao
  • woshibendangao
  • 2015年01月19日 10:22
  • 2428

vs2010单文档对话框窗口界面设置

在VS2010单文档工程中,
  • a904235765
  • a904235765
  • 2014年09月01日 11:02
  • 3291

exe调用dll中的对话框防资源冲突解决之道

在编写MFC应用程序时,有时我们希望将对话框封装在dll动态库中。但当exe调用dll中对话框时: 程序首先检测exe中的资源如果存在对应的对话框ID,那么dll中的对话框将采用exe中的资源进行创建...
  • zhouschina
  • zhouschina
  • 2013年09月23日 20:49
  • 2202

VS2013/MFC编程入门之五(对话框:创建对话框模板和修改对话框属性)

在上一讲中介绍了MFC的消息映射机制,属于原理方面的知识。对于VC++编程入门学习者来说可能有些抽象,本文会把消息映射的知识渗透到后面的教程中。本节开始为大家讲解偏应用的知识-创建对话框。   ...
  • zhaoyinhui0802
  • zhaoyinhui0802
  • 2016年11月23日 16:32
  • 4442

Wxwidget 动态加载资源文件

一.创建自己的资源文件 你可以从一个xml文件中加载对话框,frame窗口,菜单条,工具条等等。不用c++代码去实现,这符合代码界面和代码分离的原则。我们可以使用DialogBlocks,XRCed...
  • BXD1314
  • BXD1314
  • 2016年08月15日 16:14
  • 433

VS2005下手动添加的对话框如…

原文地址:VS2005下手动添加的对话框如何增加OnInitDialog函数作者:cranboy 在VS2005中,用MFC向导创建的对话框会自动生成OnInitDialog()函数。但是手动添加的对...
  • linzi0
  • linzi0
  • 2014年04月01日 14:49
  • 919
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:不使用资源的对话框
举报原因:
原因补充:

(最多只允许输入30个字)