1
我有一個WINAPI應用程序,我想通過將文件拖放到我的應用程序的圖標上來啓動它。WM_DROPFILES在將圖標拖放到圖標後未收到
與
hWnd = CreateWindow("app-name",
"",
WS_OVERLAPPEDWINDOW
| WS_CLIPSIBLINGS
| WS_EX_ACCEPTFILES,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
NULL, NULL, hInstance, NULL);
建立的主窗口,並與
static LRESULT CALLBACK
WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
{
DragAcceptFiles(hWnd, TRUE);
// etc (other controls and windows created here)
}
break;
case WM_DROPFILES:
{
char filename[MAX_PATH];
HDROP hDropInfo = (HDROP) wParam;
DragQueryFile(hDropInfo, 0, filename, MAX_PATH);
// etc open file...
}
break;
的問題WndProc的是,當我將它從資源管理器中的文件拖放到我的程序圖標,程序已啓動,但我沒有收到任何WM_DROPFILES消息。如果我將文件類型配置爲「打開」我的程序 - 它已啓動但沒有收到WM_DROPFILES,情況也是如此。
但是,一旦程序初始化,我可以拖放一個文件到它的一些窗口,然後我得到WM_DROPFILES消息,因爲我期望它。
我在做什麼錯?
感謝您的諮詢!
BR阿爾弗雷德
的'WM_DROPFILES'消息就可以被丟棄的文件上運行的應用程序,非不圖標運行應用程序(畢竟,沒有運行的應用程序沒有窗口。)對於後一種情況,您將在命令行上獲取文件名。 –
謝謝,所以我可以使用函數GetCommandLine(); – Alfred
或更高版本我使用WinMain的參數2:lpCmdLine – Alfred