Click here to Skip to main content
15,894,317 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionBITMAPINFOHEADER working in Debug but not in Release Pin
002comp19-Aug-12 21:15
002comp19-Aug-12 21:15 
AnswerRe: BITMAPINFOHEADER working in Debug but not in Release Pin
Endurion_19-Aug-12 22:39
Endurion_19-Aug-12 22:39 
GeneralRe: BITMAPINFOHEADER working in Debug but not in Release Pin
002comp19-Aug-12 22:43
002comp19-Aug-12 22:43 
GeneralRe: BITMAPINFOHEADER working in Debug but not in Release Pin
Endurion_20-Aug-12 5:01
Endurion_20-Aug-12 5:01 
AnswerRe: BITMAPINFOHEADER working in Debug but not in Release [Solved] but need one Suggestion Pin
002comp19-Aug-12 22:41
002comp19-Aug-12 22:41 
AnswerRe: BITMAPINFOHEADER working in Debug but not in Release Pin
CPallini19-Aug-12 23:00
mveCPallini19-Aug-12 23:00 
QuestionModeless Dialog box using win32 API only Pin
csrss19-Aug-12 7:14
csrss19-Aug-12 7:14 
AnswerRe: Modeless Dialog box using win32 API only Pin
pasztorpisti19-Aug-12 12:49
pasztorpisti19-Aug-12 12:49 
First, you probably have a main message loop somewhere that dispatches messages to every window (and dialog), not only to a specified window:
C++
// global variable, it contains the handle of all dialogs
std::vector<HWND> g_Dialogs;

// your main loop somewhere near your main()
MSG msg;
while (::GetMessage(&msg, NULL, 0, 0)) 
{
    // copying the global array because it might be modified during iteration
    // and we iterate over the copy...
    std::vector<HWND> dialogs(g_Dialogs);
    bool was_dialog_message = false;
    for (size_t i=0,e=dialogs.size(); i<e; ++i)
    {
        if (::IsWindow(dialogs[i]) && ::IsDialogMessage(dialogs[i], &msg))
        {
            was_dialog_message = true;
            break;
        }
    }
    if (!was_dialog_message)
    { 
        ::TranslateMessage(&msg); 
        ::DispatchMessage(&msg); 
    }
}


When you want a modeless dialog, you just create it with CreateDialog(), put its handle to g_Dialogs and thats it. You don't have to run a local message loop like with modal messageboxes, especially not with a specified single window handle (m_hWnd). A modeless dialog works almost like a normal window that you created with CreateWindowEx(), you just have to handle it a bit specially with IsDialogMessage(). In a modeless multi-windowed gui program its always enough one message loop - the main message loop pumps the messages for all modeless windows.

EDIT: warning: while you are iterating over the g_Dialogs vector, the contents of the vector might change because you dispatch messages to dialogs that can respond to those messages by creating/deleting dialogs! To avoid bugs caused by this you either use a custom container that can be modified during iteration or solve it somehow else. One good solution can be copying the vector before iteration and iterating on the copied vector, still some HWNDs might become invalid during iteration so before IsDialogMessage() it might be wise to call IsWindow() on the handles.

modified 19-Aug-12 19:12pm.

GeneralRe: Modeless Dialog box using win32 API only Pin
csrss19-Aug-12 21:03
csrss19-Aug-12 21:03 
GeneralRe: Modeless Dialog box using win32 API only Pin
pasztorpisti20-Aug-12 1:49
pasztorpisti20-Aug-12 1:49 
Generaljust want to find a friend Pin
cnmqy19-Aug-12 0:56
cnmqy19-Aug-12 0:56 
GeneralRe: just want to find a friend Pin
Richard MacCutchan19-Aug-12 2:37
mveRichard MacCutchan19-Aug-12 2:37 
QuestionHow to distinguish the broad packets or normal packets? Pin
wangningyu17-Aug-12 17:19
wangningyu17-Aug-12 17:19 
AnswerRe: How to distinguish the broad packets or normal packets? Pin
pasztorpisti18-Aug-12 0:33
pasztorpisti18-Aug-12 0:33 
AnswerRe: How to distinguish the broad packets or normal packets? Pin
Software_Developer18-Aug-12 3:56
Software_Developer18-Aug-12 3:56 
GeneralRe: How to distinguish the broad packets or normal packets? Pin
wangningyu22-Aug-12 21:11
wangningyu22-Aug-12 21:11 
QuestionCan AdjustTokenPrivileges elevate the privilege as Administrator? Pin
Falconapollo17-Aug-12 5:39
Falconapollo17-Aug-12 5:39 
AnswerRe: What's worong with Google Code? Pin
Richard MacCutchan17-Aug-12 6:55
mveRichard MacCutchan17-Aug-12 6:55 
AnswerRe: Can AdjustTokenPrivileges elevate the privilege as Administrator? Pin
Richard Andrew x6418-Aug-12 6:27
professionalRichard Andrew x6418-Aug-12 6:27 
QuestionC Functions and Macros Pin
roza12317-Aug-12 1:48
roza12317-Aug-12 1:48 
AnswerRe: C Functions and Macros PinPopular
Richard MacCutchan17-Aug-12 1:55
mveRichard MacCutchan17-Aug-12 1:55 
GeneralRe: C Functions and Macros Pin
roza12317-Aug-12 2:03
roza12317-Aug-12 2:03 
GeneralRe: C Functions and Macros Pin
Richard MacCutchan17-Aug-12 2:22
mveRichard MacCutchan17-Aug-12 2:22 
AnswerRe: C Functions and Macros Pin
Malli_S17-Aug-12 2:41
Malli_S17-Aug-12 2:41 
QuestionRe: C Functions and Macros Pin
David Crow17-Aug-12 2:43
David Crow17-Aug-12 2:43 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.